Développeurs : quelle pile technologique pour se lancer dans le code ?

Dans un monde où les technos évoluent en permanence, il est important d’en maîtriser un certain nombre pour s’adapter aux besoins. En programmation, les langages, les bonnes pratiques, les méthodes ou la structure des bases de données suivent le même chemin.

Par quoi faut-il commencer ? Débuter tout d’abord par définir un environnement technologique. Il s’agit d’une combinaison de langages de programmation, de frameworks et d’outils que les développeurs vont utiliser pour créer un site web ou une application. Et les deux composantes principales de n’importe quelle application web sont ce que voit le client ou l’utilisateur, le « frond-end », avec tous les éléments d’un site affichés à l’écran et avec lesquels on peut interagir depuis un navigateur, et le côté serveur baptisé « back-end » où se trouvent également les applications et les bases de données. Et dernier point, « un framework ou infrastructure logicielle, désigne un ensemble d'outils et de composants à la base d'un logiciel ou d'une application. C'est le framework, encore appelé structure logicielle, canevas, socle d'applications ou cadriciel, qui établit les fondations d'un logiciel ou son squelette applicatif », comme le définit le JDN. Tous les développeurs qui l'utilisent peuvent l'enrichir pour en améliorer l’usage.

Maintenant, si vous venez tout juste d'entrer dans le monde de la programmation, choisir le bon environnement technologique pour votre avenir est peut-être un défi, surtout avec tant de nouveaux frameworks qui apparaissent régulièrement. À un moment donné, vous pourriez même commencer à confondre les langages de programmation avec les composants logiciels et les outils. 

Sans oublier qu’il existe de nombreuses façons de créer un site Web par soi-même, comme avec les solutions Squarespace ou WordPress. Elles sont parfaites lorsque vous voulez faire un site internet marketing assez simple. Même les programmeurs expérimentés en profitent pour gagner du temps grâce aux modèles ou « templates » mis à disposition et qui sont déjà très bien. Cependant, pour les bases de la programmation, vous devez savoir comment créer une application complète ou « Full-Stack » à partir de zéro. 

Un débat courant dans le domaine de la programmation est de savoir si les nouveaux élèves doivent adopter l'approche consistant à maîtriser un langage et un framework ou s'ils doivent acquérir une compréhension plus large d'un grand nombre de ces technologies. Je pense qu’ils devraient regarder brièvement toutes les techniques et solutions pour disposer d’une plus grande perspective des environnements technologiques du marché, mais qu’in fine en connaître parfaitement un est préférable. 

Pourquoi un seul environnement ? Tout d'abord, lors d’entrevues ou au travail, personne n'est en compétition pour savoir combien de langages ou de frameworks vous connaissez. Les concepts de base de la programmation sont les mêmes au sein de chaque langage, et pour cette raison, les entreprises quelque peu intelligentes vous permettront de travailler dans celui de votre choix. Si quelqu'un est capable de réaliser un excellent travail face à tous les défis que représente le développement en langage C, il serait dommageable de lui retirer des points parce qu’il ne connaît pas Javascript, pouvant être une alternative à des langages serveur comme PHP, Java ou Python. 

Maintenant, allons droit au but : je recommande d'apprendre d'abord la stack MERN. MERN signifie Mongo, Express, React, Node. Le seul langage de programmation que vous devez connaître ici est JavaScript. 

Mongo

Mongo est une base de données non relationnelle, qui présente certains inconvénients, mais qui est globalement plus facile à apprendre qu'une base relationnelle classique, de sorte que c’est la meilleure solution pour commencer. Une base de données non relationnelle a moins de liens entre les données, vous pouvez donc commencer à lire et à écrire à partir de votre base de données sans beaucoup de conception, ce qui la rend parfaite pour une première application. Mais comme dans tous les cas, vous devrez apprendre à la fois le relationnel et le non relationnel, il est préférable de commencer par le plus simple des deux. 

