• Software Craftsmanship

MAITRISER A LA FOIS LE MINDSET ET LES PRATIQUES

Le Test-Driven Development (TDD) et le Refactoring de code legacy sont rarement pratiqué en entreprise et pour cause, les écoles ne forment pas à ces pratiques. Cette formation comprend l’essentiel des formations TDD et Refactoring, elle vous permettra d’acquérir les bases afin du Software Craftermanship.

L’état d’esprit ainsi que les pratiques enseignées dans cette formation sont donc issus à la fois de nos expériences terrain (éprouvées dans diverses entreprises), mais aussi celles de Michaël Feathers qui ont la particularité de combiner des petits pas (baby steps) avec un attachement viscéral à ne pas « casser la prod ».

À l’issue de cette formation, vous comprendrez ce qu’est l’état d’esprit d'un artisan logiciel qui produit à la fois un code propre, tout en restant humble et collaboratif avec ses collègues et les gens du métier. Vous saurez à pratiquer le Test-Driven Development à la fois sur code neuf comme du code legacy. Vous saurez aussi reconnaître les code smells et les corriger rapidement. Vous maîtriser les bases du refactoring et enfin comment obtenir une couverture totale de votre code avant toute modification structurelle sur celui-ci.
Cependant, la pratique du TDD sera difficile au quotidien si les spécifications ne sont pas déclinées en exemples concrets. Exprimer un test métier sur la base d’un exemple concret est très simple. Dans ce cadre, nous pratiquerons un atelier Example Mapping. Cet atelier permet de distiller une story, en règles métier illustré par des exemples concrets. Après l’atelier, les développeurs sont souvent extrêmement motivés pour implémenter la story en TDD.

Toutes ces notions seront découvertes à travers de nombreux ateliers et exercices de code pendant deux jours animés en mode « training from the back of the room » (i.e. c’est en faisant qu’on apprend et retient mieux les choses).


Programme

Jour 1 – Software Craftsmanship / Test-Driven Development

Introduction
• Les attentes de chacun
Software Craftsmanship
• Comprendre le mouvement, ses valeurs et ses principes
• Pourquoi Scrum ou Kanban ne sont pas suffisants ?
Clean Code
• Comprendre les principes du Clean Code
• Produire un code expressif et facile à maintenir
Test-Driven Development
• Le cycle de vie du TDD
• Les différentes écoles du TDD
• Comprendre la signification du design émergeant
• Les 3 règles du TDD
Example Mapping
• Pourquoi distiller une story
• Les bénéfices des exemples concrets
• Atelier Example Mapping
Recap
• Q & A et bilan des attentes de chacun pour cette première journée

Jour 2 – Refactoring Legacy Code

Introduction
• Warm-up - Q & A
Vocabulaire des Code Smells
• Définition du Code Legacy
• Quand doit-on ou pas faire du Refactoring
• Reconnaître les principaux Code Smells et savoir les corriger
• Les secrets d’un Refactoring sans risque et performant
How to isolate external dependencies
• Comprendre la notion de FAKE
• Le vocabulaire simplifié: Mock & Stub
• Tooling or not tooling?
Techniques to break external Dependencies
• Rendre du code non testable en code testable
• Comprendre l’essentiel des techniques pour casser des dépendances
• Pratiquer le TDD sur du code Legacy fortement couplé
• Appliquer le principe de Test Double afin que tests puissent tourner en mode acceptance ou en mode intégration
Recap
• Q & A et bilan des attentes de chacun après les deux jours


Méthode pédagogique

• 80% de travaux pratiques et 20% de théorie
• Combinaison de présentations, de livecoding, de discussions, d’ateliers et d’exercices pratiques
• La formation privilégie les échanges et la collaboration de tous les participants
• Animation repose sur l’approche proposée du “training from the back of the room”


Audience

• Développeur
• Tech-Lead
• Architecte

• Venir avec un laptop de développement pour des ateliers C# & Java


Livrables

• Les supports en anglais
• Les exercises


Lieu

• Le lieu de la formation -à Paris- sera communiqué un mois avant la date de la formation


Intra-Entreprises

• Sur Devis
• Durée adaptée
• Dans vos locaux
• Dates Flexibles


Témoignages

Pendant la formation, j’ai pu apprendre les principes du Test Driven Development, les bonnes pratiques du Clean Code ainsi que les différentes approches du refactoring. Ce qui était très intéressant aussi lors de la formation, c’est la présentation des différents frameworks et outils. Ce qui m’a le plus plu c'est les KATAs réalisés tout au long de la formation afin d’apprendre tout en pratiquant.

Développeur (Davidson Consulting)