Dans la première partie de notre série nous avons montré que le travail d'un développeur est bien plus que simplement écrire du code.
Nous avons parlé des premiers jours en software house, de la différence entre les études et les projets réels, et pourquoi l'expérience se gagne surtout par la pratique.
Aujourd'hui nous passons à la question que presque tout Junior se pose. Qu'est-ce que je devrais vraiment apprendre ?
Internet donne toutes les réponses. Certains disent qu'il faut absolument connaître React. D'autres affirment que l'avenir appartient à Rust. D'autres encore prétendent que sans Docker, Kubernetes et cinq certificats il ne sert à rien d'envoyer son CV.
La vérité est beaucoup plus tranquille...
N'apprends pas les frameworks. Apprends à programmer.
Cette phrase peut paraître étrange.
Après tout, les entreprises publient des offres pour React Developer, Java Developer ou PHP Developer.
Pourquoi donc conseillons-nous de ne pas commencer par les frameworks ? — Parce qu'un framework est un outil. Et les outils changent très vite.
Il y a quelques années beaucoup pensaient qu'AngularJS dominerait pendant des décennies. Aujourd'hui la réalité est totalement différente.
Tu apprendras des frameworks toute ta carrière. En revanche, la manière de penser d'un développeur reste avec toi pour toujours.
C'est pourquoi apprends d'abord à :
- résoudre des problèmes,
- analyser les exigences,
- concevoir des solutions,
- lire le code des autres,
- écrire du code lisible.
La technologie n'est qu'un moyen pour atteindre un objectif.
Maîtrise un langage vraiment bien
C'est probablement l'erreur la plus courante chez les débutants.
Aujourd'hui JavaScript. Demain Python. Après-demain Go. La semaine suivante Rust. Au bout d'un mois C#...
Au bout de deux mois il s'avère qu'aucun d'entre eux n'a été maîtrisé correctement. Il vaut bien mieux choisir un langage et l'apprendre en profondeur.
Comprendre :
- comment fonctionne la mémoire,
- ce que sont les références,
- comment gérer les exceptions,
- comment fonctionnent les collections,
- quelle est la différence entre programmation synchrone et asynchrone,
- comment fonctionne le débogage.
Quand tu maîtriseras un langage vraiment bien, tu apprendras les suivants beaucoup plus rapidement.
Apprends à lire la documentation
Peu spectaculaire ? Très.
Extrêmement utile ? Encore plus.
Un bon développeur ne se souvient pas de tout. Un bon développeur sait où trouver une réponse fiable.
La documentation officielle d'un framework ou d'une bibliothèque sera presque toujours une meilleure source que n'importe quel post aléatoire sur un forum datant d'il y a six ans.
C'est précisément la capacité à chercher l'information qui distingue ceux qui progressent de ceux qui copient sans cesse des solutions trouvées sur Internet.
Git n'est pas le bouton « Envoyer »
Si nous devions indiquer une compétence à apprendre le plus tôt possible, ce serait Git. Pas parce que c'est tendance. Parce que pratiquement toutes les équipes de développement l'utilisent.
Git ce n'est pas seulement sauvegarder des changements. C'est une façon de collaborer. Branching. Pull Request. Merge. Résolution de conflits. Historique des modifications.
Sans cela il est difficile d'imaginer travailler dans une équipe professionnelle.
Et encore un conseil. N'envoie jamais un projet dans un fichier ZIP. Vraiment.
SQL - même si tu ne veux pas devenir administrateur de bases de données
Beaucoup de Juniors évitent SQL. C'est une erreur.
La plupart des applications métier utilisent des bases de données. Tu n'as pas besoin de devenir expert en optimisation de requêtes.
Mais tu devrais comprendre :
- ce qu'est une base de données relationnelle,
- comment fonctionnent les relations,
- ce qu'est un index,
- quelle est la différence entre LEFT JOIN et INNER JOIN,
- pourquoi une requête mal écrite peut ralentir toute l'application.
C'est un savoir qui servira dans presque tous les projets.
Linux ne mord pas
Tu n'as pas besoin de renoncer immédiatement à Windows. Mais il vaut la peine d'apprendre les bases du terminal.
La plupart des serveurs tournent sous Linux.
La connaissance des commandes de base :
- ls,
- cd,
- grep,
- cat,
- chmod,
- ssh,
peut te faire gagner énormément de temps.
Au début cela paraît étrange. Après quelques mois il est difficile d'imaginer travailler sans terminal.
Docker - pourquoi tout le monde en parle ?
Il y a quelques années la configuration d'un environnement pouvait prendre toute la journée.
Chacun avait une version différente de PHP. Une base de données différente. D'autres bibliothèques.
Docker a grandement simplifié ce problème. Il permet d'exécuter des applications dans un environnement identique quel que soit l'ordinateur.
Un Junior doit-il devenir tout de suite expert en conteneurisation ? — Non.
Mais il vaut la peine de comprendre ce qu'est un conteneur et pourquoi pratiquement tous les projets modernes utilisent Docker.
L'IA est un excellent mentor. Pas le meilleur développeur.
C'est un sujet qu'on ne peut pas ignorer aujourd'hui.
ChatGPT, GitHub Copilot et d'autres outils d'IA peuvent énormément accélérer l'apprentissage. À une condition. Ne copie pas le code sans le comprendre.
Il est bien mieux de demander :
- Pourquoi cette solution est-elle meilleure ?
- Comment fonctionne cet algorithme ?
- Comment peut-on l'optimiser ?
- Quels sont les inconvénients de cette approche ?
L'IA explique très bien.
Mais elle ne doit pas remplacer la réflexion personnelle.
Le débogueur est ton ami
Au début la plupart des développeurs font ceci : var_dump($variable);
Puis : echo $variable;
Et un peu plus tard : console.log(data);
console.log(data2);
console.log(data3);
console.log(data4);
Chacun de nous a commencé ainsi. Mais il vaut mieux apprendre à utiliser le débogueur le plus tôt possible.
Il permet d'arrêter le programme n'importe où, d'inspecter les valeurs des variables et de comprendre ce qui se passe réellement lors de l'exécution du code.
C'est une des compétences qui accélère fortement le développement.
Quel matériel choisir ?
Beaucoup s'attendent à une liste d'ordinateurs à plusieurs milliers d'euros. Inutile.
Au départ, plus important qu'un processeur dernier cri sont :
- un clavier confortable,
- un disque SSD rapide,
- une quantité de RAM suffisante,
- un environnement de travail stable.
Un éclairage RGB coloré n'accélérera pas la compilation. Trois moniteurs ne feront pas non plus que ton code devienne meilleur.
Un bon matériel doit aider à travailler. Pas seulement être impressionnant sur des photos (même si avouons-le — l'apparence compte aussi ;)
Glossaire des notions
Framework
Ensemble prêt d'outils et de bibliothèques facilitant la création d'applications selon des règles définies.
Git
Système de contrôle de version permettant de suivre les changements dans le code et de collaborer à plusieurs sur un même projet.
Docker
Plateforme permettant d'exécuter des applications dans des conteneurs isolés, garantissant un environnement identique sur différentes machines.
Débogueur
Outil servant à analyser l'exécution d'un programme pas à pas et à rechercher des erreurs.
SQL
Langage utilisé pour communiquer avec des bases de données relationnelles.
Résumé
Un bon développeur ne connaît pas toutes les technologies. Il ne connaît pas tous les frameworks. Il ne se souvient pas de toute la documentation.
Un bon développeur possède des fondations solides.
Il sait analyser les problèmes.
Il sait trouver l'information.
Il comprend les principes de fonctionnement des technologies.
Et c'est précisément pour cela qu'il peut apprendre rapidement de nouveaux outils.
Les frameworks vont changer.
Les langages vont évoluer.
La manière de penser restera la compétence la plus précieuse pendant toute la carrière.
Dans la prochaine partie nous montrerons à quoi ressemble le travail quotidien d'un Senior Developer, pourquoi le Code Review est la meilleure école de programmation, ce qu'est réellement le Clean Code et pourquoi la phrase « chez moi ça marche » provoque un sourire nerveux chez de nombreux développeurs.
