janvier
2009
En dépilant le retard accumulé dans mon aggrégateur de flux lors de Devoxx, je suis tombé sur cet article sur la motivation des développeurs.
L’auteur passe en revue ce qui pourrait améliorer la motivation des développeurs.
Pour résumer, il présente en quatre points avec :
- La compensation (poste et salaire)
- supprimer ou réduire les aspects démotivants (spécifications vagues, deadline intenable, réunionite aigüe, collègues invivables, process ou outils trop lourd, mauvais environnement de travail)
- améliorer les aspects motivants (soutenir l’apprentissage, fournir des challenges et des feedbacks, écouter les désirs des développeurs)
- Enfin l’arme de dernier recours : la peur
Si je suis d’accord avec la plupart des points de cet article, je souhaite en discuter quelques-uns.
Concernant la réunionite aigüe, je confirme que c’est une plaie et je commence à en refuser lorsque je ne juge pas ma présence indispensable. Les pires sont sans doute les grandes réunions inter-équipes. Je suis d’accord sur le fait qu’il peut être intéressant de connaitre ce que font les équipes voisines et quels sont leurs problèmes. Nous pouvons même apporter une éventuelle solutions techniques à ces équipes, mais cet apport de solution doit se faire hors réunions. Ce n’est pas la peine de bloquer plusieurs équipes projets pour une discussion entre un développeur et une des équipes avec le problème. Oui il peut être intéressant pour tous le monde de savoir la solution adoptée, mais l’intégralité du débat n’est pas indispensable, on se contentera des pours et contres et de la décision finale. Un bon indicateur est la proportion de notes prises par rapport aux gribouillis et dessins divers sur les cahiers des participants.
Pour les conditions de travail, j’insisterai sur l’importance du matériel et des outils.
Un des intérêts des projets sur des plateformes Java avec des outils comme Maven, est d’être indépendants de l’IDE ou de l’OS sous-jacent. Enfin pour l’IDE, il faut qu’il soit suffisamment récent et avec des plugins corrects.
Les délais de compilations, redéploiement des applications sur les serveurs font que le développeur perd souvent le focus de la tâche qu’il faisait. Le temps du redéploiement, on commence à répondre à un mail, on lit un blog, on va à la machine à café et discute…. Ensuite, quand on revient à notre application déployée, il arrive qu’on ne sache plus ce que l’on voulait tester….Même si on n’a pas oublié ce que l’on voulait tester, on considère couramment que le changement de tâche prend environ 15 minutes.
J’ai du mal à comprendre l’entêtement des entreprises à ne pas vouloir investir plus dans le matériel pour les développeurs. Quand on voit qu’un poste de développement correct coute moins qu’une semaine de développeur, on se demande pourquoi les entreprises rechignent tant à fournir des machines récentes avec un dual-screen au développeur. De même si le serveur d’application doit être « imposé », je pense que l’OS et l’IDE utilisés devraient pouvoir être libres.
Le dernier point que je voudrais discuter est le support de l’apprentissage. Frank Kelly affirme que les développeurs aiment apprendre. Cette affirmation n’est pas toujours vraie, j’ai vu de nombreux développeurs en poste depuis des années qui s’inquiètent à l’idée de changer de technologie. Le deuxième problème est la capitalisation du savoir. S’il est vrai que le fait d’apprendre une nouvelle technologie peut permettre d’améliorer la productivité des développeurs, du point de vue de l’entreprise, il est nécessaire d’avoir un retour d’investissement sur le temps d’apprentissage. Si on change de technologie à chaque projet, ce qui ne serait pas pour me déplaire, le cout de l’apprentissage de la technologie est alors récurrent sur tous les projets, ce qui n’est plus l’intérêt de l’entreprise.
Enfin dernier point sur le support de l’apprentissage, les sociétés devraient envoyer plus souvent les développeurs dans les conférences. Entre les sessions techniques et les conversations de couloirs, ce sont vraiment d’excellent moyen pour regonfler la soif d’apprendre.
Pour résumer, les points que je considère important pour garder des développeurs motivés :
- reconnaitre leur valeur et payer les en conséquences
- leur fournir les bons outils
- leur donner l’occasion d’apprendre
Et vous, que vous faut-il pour rester motivé?