Bilan de la coding party #1

Comme annoncé précédemment sur ce blog, Ippon Technologies a organisé une “coding party” pendant toute la journée du 27 Septembre 2012.

Ce billet est l’occasion pour nous de faire un bilan sur ce qui a été développé et sur ce qui s’est bien passé, mais sans oublier les imprévus et points de questionnement, dans la tradition de partage et d’échange qui existe dans les méthodes Agiles et sur ce blog.

L’organisation

Une quinzaine de consultants de l’entreprise se sont retrouvés afin de travailler ensemble sur des évolutions du projet de réseau social d’entreprise Tatami. Les consultants venaient des différentes agences (Ippon Paris et Ippon Nantes) et avaient des expériences variées (des “vieux” du pôle conseil, comme des jeunes embauchés).
Nous avons passé la journée dans la grande salle de formation d’Ippon, avec nos ordinateurs portables ou du matériel disponible sur place, en fonction des préférences de chacun.

La journée a démarré à 9h00 par une demi-heure de petit déjeuner. Les 25 minutes de présentation des User Stories embarquées sur cette #CodingParty et les 25 minutes d’auto-organisation en équipe passées, la session de code a pu rééllement démarrer.
Pour redonner des forces aux troupes, nous avons fait une seule vraie pause (sushis livrés sur place… toujours dans l’esprit Ippon!) avant de reprendre en début d’après midi pour 4h30 de développement. La démo finale à eu lieu à 18h30.

L’ambiance fut donc particulièrement studieuse pendant toute la journée !******
**

Les fonctionnalités développées avec succès

Les fonctionnalités qui ont été réalisées (ou qui sont quasiment finalisées) sont les suivantes :

  • Nouvelle présentation pour la gestion des conversations dans l’application (ce code est déjà dans notre “master” et sera livré lors de notre prochaine mise en production)
  • Upload des fichiers, de manière à pouvoir attacher des fichiers à un statut (un peu comme on ajoute un fichier à un mail) : gestion du drag’n drop en HTML5, persistence du fichier dans Cassandra
  • Autocomplétion des noms des utilisateurs et des tags lorsque l’on créé un nouveau statut : cette fonctionnalité s’est heurtée à deux problèmes techniques majeurs. D’une part, le composant “typeahead” fourni par Twitter Bootstrap ne pouvait pas être utilisé sur une textarea, ce qui nous a obligé à le recoder entièrement. D’autre part, il a fallu rechercher les tags les plus populaires dans Cassandra.
  • L’abonnement aux tags : il est maintenant possible de s’abonner à un tag, fonctionnalité rarement proposée dans ce type de système car elle nécessite un backend assez performant…

Les fonctionnalités qui nous ont posé plus de problèmes

Le développement de certaines fonctionnalités se sont par contre révélées plus complexes à mettre en oeuvre que prévu. Pour une partie d’entre elles, il nous suffira d’y passer un peu plus de temps mais pour le reste nous avons pu nous rendre compte qu’un changement de stratégie était probablement nécessaire.

  • Mise en place d’un “chat” en utilisant Atmosphere https://github.com/Atmosphere/atmosphere : la configuration 100% Java nous a (à nouveau) fait perdre pas mal de temps, ce qui fait que cette réalisation n’est pas entièrement finalisée. Une leçon que nous avons déjà appris de nombreuses fois sur Tatami : la configuration XML est souvent plus simple, plus souple et plus rapide à mettre en place que la configuration Java, et il ne faut pas toujours écouter ceux qui prônent le “zéro XML”…
  • L’utilisation de PhoneGap pour réaliser une version mobile peut se faire de deux manières : soit en intégrant simplement une WebView pointant vers l’application (ce qui est déjà fonctionnel), soit en stockant directement le code HTML/JavaScript de l’application dans PhoneGap. Cette deuxième solution nous paraîssant plus intéressante techniquement (car il n’y a pas à télécharger tout le JavaScript), nous avons voulu la mettre en avant. Malheureusement, elle impose de ne pas utiliser de pages dynamiques (= pas de JSP, que du HTML faisant des appels REST). Cela ne serait pas très difficile à réaliser, mais il nous faudrait plus d’une journée de travail.
  • La connexion Agorava, autre projet Ippon, dont le but est d’avoir un “robot” allant chercher de l’information sur les réseaux sociaux et la pousser vers Tatami, s’est également révélée être problématique. L’authentification avec Spring Security, et le stockage d’un cookie de session nous ont fait perdre trop de temps pour avoir un robot fonctionnel.

Un bilan positif de la journée

** Le bilan de la journée est vraiment positif. Faire intervenir plusieurs personnes en mode “commando” sur le même projet, sans le connaître pour la plupart, et réussir en fin de journée à avoir de nombreuses fonctionnalités intéressantes réalisées et directement utilisables, c’est une belle performance.**

  • En termes de formation, beaucoup d’entre nous ont été heureux de pouvoir développer une application HTML5/Cassandra/mobile, et de pouvoir s’initier ces technologies
  • En termes de prise en main du projet, tout le monde a été heureux de pouvoir travailler sur un projet simple à installer, à construire et à exécuter : toutes les équipes ont été quasi immédiatement opérationnelles
  • Au niveau du projet, évidemment, nous sommes ravis d’avoir de nouvelles fonctionnalités qui seront très rapidement utilisables en production

Quels sont les points de blocage rencontrés ?

De manière quasi unanime, deux technologies nous ont coûté beaucoup de temps : Git et Backbone.js.

  • Malgré une excellente “cheat sheet” réalisée en interne sur Git, le fait d’utiliser un système complexe de branches a fait perdre du temps à plusieurs équipes. Les commandes Git peuvent en effet vite devenir compliquées, en particulier par rapport à SVN.
  • Backbone.js, pour ceux qui n’y sont pas habitués, est en effet très complexe à prendre en main, et reste très déroutant pour ceux qui ont l’habitude de faire du code JavaScript “classique”.

En conclusion

Suite au succès de cette journée, notre objectif est maintenant double :

  • Réussir à intégrer le code de chacun dans la branche “master” : certaines équipes ayant émis le souhait de continuer leurs développements après cette journée, tout n’est donc pas encore fini.
  • Préparer une deuxième “coding party”, toujours sur Tatami, mais avec des user stories et des objectifs différents!

Et bien entendu, n’oubliez pas que vous avez accès à l’intégralité du code source de Tatami sur notre page Github: https://github.com/ippontech/tatami