Rejoignez-nous sur les réseaux sociaux !

Retour d’expérience : SoCraTes 2016

Le Software Craftsmanship and Testing Conference (SoCraTes 2016) est une Open Space Conference. Une conférence où il n’y a pas de sessions, de sujets et d’agenda prédéfinis à l’avance.

Les participants élaborent le programme sur place et ce de jour en jour. Néanmoins un format est déjà établi : World Café suivi de deux jours d’Open Space (sessions de présentions, katas, pratiques). Une journée de Workshops (Ateliers pratiques) vient clôturer le séjour.

La forme est connue, à nous de trouver le fond !

 

Arrivée au Château à 17h

Nous sommes tous arrivés aux alentours de 18h au magnifique château de Rochegude. Première étape : la partie check in. Récupération des clefs, rencontre avec son colocataire de chambre, premiers échanges avec les participants, etc…

 

World Café à 18h

A 18h, tous les participants se réunissent. L’organisation nous explique alors la règle de la main levée : lorsque quelqu’un souhaite prendre la parole, il lève sa main et quiconque voit une main levée doit arrêter son activité et lever la main à son tour. Une fois que toute l’assemblée a la main levée et que le silence s’est installé, la personne peut alors s’exprimer. C’est simple et très efficace !

Le World Café est une session très importante puisqu’elle sert à organiser le séjour. Les participants sont alors divisés en groupe de 7 personnes avec un hôte de table. Une rotation s’effectue toutes les 25 minutes. Pendant ce laps de temps chacun est invité à se présenter et à évoquer vaguement ou précisément des sujets qu’il souhaite aborder ou présenter pendant la conférence. Une fois le temps écoulé, les groupes sont changés afin de rencontrer tous les Craftsmen. Seul l’hôte de table reste à sa place avec l’objectif de faire une synthèse au nouveau groupe des sujets abordés par le précédent.

À partir de là, certains sujets phares commencent à émerger et seront alors surement abordés lors de la conférence.

Vous l’aurez compris, le but du World Café est de briser la glace entre tous les participants, mettre les premières idées sur papier et de les connecter ensemble pour pouvoir créer un maillage de connaissances qui vont, in fine, « driver » les Open Space Sessions.

Le résultat de cet atelier :

image-2

image-1

image-3

 

Dîner à 20h

Le World Café drive mais ne nourrit pas, nos estomacs nous conduisent donc au restaurant du château pour un délicieux repas accompagné d’un service de qualité.

À 22h, arrive Romeu (@malk_zameth) pour proposer le kata « Game of Life » avec quelques contraintes intéressantes. Il a d’ailleurs proposé des katas tout au long de la conférence, au déjeuner, au dîner et avait sa table dédiée.

Le décor est donc très rapidement planté et on sent déjà que ce sera 3 jours intenses en termes d’échanges, d’apprentissages et de découvertes.

 

 

Vendredi et Samedi matin 9h

Tous les participants sont de nouveau réunis dans la pièce principale où a eu lieu le World Café. L’animatrice, Franzi (@Singsalad), prend la parole pour nous expliquer le concept et le format de la conférence avant de nous exposer les différentes règles dont la plus importante « The Law of Two Feet » édictant que « Si à n’importe quel moment, vous vous trouvez dans une situation où vous considérez que vous n’êtes ni entrain d’apprendre ni de contribuer, utilisez vos deux pieds pour aller ailleurs ».

Vient ensuite la partie proposition de sessions où chacun est le bienvenu pour contribuer. Selon son envie et son niveau de connaissance on peut :

•    Proposer de présenter un sujet

•    Proposer une discussion ouverte sur un sujet que l’on a envie de découvrir ou d’approfondir avec quelqu’un de plus expérimenté pour nous aider

Encore une fois, le résultat est assez impressionnant… On peut même parfois se permettre le luxe d’avoir l’embarras du choix dans la sélection de sujets !

image-4

 

Quelques sessions auxquelles j’ai pu participer

 Event Storming

C’est un sujet que j’ai proposé et qui me tient à cœur. Et à ma grande surprise, je n’étais pas le seul à vouloir aborder ce sujet !

Nous avons eu un expert DDD (@khaledsouf) pour nous initier. Le thème portait sur la réservation de chambres d’hôtel en ligne. C’est un parfait moyen d’explorer et de connaître le domaine métier d’une application en permettant de lever les ambiguïtés très rapidement à travers une très bonne communication et interaction entre les différents participants.

Pour creuser le sujet :

http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html

http://eventstorming.com/

 

Teaching TDD

(@CedricRup)

Enseigner le TDD n’est pas chose facile. C’est un changement radical dans la manière de travailler et de penser d’un développeur. C’est un long processus qui commence par une formation (1 à 2j) suivi d’un accompagnement de l’équipe (minimum 6 mois).

Au début, c’est très frustrant, car on a l’impression d’avancer moins vite, que les « baby steps » ne servent pas à grand-chose. Une comparaison aide toujours pour se remonter le moral : apprendre le TDD, c’est comme apprendre à faire du vélo. Au début, on nous tient, on tombe, on se relève, on fait de petits progrès jusqu’à bien maîtriser l’ensemble. A la fin, on finit par aller très vite, ça devient simple et naturel de monter sur ce même vélo et d’y pédaler. Don’t give up !

 

