Article original : The 2020 Web Developer Roadmap – A Visual Guide to Becoming a Front End, Back End, or DevOps Developer
Il existe de nombreuses façons d'acquérir les compétences nécessaires pour devenir développeur.
Il existe des cursus linéaires qui vous enseignent un peu de tout - comme le cursus de développement full stack de freeCodeCamp.
Et puis il y a des listes massives de compétences - et parfois des listes de ressources - que vous pouvez utiliser pour "choisir votre propre aventure" tout au long du processus d'apprentissage.
L'une des meilleures listes de compétences est la Feuille de route du développeur de Kamran Ahmed, qu'il met régulièrement à jour.
Ce n'est pas une liste ordinaire de ressources. Kamran a soigneusement cartographié toutes les compétences qu'il estime essentielles pour percer dans différents domaines du développement.
J'ai déjà écrit sur sa feuille de route. Et pour célébrer le fait que nous soyons tous à mi-chemin de l'année 2020, je vais partager ici l'intégralité de sa feuille de route - toutes les trois.
C'est exact - il a des listes d'outils et de ressources nécessaires pour les parcours suivants :
- Développement web Front End
- Développement web Back End
- DevOps (également connu sous le nom de "fiabilité des sites" - c'est une sorte d'évolution de l'ancien rôle d'administrateur système)

Les compétences dont tous les développeurs ont besoin, quelle que soit leur spécialisation
En plus de ces parcours, Kamran recommande également à toute personne souhaitant travailler en tant que développeur d'apprendre les compétences suivantes :
Git - Contrôle de version
Git est un système de contrôle de version puissant qui, en 2020, est utilisé presque universellement. Si vous ne le connaissez pas - oui, il est lié à GitHub et GitLab, et vous pouvez apprendre à utiliser ces outils également.
Utilisation de base du terminal - La ligne de commande Bash, SSH et autres compétences
Cela peut être le terminal sur un Mac, une invite de commande DOS Windows, ou Bash/ZSH. Notez que, quel que soit le système d'exploitation que vous utilisez, vous devriez probablement apprendre Linux. Même si vous ne l'utilisez pas pour votre environnement de bureau/ordinateur portable, vous l'utiliserez presque certainement pour les serveurs.
Structures de données et algorithmes
Le cursus freeCodeCamp couvre ces sujets en profondeur. Vous voudrez probablement apprendre ces concepts en résolvant de nombreux problèmes d'algorithmes sur freeCodeCamp, CodeWars, Project Euler, ou un autre site d'entraînement. Je recommande personnellement de le faire en JavaScript ou en Python, mais si vous êtes prêt à relever un défi et que vous avez beaucoup de temps devant vous, le faire en C ne ferait pas de mal.
Une compréhension de la manière dont le web fonctionne : HTTPS et les API
Il y a beaucoup d'autres concepts que vous pouvez apprendre. Je recommande de suivre un bon cours d'introduction en informatique pour commencer. Voici toutes les conférences du cours CS50 de Harvard sans publicité sur la chaîne YouTube de freeCodeCamp.
Design Patterns, YAGNI, KISS, SOLID
Je ne pense pas que les débutants aient besoin d'une compréhension approfondie de ces concepts, mais cela ne ferait pas de mal.
Les Design Patterns sont essentiellement des méthodes éprouvées pour implémenter différents types de systèmes logiciels et de structures de codage. Vous pouvez les apprendre progressivement au fur et à mesure de votre progression.
En ce qui concerne l'alphabet soup, voici ce que ces acronymes signifient :
- YAGNI - Ya Ain't Gonna Need It - La philosophie selon laquelle la plupart du code que vous pensez devoir écrire et des fonctionnalités que vous devrez implémenter s'avéreront en réalité inutiles
- KISS - Keep it simple, silly! - Plus vous gardez vos projets simples, plus votre vie sera facile en matière de maintenance.
- SOLID - Il s'agit d'un moyen mnémotechnique pour "Responsabilité unique, Ouvert-fermé, Substitution de Liskov, Ségrégation des interfaces, Inversion des dépendances". Oui - ce n'est pas du niveau débutant, mais regardez cela si vous êtes curieux.
Feuille de route du développement web Front End
La première feuille de route de Kamran se concentre sur le développement web Front End.
Voici sa feuille de route Front End dans son intégralité :