Express

Express est une infrastructure d'application (framework), écrite en JavaScript et hébergée dans l'environnement d'exécution Node. Il vous donne une série d'abstractions pour Node et vous simplifie la vie lorsque vous écrivez du code côté serveur (back-end). C'est de loin le framework le plus populaire pour Node, ce qui signifie qu’il existe de multiples documentations en ligne. Donc, toutes les raisons sont bonnes pour l'utiliser.

React

React est le framework JavaScript le plus populaire, aux côtés de Angular et Vue. Lors de votre première formation, vous pouvez essayer de créer une application très simple, tout en utilisant JavaScript, mais vous comprendrez très vite pourquoi pratiquement toutes les applications utilisent un framework. Il donne par exemple une architecture à votre application ou fait le lien entre les données, le contrôleur et la vue. À noter qu’Angular est un framework côté client en open source basé sur TypeScript, un sur-ensemble de JavaScript. Il permet de concevoir des applications Web pour mobile et poste de travail. Vue.js est un troisième concurrent, réel challenger. 

React est un peu plus léger que Angular. Il n'a pas autant de caractéristiques, ce qui signifie que la courbe d'apprentissage n'est pas si raide. React est aussi un peu plus concis, et avec l'introduction récente dans React, aussi bien de "hooks" que de "context", la gestion du flux de données dans l'application est un peu plus simple que dans Angular. Vue est tout aussi léger que React, mais ce dernier existe depuis plus longtemps, ce qui donne un léger avantage aux débutants grâce à une documentation plus complète et une plus grande communauté.

*Attention au fait que l'hypothèse de base ici est que le développeur se sent déjà à l'aise avec les bases de la programmation, et peut construire un site Web statique en CSS, HTML, et JavaScript. 

Node

Node est un environnement open-source permettant de développer des applications multi-plateformes. Basé sur le V8 de Google, le moteur d’exécution JavaScript utilisé dans Chrome, Node traite donc les données en JavaScript. 1ère surprise : avec Node, l’écriture se fait en JavaScript non plus uniquement côté client (front-end), mais également côté serveur (back-end). Node vient ainsi concurrencer les autres langages serveurs que sont par exemple PHP ou Java.

Si Node peut effectivement être utilisé comme serveur sans avoir besoin d’une solution externe, il reste avant tout une plateforme de développement JavaScript permettant de répondre à de nombreux besoins clients/serveurs.

Une simple critique sur le fait que MERN n'est peut-être pas la meilleure pile technologique initiale à apprendre. Elle est si ouverte qu'elle n'a pas beaucoup d'opinions ou de structures. Elle donne au développeur une grande liberté pour choisir comment structurer son application, ce qu'il va utiliser pour le routage et pour les appels de service, etc. Un exemple "d'opinion" ou structure serait « Ruby on Rails ». Il existe de multiples domaines où il n'y a qu'une seule façon "correcte" de faire quelque chose, et c'est parfaitement accepté, surtout pour quelqu'un qui commence sa formation.

Ruby on Rails, également appelé RoR ou Rails, est un framework web open source écrit en Ruby. Il suit le motif de conception modèle-vue-contrôleur (MVC). Il propose une structure qui permet de développer rapidement et intuitivement. Cependant, il impose un grand niveau d'abstraction dans la programmation. Mais en contrepartie, il apporte l'économie d'écrire soi-même la plupart des routines obligatoires d'une application web.

Cependant, vous pouvez toujours superposer un autre framework, qui ajoutera une structure plus " serrée" à votre stack MERN, comme la construction avec Meteor. Ceci configurera le routage, la structure des fichiers et la connexion à votre base de données. De plus, le processus de recherche sur Google et d'apprentissage des différentes options pour structurer votre application est un bon processus d'apprentissage : cela peut prendre plus de temps et vous pouvez prendre quelques décisions sous-optimales, mais cela fait partie du processus de formation.