La plus grosse et la plus grossière a été certainement de prendre pour argent comptant les dires du développeur du site de e-commerce.

Depuis mon arrivée dans la société, ce dernier me répétait en effet que son code était bien plus propre que celui du site d’administration et qu’en conséquence les problèmes ne pouvaient provenir que de ce dernier.

Le site de e-commerce étant basé sur Symfony et le site d’administration reposant sur une solution conçue en interne dont j’avais lu le code déjà à de nombreuses reprises, j’ai été naturellement enclin à le croire et je n’ai pas pris la peine de mener un audit sérieux du code du site de e-commerce.

Du coup, lorsque j’ai commencé mon audit, au lieu de partir du client pour ensuite remonter jusqu’au serveur d’administration via le site de e-commerce, j’ai court-circuité tout un pan de la chaîne et j’ai tout d’abord concentré mes efforts exclusivement sur le site d’administration.

En clair, j’ai laissé mon objectivité au placard et je me suis laissé guidé par mes sentiments, ce qui est comme je l’ai appris à mes dépens une grave erreur.

Et j’ai fait de même techniquement parlant, car en plus d’avoir commencé mon audit au niveau du site d’administration, je me suis concentré tout d’abord sur sa base de données, alors que je n’avais aucune donnée tangible me permettant de l’incriminer.

Je n’ai alors pas cédé aux sirènes de l’un de mes développeurs, mais à celle de ma veille technologique.

En effet, il est aujourd’hui de notoriété publique que le client et la base de données sont les principaux goulets d’étranglement en terme de performance.

Et à force de le lire et l’entendre, j’ai fini par prendre cela pour argent comptant en abandonnant tout esprit critique, ce qui rejoint en parti la réflexion de ce billet relatif à l'humilité que doit afficher tout développeur.

Sauf que comme je l’ai constaté, le client et la base de données ne sont pas toujours systématiquement les coupables et en conséquence, avant de se concentrer sur ses deux suspects désignés, il est indispensable d’innocenter tous les autres afin de ne pas perdre inutilement du temps.

Ainsi, si j’avais été logique et méthodique en éliminant un à un les suspects potentiels à l’aide des données en ma possession, je serais très certainement parvenu à une solution beaucoup plus rapidement plutôt qu’en papillonnant parmi les différents composants de notre solution sans réelle stratégie, au grès de mes sentiments et de mon intuition.

À l’avenir, je tâcherais donc de conserver mon objectivité et mon esprit critique et je me baserais exclusivement sur les informations remontées par les machines plutôt que sur ce que me dictent mes sentiments ou la mode pour mener mes investigations.

Heureusement, il est ressorti de ce relatif gâchis des choses intéressantes.

En effet, nous avons effectué durant ces trois jours des modifications qui ont eu un impact significatif sur les performances de notre solution et surtout nous avons acquis une connaissance plus fine de nos faiblesses qui nous a depuis permis d’effectuer des optimisations ciblées à tous les niveaux.

Ainsi, techniquement, dans les jours qui ont suivi, nous avons continué à travailler afin de réduire le nombre de requêtes SOAP entre le site de e-commerce et le site d’administration et nous avons également fiabilisé la gestion optimisée du cache que nous avions mis en place précipitamment au cours de l’audit.

Et humainement, le développeur chargé du site de e-commerce a également pris conscience que son travail n’était peut-être pas d’aussi bonne qualité que ce qu’il pensait et nous ne l’entendons plus guère pérorer dans notre bureau à ce sujet, même si je ne suis pas persuadé qu’il ait vraiment compris la leçon d’humilité sous-jacente.

Je remercie au passage les développeurs du site d’administration qui l’ont chambré, mais sans agressivité et sans pousser le bouchon trop loin, ce qui n’aurait rien apporté même si cela aurait été de bonne guerre.

Et moi, j’en ai appris plus sur moi même et j’ai bien l’intention de ne pas reproduire les mêmes erreurs à l’avenir !