Mes réflexions sur la feuille de route Front End
Il s'agit d'une liste solide de compétences fondamentales.
En tant que développeur Front End, vous travaillerez définitivement avec HTML, CSS et JavaScript - beaucoup de JavaScript.
Les seules choses que je pense inutiles ici :
- Les préprocesseurs CSS. Ceux-ci étaient nécessaires, mais CSS lui-même a ajouté de nombreuses fonctionnalités qui rendaient ces préprocesseurs si utiles. freeCodeCamp enseigne actuellement Sass, mais nous sommes en train de le supprimer également.
- Architecture CSS : Je ne pense pas que ces compétences soient nécessaires sauf si la conception de systèmes CSS fait partie intégrante de votre travail quotidien.
- Un peu de chipotage : TypeScript est un moyen prometteur de réduire les bugs et de coder avec confiance. Nous ajoutons cela à la version 7.0 du cursus principal de freeCodeCamp. Je pense que cela devrait être encore plus mis en avant sur la feuille de route, mais il y est.
- Web Assembly est, à mon avis, un plus. Les développeurs commencent à faire des choses passionnantes avec cela, mais il faudra un certain temps avant que cette technologie ne devienne vraiment omniprésente.
Feuille de route du développement web Back End
La deuxième feuille de route de Kamran se concentre sur le développement web Back End. Si vous combinez cela avec sa feuille de route Front End, vous obtenez un bon chemin pour devenir un développeur full stack.
Voici sa feuille de route Back End dans son intégralité :

Mes réflexions sur la feuille de route Back End
Je suis d'accord avec tout ce qui est ici.
Oui, vous devriez apprendre SQL et les bases de données relationnelles
Je veux fortement approuver sa recommandation d'apprendre une base de données relationnelle.
Oui - des bases de données comme MongoDB et Neo4j peuvent faire beaucoup pour vous, et sont mieux adaptées à certains types d'applications que les bases de données relationnelles.
Mais vous devriez toujours apprendre SQL et comprendre comment fonctionnent les bases de données relationnelles.
Je recommande PostgreSQL (que nous utilisons pour plusieurs projets chez freeCodeCamp), mais les autres bases de données relationnelles sont assez similaires.
Voici le cours gratuit de 4 heures sur SQL de freeCodeCamp, qui vous enseignera les bases.
Et si vous voulez approfondir, voici notre cours gratuit de 8 heures sur la conception de bases de données relationnelles.
Comment choisir le bon langage de programmation pour le développement Back End
Je veux également ajouter une note sur le choix d'un langage.
Même s'il existe de nombreux langages - et que vous pouvez essentiellement tout faire avec n'importe quel langage - je recommande fortement d'apprendre soit Node.js (JavaScript) soit Python comme premier langage.
Voici un guide détaillé sur quel langage de programmation vous devriez apprendre en premier.
Feuille de route DevOps
Enfin, Kamran couvre comment devenir un ingénieur DevOps, ou Site Reliability Engineer. Cela implique de travailler avec de nombreux services cloud et de superviser l'infrastructure.
Voici sa feuille de route DevOps dans son intégralité :

Mes réflexions sur la feuille de route DevOps
Linux, Linux, Linux.
De plus, je recommanderais de travailler d'abord en tant que développeur, puis de vous spécialiser progressivement dans DevOps.
Voici une rapide introduction de 30 minutes au domaine du DevOps qui devrait vous donner une meilleure idée si DevOps est quelque chose qui vous intéresse.
C'est tout. Qu'en pensez-vous ? Kamran a-t-il oublié des compétences ou des technologies essentielles ? Laissez un commentaire et discutons-en.
De plus, si vous avez des ressources qui ont vraiment bien fonctionné pour vous dans l'apprentissage de ces compétences, partagez-les ci-dessous en tant que commentaire.
Bon codage !
– Quincy