Les 12 et 13 mai derniers, j’ai assisté à NCrafts 2016, une conférence internationale autour du Software Craftsmanship. Elle s’est déroulée à Paris et on y a parlé, entre développeurs, de code, de techno, de carrière, de méthodologie et de bonnes pratiques.
N’ayant pas l’habitude d’assister à beaucoup de conférences j’ai trouvé celle-ci bien organisée pour une petite conférence plutôt intimiste et « artisanale ». Certains habitués m’ont d’ailleurs confirmé la croissance de l’édition 2016 par rapport aux précédentes en termes de participation et de moyens.
Durant les 2 jours de conf j’ai assisté à des talks, des labs et j’ai parlé à des développeurs que je connaissais (ou pas). On le sait tous, le monde est petit et celui des développeurs n’est pas une exception.
Tous les talks et labs ont été filmés, ils seront surement mis en ligne sur le site NCrafts.io. Voici ceux qui m’ont le plus marqué :
The Long Road par Sandro Mancuso
Un speaker très connu dans le monde du Software Craftsmanship, il a écrit « The Software Craftsman » préfacé par Robert C. Martin. Il se trouve qu’en cette période je lisais son livre.
Son talk en avait repris une bonne partie. Il portait sur la carrière d’un « artisan développeur ». Elle est comparée à une longue route pleine d’expériences, d’investissements, de rencontres, de postes…etc. D’ailleurs Sandro Marcuso considère que les postes occupés, seuls, ne construisent pas la carrière, et que c’est au développeur lui-même de gérer la sienne et pas à son employeur. Il sera amené à faire des choix de carrière qui seront tout à fait légitimes, du moment où il sera convaincu de son but.
Le talk contenait quelques préconisations plus au moins connues chez les développeurs, j’en cite quelques-unes :l’apprentissage continu, le Pair Programming, les Katas, les blogs, les conférences…Et enfin une partie intéressante avec une touche d’humour sur les anti-patterns au recrutement (comme sur les brainteasers qu’il déconseille « Who the f*** cares how many Maltesers I can fit in a station? » :)).
Extreme Carpaccio slice thin, code fast! Par Diego Lemos et Arnaud Loyer
Ce lab fut très intéressant, car en plus de son contenu il s’est déroulé en Pair Programming avec des échanges entre équipes et avec les animateurs. Il s’agit d’un Kata qui combine deux exercices connus ExtremeStartup et Elephant Carpaccio. L’exercice est disponible sur Github ici.
On s’y exerce à découper des User Stories le plus finement possible pour partir en Prod le plus vite possible. La vitesse oui, mais sans oublier la qualité (je parle ici de clean code et/ou de tests), car à défaut d’en avoir l’application devient difficilement maintenable et les évolutions peuvent engendrer des régressions.
A la fin du lab les discussions ont tourné, entre-autre, autour du découpage choisi par chaque équipe. Ce qui est intéressant c’est de voir que, même si les participants étaient tous des développeurs, lorsqu’on a la casquette de codeur on préfère livrer l’application entière alors qu’avec le rôle de Product Owner on cherche à livrer dès que possible la plus petite fonctionnalité qui permet de gagner de l’argent (de la valeur). Bref une reproduction assez proche de ce qui nous vivons tous dans nos projets autant que développeurs.
Think Sharp, write Swift par Pascal Batty
N’ayant codé que quelques lignes avec Objective-C, cette session fut une découverte plutôt intéressante. Le talk était structuré sur une comparaison entre C# et Swift.
Les similitudes entre ces deux langages OO et fortement typés, facilitent de premier abord le passage de C# vers Swift. L’un d’entre eux que je trouve intéressant est : les interfaces en C# versus les protocoles en Swift. En revanche le speaker nous explique que plus on creuse dans ce langage plus on se rend compte qu’il ne fonctionne pas tout à fait comme C#. Par exemple dans le typage des variables, la gestion des exceptions et des nuls, les boucles for, le compilateur…Il existe d’autres points de fond où Swift a une longueur d’avance sur C#. C’est la programmation fonctionnelle qu’il offre (relativement) grâce aux Extensions/Protocoles et aux Closures.
Moralité, selon le speaker, si l’on souhaite basculer sur Swift, ce n’est pas très grave au démarrage de penser C# et coder Swift, mais pour profiter des avantages offerts par ce langage il conviendrait de penser Swift et coder Swift. Toujours faut-il se munir de l’environnement adéquat ; OS X/XCode au mieux, Ubuntu/REPL ou Windows/Ubuntu Bash au pire.
The Art of Visualising Software Architecte par Simon Brown
Le speaker revient sur la difficulté que rencontrent beaucoup de développeurs à communiquer visuellement une architecture des SI sur lesquels ils travaillent. Il met en cause deux pratiques. D’une part l’abandon de l’utilisation d’une modélisation en UML par les développeurs (le sondage rapide qu’il a fait dans la salle de conférence n’a pas réfuté cette réalité), et d’autre part les diagrammes UML eux même qui peuvent être incompréhensibles voir méconnus. Afin de remédier à ces problèmes il propose quelques solutions:
- L’utilisation normalisée de notations dans les schémas: titres, couleurs, formes, étiquettes…
- L’utilisation d’un modèle avec plusieurs vues et perspectives selon l’audience: une vue logique, une vue de développement, une physique et une quatrième de process.
- L’utilisation d’un « Ubiquitous Language » dans le projet ; une notion connu en DDD.
- L’utilisation du « C4 Model » : Il s’agit d’une modélisation à 4 niveaux. Elle fait un zoom sur l’architecture d’une vue du contexte jusqu’au diagramme de classes.
Il finit son discours sur le besoin de générer une architecture à partir du code (Reverse engineering) et présente la solutionStructurizr.
Rise of the Machines Automate Your Development par Sven Peters
Encore un talk du « futur » qui nous parle du contrôle des machines sur nos vies, et cette fois-ci dans nos propres dev ! Trêve de plaisanterie, un talk intéressant parce qu’il parle de vrais solutions déjà existantes et qui aident les développeurs dans leur travail quotidien. Il voit de l’automatisation sur plusieurs stades :
- dans la procédure de Setup des environnement de dev
- dans les branches de dev avec l’auto-merge, le contrôle des builds…
- dans la qualité de code (test coverage)
- l’homogénéisation du workflow du développeur avec celui du gestionnaire de tickets.
- la liaison entre l’équipe de dev et l’équipe de support.
- etc
Bilan
Ce qui est intéressant dans la NCrafts c’est les échanges entre participants et speakers. Les discussions se font aisément entre développeurs de différentes plateformes vu que c’est une conférence qui porte plus sur les pratiques que sur des technos. Les labs sont aussi une occasion de s’échanger nos techniques de codage.