Distilling Software Craftsmanship

(@CedricRup)

Ou comment mettre en place une culture Craft au sein d’une équipe ou entreprise ?

Cette session regroupant des coachs et des lead techniques a permis d’effectuer un retour d’expérience intéressant sur la mise en place de coaching craft. Il en est ressorti que le coach doit avoir une certaine légitimité sur son domaine de coaching. Aussi, il doit être pédagogue sur sa manière d’aborder ces sujets avec des novices. En effet, le plus souvent, les non-initiés se sentent inondés d’information (TDD, DDD, BDD, SOLID, DRY, KISS, Clean Code, etc………) et cela peut créer un rejet sur la méthodologie et le coaching.

Le dernier point mis en exergue l’importance de se focaliser sur les gens motivés et intéressés à apprendre ainsi que de mettre en pratique ces concepts.

Ce fut une session ensoleillée :

image-6

 

Feature Branching is Evil

(@tdpauw)

Une des sessions les plus passionnantes avec beaucoup de participants et donc de nombreux échanges tout au long de la présentation.

Contextualisation : on entend par « Feature Branch » les branches qui ont une longue durée de vie, beaucoup de commits et de fichiers modifiés qui sont difficiles à merger.

Beaucoup de points ont été abordés pendant la session :

–    Stratégies de branching : GitFlow, Github Flow

–    Trunk Based Development

–    Feature Toggles

La conclusion de cette présentation fut que peu importe la stratégie de branching ou développement, le plus crucial est de tout d’abord bien découper les fonctionnalités dans le but d’avoir des branches de très courte durée de vie (2j max). Aussi, cela requiert de la discipline et du Craftsmanship.

image-7

 

Learning Strategies

(@alebaffa)

La question était simple : comment faire pour continuer à apprendre afin de s’améliorer et de devenir meilleur dans notre travail ?

Bien évidemment nous avons tous une famille, des hobbies, et autres passions que le code. Certains apprennent pendant leur temps de travail (ex : 1h/jour) quand d’autres obtiennent des jours dédiés exclusivement pour cela.

La plupart apprennent sur leur temps libre ce qui est considéré par la majorité des participants comme la mauvaise solution. Il est bien entendu important de continuer à apprendre pour se maintenir à niveau, mais nous pensons que cela doit se faire sur notre lieu de travail et non pas sur notre temps personnel.

Nous avons également abordé les clubs de lecture. Il y a en effet beaucoup de livres intéressants sur l’IT mais qu’il nous est bien évidemment impossible de tous lire. Ainsi, de telles communautés peuvent aider à partager cette tâche de lecture.

Pour finir nous avons partagé quelques bonnes applications comme, par exemple, Good Reads ou encore Pockt.

 

 Closing 17h30 (Vendredi et Samedi)

Le Closing peut être considéré comme une rétrospective de la journée passée. Les différentes sessions sont parcourues par un participant volontaire pour nous faire un résumé des présentations auxquelles il a assisté. Encore une fois, c’est aussi intéressant qu’enrichissant. Cela permet d’avoir une vision globale puisqu’il nous est impossible d’assister à toutes les sessions.

 

 Samedi Soir : Projection « The Mother of All Demos »

C’est une vidéo culte de Douglas Engelbart, inventeur de la souris. Dans cette présentation, il montre le fruit d’un travail de 5 ans de recherches. Le résultat est incroyable… On ne se rend pas compte du nombre d’inventions qui lui sont dues : téléconférence, hypermedia, traitement de texte, etc…

Je vous invite donc à visionner ladite vidéo si vous ne la connaissez pas !

 

 Dimanche Workshop Event Storming / DDD

Notre dernière journée était consacrée à un Workshop. Ce fut l’occasion de refaire un Event Storming en allant un peu plus loin. Nous avons en outre pu parcourir le DDD code sample d’Eric Evans issu du fameux bouquin bleu (créateur du DDD). En parcourant le code, nous avons pu voir les concepts/patterns du DDD se matérialisant à travers du vrai code.

 

Conclusion

De toutes les conférences que j’ai pu faire, Socrates reste pour moi de loin la meilleure et celle à laquelle on doit absolument participer ! Ce congrès rend possible d’une part la découverte de bon nombre de concepts tout en ayant l’opportunité de les mettre en pratique, et d’autre part les discussions sur n’importe quel sujet que l’on souhaite aborder. Il y aura toujours un expert pour échanger sur votre problématique !

So, yes, Socrates is great. C’est pourquoi j’adresse un gros big up à Houssam Fakih (@houssamfakih) pour son excellente organisation et son implication tout au long de la conférence.

 

Sur le sujet

« Le temps de réaction d’ActivePivot permet d’accélérer la prise de décision »
5 questions à Mathieu, développeur Java & ActivePivot
Devoxx 2017 : Retour d’expérience d’un NOVENCIEN
Angular 4.0 : « On peut désormais utiliser une syntaxe if/else dans les templates »