| Accueil >> Varia >> Génie logiciel

La panne de courant quotidienne

Imaginez une usine de coupage de bois, pleine d'ouvriers qui coupent du bois à longueur de journée avec des scies électriques. Imaginez maintenant que tous ces gens soient complètement débordés, parce qu'il fallait livrer ces planches avant-hier, que demain matin un autre client arrive avec un autre tas de bois à couper, et que le patron et les contremaîtres sillonnent constamment l'usine pour harceler les ouvriers: «Dépêchez-vous!», «Fini les vacances!», «La soupe est chaude maintenant!», «Plus vite!».

Si vous étiez un consultant externe invité par le patron de cette compagnie pour venir lui suggérer des façons d'améliorer la productivité, vous lui diriez probablement:

«Coupez le courant quinze minutes par jour, et aiguisez vos scies.»

Évident, vous dites? Non. Plusieurs compagnies de développement de logiciel sont un peu comme ces scieries imaginaires. Leurs programmeurs sont constamment en train de «pitonner» sur leur ordinateurs pour essayer de moins manquer l'échéance passée depuis longtemps. En même temps, les technologies informatiques changent très rapidement. Et finalement, on semble penser que la formation continue des employés est un luxe, un gaspillage de temps, et même la menace d'un véritable «Massacre à la tronçonneuse» sur les profits.

Vous voulez parler en termes de profits et d'argent? Soit. Regardons ce qui se fait réellement tronçonner par un manque de formation continue:

Doigts coupés. En informatique, la technologie change. La question n'est pas de savoir si on va s'en servir, mais bien quand, et dans quelles conditions. La plupart des compagnies attendent, hésitent et tergiversent avant de se précipiter sur une nouvelle technologie (pressés par les échéances, bien sûr!). J'ai vu de mes yeux deux compagnies lancer ainsi sans préparation leurs programmeurs dans le C++ et la programmation orientée-objets, et croyez-moi, il y avait beaucoup de doigts coupés par terre.

Échéances guillotinées. La loi de la Bibite dit: «La vitesse de développement au début du cycle est inversement proportionnelle à celle de la fin.» Si on ne prend pas le temps de bien former ses programmeurs, on aura tendance à se précipiter pour coder, avec les conséquences que l'on connaît.

Qualité déchiquetée. La «pourriture logicielle» survient lorsque des amas de mauvais code (variables mal nommées, peu de commentaires, algorithmie incorrecte, etc.) sont empilés sur une mauvaise architecture de système (dépendences circulaires, mauvaise répartition des responsabilités, manque de flexibilité, etc.). Un logiciel pourri devient de plus en plus difficile à faire fonctionner, parce que le moindre changement exige d'abord un effort surhumain de compréhension (car il faut comprendre le système pour pouvoir le réparer ou le modifier), mais ensuite un autre effort surhumain pour réparer le fourmillement de «bibites» causés par ce petit changement, ce qui redémarre la spirale vicieuse des changements avec une accélération exponentielle.

Loyauté lacérée. Un programmeur qui est privé du moyen de s'améliorer lui-même se voit forcé à mal travailler, à ne plus pouvoir trouver sa fierté dans son travail. Les programmeurs qui ne reçoivent pas de formation ont tendance à envoyer des CV.

Poches trouées. En fin de compte, les profits viennent de la poche des clients.

On a peur de quoi, finalement? D'un misérable petit quinze minutes de formation à tous les matins? Pourtant, cet investissement se fait dans des circonstances de rentabilité maximum:

Niveau d'attention élevé. Le matin, les employés sont frais et dispos.

Quasi-certitude de réutilisation dans les jours qui suivent. Pédagogiquement, il faut appliquer ce qu'on a appris le plus vite possible pour bien assimiler la matière.

Peu ou pas de pertes logistiques. La fréquence quotidienne et l'heure fixe du rendez-vous éliminent le besoin de rejoindre les gens, de leur dire de se rassembler, etc.

Chaque quinze minutes se paie la journée même. Statistiquement, les «bibites» sont ce qui coûte le plus cher en informatique. À chaque jour, il suffit que la formation évite une erreur à un seul employé de la compagnie, pour que ses quinze minutes et ceux de tous les autres employés soient payés séance tenante.

Les intérêts sont composés quotidiennement. Ce que vous apprenez aujourd'hui améliore votre productivité aujourd'hui, mais aussi demain. Et demain, vous apprennez encore quelque chose qui améliore votre travail, ce qui vient s'ajouter à l'efficacité héritée d'hier. Et demain, ça recommence!

Cela forme la «culture corporative». Dans un monde informatique qui bouge de plus en plus vite, la seule véritable défense d'une compagnie, c'est «le caractère et l'intelligence de ses employés». Et l'habitude «d'aiguiser sa scie quotidiennement» est un des traits de caractère les plus importants de tout programmeur.

Et tandis qu'on y est... Laisser nos ordinateurs de côté quelques minutes par jour sert aussi à garder à l'endroit notre échelle de valeurs: «C'est en tant que personne que l'homme est sujet du travail. C'est en tant que personne qu'il travaille, qu'il accomplit diverses actions appartenant au processus du travail; et ces actions [...] doivent toutes servir à la réalisation de son humanité. [...] En fin de compte, le but du travail [...] reste toujours l'homme lui-même.» (Jean-Paul II, Laborem Exercens)

Je me dois de terminer avec un texte cité dans «Code Complete» de Steve McConnell, le livre qui a donné une impulsion définitive à ma carrière, et qui demeure une des meilleures «limes à scie» pour tout programmeur:

«Mon message pour tout programmeur sérieux est le suivant: prenez une partie de votre journée de travail pour examiner et raffiner vos propres méthodes. Même si les programmeurs sont toujours en train de se démener pour rattraper une quelconque échéance passée ou future, l'abstraction méthodologique est un sage investissement à long terme.»

© Stefan Jetchick, 2 Septembre 1997.

Toute ressemblance avec mon patron actuel est purement fictive ;-)

| Accueil >> Varia >> Génie logiciel