|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- title: Qualité vs. productivité
- url: https://www.miximum.fr/blog/qualite-productivite/
- hash_url: 3162dca46b9057f5366599de4b83333d
-
- <p class="lead" itemprop="headline">
- Quelques questionnements sur la relation entre ancienneté, qualité et productivité.
- </p>
- <div itemprop="articleBody">
- <p>Il y a quelques temps, j'ai posté sur Twitter une boutade sous forme de
- diagramme.</p>
- <figure>
- <img src="https://i.miximum.fr/i/2018/04/HLI0T1AEI9.png" alt="diagrammes représentant l'évolution de la répartition de mon temps de travail avec les années."/>
- <figcaption>
- Plus les années passent, moins je code.
- </figcaption>
- </figure>
-
- <p>À la réflexion, la situation, présentée comme une blague, n'est pourtant pas si
- éloignée de la réalité.</p>
- <p>J'observe des évolutions dans la manière dont je travaille.</p>
- <p>J'ai commencé à coder vers le lycée. À cette époque, et pendant plusieurs
- années, je me lançais dans l'écriture de code avant d'avoir réfléchi. À vrai
- dire, l'écriture me servait de processus de réflexion, et je ne savais pas
- vraiment ou je voulais en venir tant que je n'avais pas terminé d'écrire ma
- fonction.</p>
- <p>Quand je rencontrais un bug, ou que mon code ne fonctionnait pas correctement,
- j'avais tendance à bidouiller « jusqu'à ce que ça marche », sans avoir de vraie
- compréhension du problème.</p>
- <p>« Tiens, cette partie du programme ne fonctionne pas. Et si je modifie ça ? Et
- là ? Et comme ça ? »</p>
- <p>Inutile de dire que d'un point de vue technique, le résultat obtenu n'était pas
- terrible.</p>
- <p>Avec le temps, j'ai commencé à coder <em>moins vite</em> ; à chercher à mieux
- comprendre la problématique avant de la résoudre.</p>
- <p>La pratique déterminante a été le passage au développement piloté par les tests
- (TDD). Écrire les tests d'une fonction avant d'écrire la fonction nécessite de
- sacrément bien réfléchir à <em>ce que doit faire ou ne pas faire</em> ladite fonction.</p>
- <p>Avec une meilleure compréhension de ce qu'est un code fiable et maintenable
- dans le temps, il était également inévitable de passer plus de temps à
- refactoriser du code existant.</p>
- <p>À ce moment là, je me suis aperçu que mon code était moins sujet aux bugs et
- comportements inattendus.</p>
- <p>J'ai remarqué que cette évolution a continué jusqu'à aujourd'hui. Je ne suis
- pas précisément en fin de carrière, mais pas sans expérience non plus.</p>
- <p>Maintenant, je suis tellement délicat avec mon code que je me fais l'impression
- d'être un vieillard tremblotant en train de choisir une tasse dans un magasin
- de porcelaine.</p>
- <p>La moindre ligne nécessite un temps infini.</p>
- <p>Il m'arrive parfois de passer une heure juste pour choisir un nom de variable
- approprié.</p>
- <p>Je pense et repense à tous les cas de figures possibles, les cas d'erreurs, les
- logs, les exceptions, la performance, l'accessibilité, les conséquences à long
- terme, les impacts métiers, etc.</p>
- <p>J'ai souvent entendu dire qu'il était rentable d'embaucher des devs seniors
- parce qu'ils pouvaient avoir 10x la productivité des juniors. J'y croyais. Mais
- chez moi, ça n'en prends pas le chemin. À vrai dire, je me sens 10x moins
- productifs aujourd'hui qu'avant.</p>
- <p>J'ai parfois une légère tendance à succomber à la suringénieurisation.</p>
- <p><em>Je ne dis pas que c'est une bonne chose.</em></p>
- <p>Si je fais le point, je trouve que mon travail d'aujourd'hui est <em>vraiment</em>
- beaucoup plus robuste qu'il y a dix ans. Le code sans bug n'existe pas, mais je
- suis beaucoup moins souvent confronté à des comportements indésirables ou
- inattendus qu'auparavant. Étonnamment, une fois le code écrit, je ne
- refactorise plus tant que ça (en tout cas, moins qu'à une époque).</p>
- <p>En contrepartie, je suis effaré par mon manque de productivité. Quand je
- travaille pour des clients, je m'étonne parfois de ne pas être pris pour un
- arnaqueur, tant il m'arrive de passer une journée à corriger un seul bug, à
- réaliser une seule petite fonctionnalité.</p>
- <p>Je suis bien convaincu que cette façon de faire a une certaine valeur, mais
- <em>j'ai l'impression d'être allé trop loin.</em> Le déséquilibre qualité /
- productivité est trop important (le terme <em>qualité</em> étant à comprendre comme un
- terme technique, je ne m'envoie pas des fleurs).</p>
- <p>Après tout, si d'un point de vue <em>purement technique</em>, il est impossible de
- faire de la sur-qualité, un projet, c'est aussi des contraintes temporelles,
- stratégiques, commerciales, économiques, etc.</p>
- <p>Faut-il revenir à une écriture de code un peu moins <em>pesante</em>, quitte à
- refactoriser plus et plus souvent ?</p>
- <p>Il est assez facile de reconnaître sa progression, mais plus difficile de
- déterminer quelle est la prochaine étape. Comment ma façon de travailler
- va-t-elle évoluer ? Qu'est-ce qui me ferait passer à l'étape d'après ? Je me
- pose sincèrement la question. Comment ça se passe chez vous ?</p>
- </div>
|