Catalogue des formations
Clean Crafter
En route vers l’artisanat logiciel
Parce qu’il n’y a pas d’agilité sans excellence technique et apprentissage continu.
Dans cette formation, les participants découvriront ce qu’est le « Software Craftsmanship », l’état d’esprit associé, et les techniques / pratiques clés pour pouvoir travailler de manière itérative et incrémentale.
Cette formation vise à aider les développeur-ses à devenir meilleurs dans la conception, l’écriture et la maintenance de code.
“Porter continuellement attention à l’excellence technique et à la qualité de la conception renforce l’agilité.”
Manifeste Agile – Principe 9
Objectifs pédagogiques
• Comprendre ce que l’on entend par « Software Craftsmanship » et les pratiques qui y sont liées.
• Être capable d’appliquer les principes « Clean code » et « S.O.L.I.D » au quotidien.
• Utiliser l’Example Mapping afin de s’aligner sur les fonctionnalités à délivrer.
• Pratiquer le Test-Driven Development et comprendre qu’il ne s’agit pas d’une approche de test mais d’une approche de conception.
• Se sentir à l’aise pour refactorer du code, même du code legacy (sans tests).
• Comprendre l’importance des tests dans la production de logiciels et le développement.
Contenu de la formation
Jour 1 : Clean Coder
• Qu’est-ce que le « Software Craftsmanship » ?
- Le manifeste pour l’artisannat logiciel
- Les pratiques associées
- Le jeu “Craft challenges”
• Clean Code en pratiques
- Crappy-Driven Development kata (en utilisant l’Ensemble Programming)
- Comment identifier des « code smells » et les remédier
- Programmer’s Brain: Clean Code du point de vu cognitif
• Les principes S.O.L.I.D
- Good code vs Bad Code
- Refactoring à l’aide des principes S.O.L.I.D
• Test-Driven Development (T.D.D) dans la vraie vie
- Chicago school
- Les 3 règles de T.D.D
- Kata Roman Numeral
- Pourquoi TDD n’est pas une approche de test
Jour 2 : Testing at Heart
• Les principes du « Clean Testing »
- Unit Test Anti-patterns et best practices
- Nommage et propriétés des bons Unit Tests
- Clean Tests kata
• Designer avec T.D.D – Xtrem T.D.D kata
- Mesurer la qualité de nos tests
- Code coverage vs Code Quality
- Mutation Testing
- T.D.D et Design
- Utiliser l’Example Mapping pour clarifier une fonctionnalité
- Définir 1 Test List
- Utiliser T.D.D comme « driver » de refactoring (strangler pattern)
• Comment refactorer du code Legacy
- Trip Service kata
- Seams, Test Data Builders, Property-Based Testing, …
Modus Operandi
Cette formation est un mélange de théorie et de pratique. Nous appliquerons chaque apprentissage sur des exemples concrets afin que chaque participant-e puisse avoir la capacité de comprendre par où commencer.
Puisque dans la réalité, nous sommes souvent amenés à travailler sur de l’existant et du code legacy, nous verrons également comment tester et refactorer du code dans ce contexte.
Les exercices pratiques sont disponibles en java et C# mais l’ensemble des concepts abordés sont agnostiques du langage utilisé au quotidien. Ainsi vous pourrez les utiliser quel que soit votre stack de développement (Typescript, .NET, Java, …)
Les participants expérimenteront « l’apprentissage par la pratique » à travers différentes activités :
• Code katas en utilisant le « Pair Programming » et le « Mob Programming »
• Ateliers permettant de stimuler l’intelligence collective
Concepts couverts
• Software Craftsmanship / manifeste
• Extreme Programming
• Clean Code
• Principes S.O.L.I.D
• Specification by Example
• Example mapping
• Test-Driven Development
• Techniques de refactoring automatisés
• Anti-patterns de Unit Testing et bonnes pratiques associées
• Mutation Testing
• Pair / Mob Programming
Informations complémentaires
Installations et matériel requis :
- Ordinateurs des participants (au moins 1 pour 2) avec votre IDE préféré
- Accès à Internet
Code katas en C# sur .NET 6 et java (>=17)
- Les développeurs.ses devraient au moins se sentir à l’aise avec un de ces langages
- Les participants.es pourront obtenir de l’aide pendant les exercices, mais nous n’aurons pas le temps de couvrir les bases de l’installation, de la compilation, de la syntaxe, etc.