Extreme Startup chez Xebia

Lors du XKE de juillet, tous les Xebians ont pu participer à une nouvelle expérience de programmation : Extreme Startup. Nous avons eu d’excellents échos de la session qui s’était tenue à Devoxx France et nous avons voulu le tester par nous même. Le principe général est d’écrire un serveur web, de s’inscrire dans un système puis d’attendre qu’il vous pose des questions auxquelles il faut répondre le plus justement et rapidement possible.
Le but est d’expérimenter puis d’analyser les enjeux du lancement d’une activité basée sur le logiciel.
Comment la réactivité d’une startup, son analyse rapide du marché et sa capacité à réagir aux changements peuvent déterminer le succès ou l’échec de l’entreprise ?
Est-ce que les méthodes traditionnellement recommandées dans le développement (comme les tests unitaires, les spécifications, la qualification, etc.) seront efficaces et utiles dans une situation compétitive et avec un feedback rapide ?
Nous aborderons tous ces points dans la suite de l’article.

Préparation

La phase de préparation fut relativement rapide, notamment grâce à l’excellent projet Extreme Startup partagé sur Github. Après une installation de la plateforme quelque peu laborieuse sur nos macs (à base de rvm pour installer la version 1.9.2 de Ruby), nous avons pris pas mal de plaisir à dérouler l’exercice chacun de notre côté. Nicolas en a profité pour expérimenter Play2 en Scala, Jean-Laurent sur du Node.js en CoffeeScript et moi sur du très connu en choisissant Jetty en Java 7. En testant seul, nous nous sommes déjà pas mal amusés donc nous avons su très vite que l’exercice serait encore plus ludique à plusieurs. Nous avons tout de même creusé un peu plus en détail les règles qui régissent le jeu afin de répondre aux participants et pouvoir les aiguiller le jour J. Nous avons donc lu pas mal de code du projet. Il est écrit en Ruby avec Sinatra. Pas de spoil : nous ne dévoilerons rien dans cet article car l’un des intérêts du concours est d’avoir l’effet de surprise.

La dernière étape de la préparation consistait à mettre à disposition des projets bootstrap permettant aux participants de commencer rapidement l’exercice. Si vous voulez tenter l’exercice, sachez qu’un dépôt rassemble déjà les bonnes volontés de beaucoup de participants.

Côté infrastructure : même si nous savons aujourd’hui que nos deux points d’accès Wifi tiennent la charge pour 50 clients, nous avons tout de même souhaité assurer en offrant à la moitié des machines environ une bonne vieille connexion filaire en RJ45 + switch.

Phase de chauffe

Une fois les principes généraux et le mode d’emploi expliqué aux Xebians, le serveur démarre en mode WARMUP : une phase de chauffe où une seule question triviale est posée et où le score est affiché mais non comptabilisé. Le but est de valider que les échanges sur le réseau se passent bien et que tous les concurrents ont un environnement de développement leur permettant de participer dans de bonnes conditions.

Il s’est échangé durant cette phase 2387 requêtes avec un taux de réussite de 33%.

Déroulement de la session

Une fois que tout le monde était prêt ou presque, on redémarre le serveur, les joueurs s’inscrivent à nouveau et les développements s’enchaînent. On projette un graphique en temps réel des scores des participants – très motivant pour rester devant :

Voici la répartition des langages utilisés par les Xebians pour coder l’exercice :

On peut noter que 2/3 des participants ont utilisé Java. Les habitudes ont la vie dure. Cependant, nous avions averti sur le fait que pour profiter de l’expérience, une maîtrise minimum du langage choisi était nécessaire, ce qui a peut-être refroidi certaines ardeurs.

En fonction du langage, on arrive ainsi à un score moyen plus ou moins faible :

Précisons tout de même que le faible nombre d’équipes ne permet pas de tirer de réelles conclusions. Ainsi, seule une équipe utilisait Scala ; de même pour Perl.

Au fur et à mesure de l’avancement, les organisateurs peuvent modifier l’état du serveur pour augmenter la difficulté et retranscrire ainsi les changements de besoin des utilisateurs. Il faut s’accrocher pour ne pas perdre le fil et toujours gagner le maximum de points. Voici le graphique qui représente l’évolution des points de chaque équipe. Près de 9000 requêtes se sont échangées en un peu moins de 2 heures, pour un taux de réussite de 34,5% seulement en moyenne.

Rétrospective

La conclusion d’Extreme Startup est quasiment aussi importante que son déroulement. Cela permet à chacun d’échanger sur les techniques qu’il a mis en place seul, en binôme ou en équipe pour relever le défi. Nous avons consacré une grosse demi-heure à cette conclusion, pendant laquelle les binômes les plus marquants sont venus exposer leur mode de fonctionnement et le code produit.

À Xebia nous avons abordé tous ensemble plusieurs points :

  1. Concernant les langages : en terme de concision Scala permettait d’écrire une solution en 80 lignes. Et pour éviter les trolls, précisons : 80 lignes lisibles.
  2. Pour le côté efficacité, nous avons noté que les meilleurs binômes avaient chacun un clavier et programmaient en parallèle, se passant des morceaux de code par messagerie instantanée !
  3. Des techniques parallèles ont été utilisées pour arriver au seul but qui comptait : être les premiers. Nous ne les dévoilerons pas ici mais certains Xebians ont été très inventifs pour contourner le système.
  4. La fréquence des aller-retours (plusieurs par secondes) force un mode de fonctionnement proche de « Je développe en pros ».
  5. Le design émergent a également pris une part importante pour les équipes ayant réalisé les meilleurs scores : pas le temps de réfléchir à l’abstraction du code quand on a la tête dans le guidon. Et ça fonctionne. Certains ajouteront : « à court terme ».
  6. Enfin on peut également signaler l’absence de test unitaire, même chez leur plus fervents adeptes : globalement c’est le système qui testait en permanence le code qui était mis en production de manière continue. Une seule équipe est partie en test first et elle s’est placée juste en dessous de la moyenne des résultats.

Cet article vous donne envie d’essayer ? Nous allons organiser à partir de septembre, dans le cadre des TechEvents Xebia au moins un evenement ou vous pourrez venir concourir. Nous l’annoncerons sur notre twitter.

One Response

Laisser un commentaire