30 Mar 2016

Challenge de code : améliorez votre processus de développement logiciel !

Au boulot, nous aimons améliorer notre culture Software Craftsmanship en organisant des Dojos ou des Katas, mais aussi, de temps en temps, des challenges de code.

Donc, le mois dernier, pendant deux heures, environ trente développeurs ont tenté de résoudre le problème “Extreme Carpaccio” en faisant du pair-programming.

J’ai décidé de demande à Gilles, un de nos Delivery Managers, son feedback sur cet événement. C’est un “aficionado” du Software Craftsmanship, je pense donc qu’il est intéressant de partager ce feedback avec vous.

2016-01-27 14.23.10

 

Xavier Balloy : Dis, Gilles, tu as décidé de te joindre à nous pour ce challenge de code que nous avons organisé le mois dernier au Web Center ! Tu en as pensé quoi, au juste ?

 

Gilles Cruchon : Bon, pour commencer, j’ai été ravi de voir que la pièce était remplie de nos développeurs. Cela signifie que beaucoup de personnes de nos équipes aiment la programmation et sont prêts à se frotter à de nouveaux challenges ! De plus, à titre personnel, je me souviendrai principalement de plusieurs choses que j’encouragerai dorénavant :

  • Nous devons produire de la valeur aussi rapidement que possible (même si c’est peu dans un premier temps) …
  • … mais nous devons prendre notre temps au début des développements afin de ne produire que du code robuste et résilient.
  • Nous devons faire tout ce que nous pouvons pour maximiser le temps de disponibilité de nos serveurs (livrer sans indisponibilité, si possible).
  • Connaitre notre environnement de développement est la clé du succès.
  • Bien que cela paraisse surprenant en première approche : coder en TDD est la façon la plus rapide pour produire de la valeur car :
    • notre code est sans bug ;
    • notre code est robuste;
    • notre code est résilient aux changement les plus imprévisibles (nous pouvons rapidement adapter notre code dans un environnement qui change rapidement).
  • Et, le dernier, mais non des moindres : peu importe qui vous soyez le meilleur ou non, il est toujours possible de s’améliorer ! Par exemple : nous pouvons maximiser la valeur produite en faisant une première analyse des spécifications et en priorisant ainsi le backlog.

Et toi, Xavier, en tant qu’organisateur, qu’as-tu pensé de ce challenge de code ?

 

X. B. : Et bien, au début, j’ai été impressionné de voir que des managers d’équipe se sont joints à nous pour ce challenge. Cela veut dire que la culture du Software Craftsmanship n’appartient pas uniquement aux développeurs ! Ensuite, j’ai apprécié que les gens aient utilisé différents langages de programmation, cela a ajouté une compétition dans la compétition entre les équipes, en quelque sorte. Deux équipes ont codé en en Java, plusieurs en Node.js et les autres en C#. Les équipes ayant utilisé Java ne se sont pas servi du kit de démarrage proposé et ont codé dans leur stack habituelle.

Une dernière chose est que des équipes ont utilisé l’approche TDD même si le challenge était en temps limité et même si elle savait qu’au plus tôt elles déploieraient en prod, au plus tôt elles gagneraient de l’argent. Cela nous montre bien l’état d’esprit de nos développeurs : le TDD ne prend pas plus de temps !

Oh, une dernière question… Qu’est-ce que tu proposerais pour améliorer ce challenge ?

 

G. C. : Une excellent question que l’on devrait tout le temps se poser ! Et bien, tout d’abord, bien qu’il y ait un kit de démarrage (un serveur et une console de log), j’ai remarqué que certaines équipes ont mis longtemps avant de se mettre “online”. Donc, un peu plus d’aide au démarrage n’aurait pas été du luxe, puisque cette partie n’était pas le but principal du challenge. J’aurais également aimé qu’on envoie aux serveurs des messages JSON un peu “pourris”, afin de mettre l’accent sur l’importance d’avoir un code robuste. Enfin, si vous aviez envoyé encore plus de changements dans le flux de données à destination des serveurs, nous aurions pu encore plus mettre l’accent sur la rapidité de changer du code lorsqu’il est couvert par des tests.

Et toi, qu’aimerais-tu améliorer dans ce challenge ?

 

X. B. : Je pense que ton idée d’un challenge encore plus challengeant est intéressante. Une piste d’amélioration aurait été de faire perdre de l’argent aux serveurs indisponibles. Cela aurait forcé les équipes à toujours avoir un serveur opérationnel, car dans la “vraie vie”, nous essayons constamment de minimiser le temps d’indisponibilité. Une autre piste est de trouver une façon de faire gagner de l’argent plus rapidement à certaines équipe car, une fois que tous les cas sont gérés, il est presque impossible de dépasser l’équipe qui est en tête. Peut-être en jouant sur la performance et les temps de réponse ?

Dans tous les cas, beaucoup d’équipes ont apprécié ce challenge et j’ai hâte d’animer le prochain ! Une façon amusante d’améliorer notre confection logicielle, à Lille.

 

 

 

Share