Tu viens de démarrer (ou vas bientôt démarrer) dans la vie active , tu sors d’une école d’ingénieur ou de l’université et tu as choisi d’être développeur (souvent java d’ailleurs). C’est cool, tu as choisi un beau métier pas forcément encore très reconnu et estimé à sa juste valeur en France, mais ça c’est une autre histoire.
Toujours est-il que je te vois très souvent, que ce soit en face à face lors d’un entretien ou directement sur un projet et si je peux me permettre j’aimerais te donner quelques conseils parce que … tu me déprimes.
- J2ee tu n’écriras plus sur ton CV : pour ton info ça s’écrit JEE (voire comme me le fait remarquer sami, Java EE). Et arrête de mettre spring, struts dans cette norme, mais jette un œil ici une fois pour toutes. Parfois tu n’écris pas j2ee mais java/j2ee (java-ji-deux-e) comme s’il s’agissait d’un seul mot. Tu as certainement du t’inspirer de CVs qu’on t’a recommandés à l’école ou d’une version retravaillée par une ssii. Et au fait, depuis quand struts et spring font-ils partie de la norme Java EE.
- Le langage et le Sdk tu connaîtras : c’est quand même le minimum lorsqu’on programme dans un langage que de connaitre ses possibilités : et pourtant combien de fois je me surprends en train de t’expliquer l’intérêt d’utiliser telle collection plutôt que telle autre. Ça veut aussi dire que tu suivras les évolutions du jdk : on en est à la version 7 et combien de nouvelles fonctionnalités peux-tu me citer ?
- Au Jug tu iras : il y en a certainement un près de chez toi. Les cast codeurs tu écouteras (http://javaposse.com/ également si tu es anglophone). Les flux rss tu liras, et les bonnes personnes tu ‘followeras’ sur twitter. Si tu es plutôt du matin ce sera http://thecodersbreakfast.net/ ou du soir http://blog.paumard.org/ : bref, intéresse toi un minimum.
- A vie tu apprendras : c’est vrai pour n’importe quel programmeur mais tu devras le faire encore plus que tes collègues dans d’autres langages. Tu as choisi un écosystème de cinglé ou il ne se passe pas un jour sans qu’un nouveau framework/langage/concept ne sorte et il te faudra discernement et courage pour suivre le rythme car le tempo est soutenu.
- Les bases de l’informatique tu “réviseras” : j’écris tu réviseras mais c’est uniquement pour ne pas faire répétition avec le conseil précédent. C’est vrai que l’industrie du software n’est pas hyper poussée en France et qu’il y a de fortes chances pour que tu travailles sur une application de gestion (avec une base de données , des serveurs/services web …) ce n’est pas une raison pour ignorer tout ce qui est en dessous, la JVM et la façon dont sont utilisées les ressources que tu sollicites sans t’en rendre compte.
- Performance tu penseras : attention je n’ai pas dit “tu optimiseras” (chaque chose en son temps) : mais déjà essaye de penser que quand ton appli sera livrée, tu risques d’avoir légèrement plus de données à gérer, plus d’utilisateurs, plus de pression sur les ressources, plus de concurrence d’accès … : si tu en as la possibilité, prends une configuration pas trop puissante pour exécuter ton code, tu vas t’apercevoir des lenteurs plus tôt dans ton projet; utilise un jeu de données représentatif tant au niveau des valeurs qu’au niveau du volume. Pour coder en revanche, débrouille toi pour avoir la config la plus puissante : Quand je vois le temps perdu par jour et par développeur rien qu’à attendre que son build se termine ou que son serveur d’appli veuille bien démarrer …
- Le sql tu maîtriseras : tu
penses que tuconnais hibernate/jpa et tu penses que ce vieux langage (qui a ton age !?) qu’est le sql ne vaut pas la peine que tu t’y attardes parce que c’est “has been” : d’ailleurs avoue que tu n’as jamais pensé à regarder quelles étaient les requêtes générées par ta couche de persistance préférée. Et si je te demande pourquoi ton code rame ne me dis pas “je ne sais pas, mais, le dba regarde” ou “c’est hibernate” : il faut te rendre à l’évidence : le problème est avant tout entre la chaise et le clavier. - D’ailleurs ton clavier par coeur tu connaîtras. Fais d’une pierre deux coups et profites-en pour en faire de même avec ton ide/éditeur : quand je te mets devant un écran pour observer comment tu codes, (en ayant bien entendu pris soin de te laisser le choix des armes – eclipse, netbeans, intellij, voire emacs ou vi), je ne te sens pas hyper à l’aise : tu regardes ton clavier, cherches tes touches, et passes un temps fou sur cette satanée souris pour fouiller dans les menus, lancer des commandes etc : tu es freiné par des considérations d’ordre purement techniques, des frottements qui t’empêchent de coder plus vite : débranche ton mulot et force toi à utiliser le clavier en le regardant un minimum voire en le cachant, apprends les raccourcis clavier : tu vas découvrir à quel point tu étais handicapé …
- Pour terminer, outille toi avec tout ce qui pourras améliorer la qualité et la rapidité de tes développements : analyse de code, profiler, couverture de code, tests unitaires, jrebel …
Tu as choisi un langage dont la difficulté ne réside ni dans le langage en lui même ni dans le sdk déjà bien fourni, mais dans la recherche et le choix des bons composants/framework et dans leur configuration / paramétrage : tu as passé beaucoup de temps à essayer de faire fonctionner ton assemblage de composants et tu as oublié de creuser les sujets qui te donneront des bases solides pour la suite de ta carrière.
Bref tu auras compris, si tu veux être un bon développeur et ne pas être obligé de passer chef de projet ou côté métier par la force des choses plus que par choix, donne toi les moyens et prends tout de suite les bons réflexes, reprends les bases et ne brûle pas les étapes, reste humble (il y en toujours qui en savent plus que toi) … et code !