J'ai eu la chance d'assister a la première édition du Devoxx en France à Paris.
Cet évènement a regroupé près de 1200 développeurs venus assister à des labs, university, tool in action, conférences, etc…
Le tout réparti sur 3 journées bien remplies (de 9h à 20h et plus) dans un très bel endroit.

J'aimerai commencer par féliciter les organisateurs : tout était vraiment parfait, du petit-déjeuner à l'organisation des salles.

J'ai eu envie de faire un petit compte rendu de ce qui m'a marqué tout au long de ces 3 jours, je ne citerai pas toutes les conférences auxquelles j'ai pu assister, seulement celles qui m'ont le plus marqué.

Légendes urbaines sur Scala; Venez vous faire votre propre opinion

J'ai beaucoup apprécié cet atelier, regardant depuis quelques semaine ce langage de la JVM d'un oeil intéressé sans pour autant m'y être encore lancé. J'ai toujours vu ce langage comme prometteur mais avec une apparente complexité un peu gênante.

Il s'avère finalement qu'une fois les principes basiques expliqués, le langage reste en fait très homogène et s'appuie sur des principes qui sont toujours les mêmes (typage, expressions etc..).
L'atelier nous a permis de développer de petits bouts de codes démontrant un peu les différents aspects du langage (aspects fonctionnels notamment).

Ce que je retiens de ce langage c'est en fait le compilateur ! Celui-ci va vraiment nous permettre d'approcher l'écriture d'un langage dynamique sans pour autant sacrifier l'aspect type safe. Cette puissance réduit la taille du code, simplifie l'écriture mais conserve la sécurité du typage, vraiment intéressant.

Chouchoutez votre code javascript

Je retiens de cette conférence la tendance qui se dessine depuis quelques mois maintenant : l'industrialisation du développement javascript.
Notamment les librairies de tests (unitaires et d'intégrations) se sont énormément développées et n'ont rien à envier à leurs homologues dans des langages plus "enterprise".
J'ai également appris que ces outils(comme jasmine) peuvent aujourd'hui facilement s'intégrer avec des classiques comme Maven ou Sonar.

De l'audit de code à l'inspection continue

Cette présentation de Sonar, m'a vraiment convaincu de pousser pour utiliser un outil d'analyse statique. Parmi les features qui apportent selon moi une réelle plus-value : la revue de code et les statistiques basées sur un différentiel. En effet, une des dernières nouveautés de Sonar est de pouvoir afficher les résultats de l'analyse sur la différence de ce qui a été ajouté depuis le dernier commit par exemple.
C'est très important pour mesurer la progression, mais également l'investissement de l'équipe notamment sur des projets legacy, où par exemple au début seul le nouveau code doit respecter les règles mises en place.
L'outil permet une intégration pour le moment basique avec Eclipse mais qui permet de faire des revues de code dans l'IDE du développeur.

Musée des horreurs du FBI

Ce petit quickies m'a marqué sur une des histoires. Celle qui racontait que sous prétexte de respecter l'architecture (et la hiérarchie) utilisée par l'entreprise, une fonctionnalité d'impression a pris un temps de développement fou, mais pire que ça, les utilisateurs devaient attendre 2 jours entre le moment d'imprimer et de récupérer le résultat de l'impression.
Tout cela, même si très extrême et caricatural, montre bien que si il y a UNE règle importante à suivre dans le développement c'est d'être pragmatique (i.e ne pas appliquer bêtement des méthodes ou règles).

NodeJS and javascript everywhere

Ce talk avait pour but de présenter rapidement nodejs et son fonctionnement au travers de l'implémentation en direct d'un serveur proxy. Les différents problèmes rencontrés sont sans trop de surprise lié à l'asynchrone, notamment la gestion des erreurs, le debugging, les memory leak, etc… Ce que le speaker appelait "l'async horror".

La solution générale (avec des patterns différents) est d'ajouter un timeout pour chaque appel asynchrone, de logger et de mesurer tout de ce qui est possible.
Le meilleur conseil ici est de ne pas utiliser l'asynchrone pour tout et n'importe quoi. C'est un outil à posséder dans sa toolbox, mais comme tout outil cela ne résout pas tous les problèmes.
L'asynchrone est utile dans le cas de traitement lourd ou d'IO par exemple.

Web Oriented Architecture, une transmutation des pratiques de construction des SI

Très impressionné par ce talk, plus sur la forme que sur le contenu, comparable à one man show. J'ai passé un très bon moment à écouter.
Le sujet portait sur les nouvelles architectures Web (WOA), notamment basées sur la "relaxation temporelle" des utilisateurs, la scalabilité et la simplicité.

Cette conference prône l'utilisation d'asynchrone pour réduire le délai d'attente, ce qui peut être une bonne chose quand le contexte est adapté.
Comme j'ai pu le voir lors de la conférence NodeJS and javascript everywhere, l'asynchrone partout peut conduire à la catastrophe et faire exploser la complexité

Behind the scenes of day-to-day development at google

Conference très intéressante présentant le fonctionnement et les méthodes de travail utilisés au quotidien chez Google.
Pour résumer, je dirais simplement que Google a bien compris l'intérêt de méthodes agiles, que ce soit au niveau gestion ou développement. Ce qu'ils font chez eux ressemble de très près à du SCRUM mais avec quelques adaptations maison (notamment sur la gestion du backlog, la planification, les meeting quotidiens qui n'existent pas etc…).

Ce que j'ai trouvé marquant est le déroulement des estimations.
Il s'agit de prime abord d'un planning poker classique, mais en cas de divergences, chaque développeur doit simplement dire "Pour faire cette tâche je dois faire X, Y et Z", les autres revoient ou non leurs estimations en fonction de cette affirmation. Pas de débats à rallonge, ou "d'émotivité" vis à vis d'un projet, que du factuel.
Je trouve personnellement que c'est une bonne chose.

Voilà un résumé des principales conférences auxquelles j'ai assisté, il en manque pas mal mais il fallait que je fasse un choix =)