
Matt Briggs, développeur senior, estime que les classifications ne devraient pas se limiter aux « années d’expérience ». Il se propose alors de contextualiser les niveaux d’expérience accordés aux développeurs dans une perspective qui lui est propre.
Un développeur junior, fraîchement sorti de l’école, pense tout savoir. Tout d’un coup la réalité s’impose à lui : il réalise qu’en fait ce qu’il a appris à l’école n’était qu’une (piètre) préparation pour le type de problèmes qu’il allait rencontrer. Peu à peu la théorie pure se dissipe, laissant progressivement émerger le royaume des compromis qui laisse peu de place aux suppositions. Ce changement de contexte devrait être la source d’apprentissage des développeurs junior qui ont alors besoin d’être encadrés, supervisés, éclairés par des personnes qui sont passées par là sous peine de se voir patauger pendant longtemps. « Vous pouvez donc dire que cette période est réservée à l’acquisition de tactiques, de techniques journalières » estime Briggs qui voit dans les développeurs juniors des personnes focalisées sur le code et non sur le développement et qui, d’ailleurs, n’arrivent souvent pas à faire la différence.
Au fil du temps, le junior devient intermédiaire. A ce stade, il commence à repérer les modèles d’échec (souvent issus de sa propre expérience) et réalise qu’il faut bien plus que se focaliser sur des tâches spécifiques pour proposer quelque chose qui marche. Il est arrivé à un niveau où il pourrait regarder un code dont il était fier auparavant et réaliser qu’il n’avait vraiment rien de spécial.
Le développeur intermédiaire est celui qui cherche à savoir COMMENT concevoir les choses de la MEILLEURE FAÇON. Pour se faire, il se fie à son expérience, il se documente, ils discute avec d’autres développeurs. Cette étape consiste à apprendre une théorie sur la conception d’un logiciel, au lieu d’apprendre une théorie sur la conception du code (qui est apprise à l’école). Un développeur junior vous fournira une pile d’algorithmes qui fonctionnent plus ou moins, tandis qu’un développeur intermédiaire vous donnera des Design Patterns et des Domain Driven Design. Aussi, si en général les développeurs intermédiaires sont plus habilités à concevoir des systèmes qui fonctionnent plus longtemps que ceux des développeurs juniors, il faut quand même se préparer à des conséquences négatives. « La triste réalité c’est que la grande majorité des développeurs seniors et des chefs d’équipe sont en fait des développeurs intermédiaires. La plupart ne le réalise pas et, bien qu’ils nourrissent les meilleures intentions du monde, ils n’ont tout simplement jamais travaillé avec quelqu’un qui est à un plus haut niveau » estime Briggs. Pour lui, les développeurs intermédiaires sont assez conscients de leur rôle au sein de l’entreprise ainsi que de la valeur qu’ils apportent. Un bon développeur intermédiaire comprend comment utiliser un le code pour résoudre un problème est un moyen pour parvenir à une fin, et non la fin elle-même. Cependant, ils sont toujours enfermés dans leur idée de quête de la MEILLEURE FAÇON de développer des logiciels.
Puis vient le développeur senior, un développeur qui prend conscience de ses propres échecs. Il évalue les probabilités de succès et d’échec lorsqu’il fait face à un problème avec une honnêteté intellectuelle. Il s’éloigne de la complexité, qui est préférée par le développeur intermédiaire, pour rechercher le simple. Il arrête de ranger les développeurs sous des catégories en se basant sur leur niveau de connaissance, mais comprend plutôt qu’il y a un spectre de forces et de limites. D’ailleurs il a plus conscience de ses propres forces et limites que quiconque.
Un développeur senior pense en termes de « contexte » lorsqu’il veut appliquer une théorie. Il comprend qu’il n’y a pas de MEILLEURE FAÇON de développer des logiciels, mais que la seule façon de faire de bons logiciels est d’adapter la théorie afin qu’elle réponde aux besoins du client, de l’équipe, de l’entreprise.
Un développeur senior comprendra que son travail est de fournir des solutions a des problèmes, pas d’écrire du code. A cause de cela, un développeur senior pensera toujours à ce qu’il fait en termes de valeur ajoutée à l’entreprise et aux clients et non en termes d’efforts qu’il fournira.
Un développeur senior comprendra que vous ne pouvez pas tout faire de vous-même et que son rôle principal est d’aider l’équipe à être meilleure de la même façon que chacun des membres de l’équipe cherche à s’améliorer.
Briggs estime que « si vous n’avez pas au moins un développeur senior à la tête d’une équipe, votre projet est voué à l’échec. Une équipe de bons intermédiaires vous mènera loin, mais les jours des logiciels que vous avez développés sont nombreux, et le résultat final sera soit fermer boutique soit des réécritures onéreuses / à risque. Un développeur senior est la SEULE personne pleinement qualifiée pour choisir la technologique et les plateformes, alors ne pas en avoir un depuis le PREMIER JOUR vous sera dommageable ».
Briggs estime que les jeunes fraîchement diplômés sont des atouts pour l’entreprise au même titre que ceux qui ont acquis 15 à 20 ans d’expérience sur le terrain. « Nous devons arrêter d’embaucher en nous basant sur les stéréotypes » conseille-t-il aux entreprises.
Source : blog Matt Briggs
Et vous ?

