Le rôle de lead developer
J’ai l’impression que le poste de lead developer (ou encore tech lead) n’a pas réellement d’équivalence en français puisque, comme pour de nombreux termes dans notre industrie en fait, nous utilisons exclusivement une version anglo-saxonne du terme pour nous exprimer. Avec l’émergence de notre domaine ces dernières années, ce poste est semble-t-il l’un des plus prisés par les développeurs. Pourtant, lorsque je suis amené à discuter avec des développeurs, des recruteurs, des chefs d’entreprise voir même des lead dev, je constate que chacun à sa propre définition du rôle associé à ce titre.
Derrière ce libellé, parfois un titre honorifique (dans le sens où rien ne distingue les missions de ce dernier d’un autre développeur) donné à un ancien développeur présent sur un projet (ou dans l’entreprise) de longue date. On peut également retrouver derrière ce poste des développeurs expérimentés ou ayant une expertise dans une technologie ou un domaine spécifique. Il est alors intéressant de noter que l’on peut alors être lead dev à plusieurs niveaux. Une personne ayant des compétences avancées en PHP peut très bien être tech lead PHP par exemple. Mais si cette même personne connaît très bien un projet particulier, elle peut alors être lead au niveau du projet.
Partant de ce constat, le tech lead est avant tout un développeur ayant une expérience et une expertise significative. Son rôle au sein d’un projet et d’une entreprise doit aller au-delà du code qu’il produit. Il a un rôle de coaching vis-à-vis de l’équipe dans laquelle il travaille ou intervient. Il doit pouvoir la faire évoluer, monter en compétence et tirer le projet (ou le domaine d’expertise qu’il exerce) vers le haut. Il est l’un des garants de la qualité (et pas l’unique ! Cela ne dispense pas le reste de l’équipe d’y faire attention, bien au contraire).
Dans les missions qui seraient à réaliser par le lead dev, la principale est d’assurer la cohérence des développements réalisés au sein de l’équipe dans laquelle il travaille. Pour cela, il doit avoir une vision globale du travail à réaliser et il doit être capable d’évaluer les impacts sur l’existant. Même si ce n’est pas lui qui effectue l’implémentation, il doit veiller à industrialiser les processus de développement, s’assurer de la qualité du code en mettant en place des procédures pour garantir cette dernière. Il est également important qu’il se tienne à jour de l’état de l’art de son métier afin de pouvoir conserver un esprit critique en étant capable de prendre du recul sur les décisions qui sont prises.
Je qualifierai le lead dev d’assistant du CTO. Personnellement, j’aime bien utiliser l’image du chef de l’état (le CTO) et de ces ministres (les lead developers). Donc en plus de ces compétences techniques, il doit être capable de communiquer de manière claire, défendre et expliquer des choix réalisés. Il doit avoir une vision critique de ce qui est fait sur son domaine d’expertise pour faire évoluer les choses dans le bon sens, tout en sachant prendre du recul sur le travail réalisé.
On lui prête parfois des missions managériales. Mais à mon sens, ces missions ne font pas partie du poste. C’est au CTO, voir à des managers selon la taille de la société de faire ce travail. Le lead dev doit se concentrer sur la partie technique. Il est par contre à mon avis indispensable qu’il participe aux entretiens de recrutement des personnes qui intégreront l’équipe dans laquelle il travaille. D’ailleurs, dans l’idéal, toute l’équipe de développement devrait pouvoir discuter avec un candidat qui va intégrer l’équipe.
Voila en ce qui me concerne le rôle d’un lead dev.