Software
Craftsmanship
L'art du code et de l'agilité technique en entreprise
Avant-propos
1. Remerciements7
2. Avatars10
3. Introduction11
Chapitre 1
Savoir-être
1. Introduction15
2. Manifeste de l'artisan codeur16
2.1 Élever le niveau18
2.2 Artisan et non pas héros19
2.3 Solutions économiquement viables20
2.4 Savoir dire Non pour le bien de Tous21
3. Éthique et attitude codeur responsable22
3.1 Zéro Mythos - Dire ce qu'on fait, faire ce qu'on dit25
3.1.1 Osez dire : « je ne sais pas » Ça vous grandira !25
3.1.2 Définir ses priorités26
3.1.3 Franchise et engagement27
3.1.4 Communiquez, communiquez, communiquez28
3.2 Respect - L'art et la manière de dire non au big boss29
3.3 Cavern - TDD face à la glace31
3.4 Le bon état d'esprit - Vous êtes une start-up35
4. Agile, feedback en continu36
4.1 Rituels38
4.1.1 TDD, BDD, ATDD, CTDD38
4.1.2 Daily Stand Up38
4.1.3 Réunions rétrospectives39
4.2 Réflexes39
4.2.1 Releases périodiques et fréquentes39
4.2.2 Vision Client : Products Owners et utilisateurs40
4.2.3 Performances en préproduction40
4.3 Automatisation41
4.3.1 Pull Requests et revue de code41
4.3.2 Intégration et déploiement continu42
4.4 Outils42
4.4.1 Debug et profiling de Code42
4.4.2 Sondes à l'expérience utilisateur42
5. Outillage Craft et DX43
5.1 IDE - Environnement de développement intégré45
5.2 Encore plus d'outils59
5.3 Bonnes pratiques pro-DX62
6. Synthèse et exercices64
6.1 Takeaways64
6.2 Actions et exercices pratiques67
Chapitre 2
Savoir-faire
1. Introduction69
2. TDD, au-delà du DD70
2.1 Un cycle vertueux72
2.2 TU et l'ironie du coût75
2.3 Legacy : Refuse, Resist77
2.4 Chacun sa bible79
2.5 Bonnes pratiques et anti-patterns80
3. BDD, encore du DD81
3.1 Les origines [source]82
3.2 Communication, collaboration, documentation84
3.3 Ubiquitous Language, approche outillée87
3.3.1 Cucumber - Aslak Helles(...)y88
3.3.2 Jasmine - Pivotal Software89
3.3.3 Robot framework - Pekka Kläck, Janne Härkönen90
3.4 Quelques bons réflexes91
4. Agile Testing94
4.1 Agile Testing Manifesto96
4.2 Test en Agile, de la phase à l'activité97
4.3 Toast TK - Cultiver son ADN102
4.4 Quelques bons réflexes103
5. Performance et sécurité107
5.1 Security by design et by mindset109
5.2 Cybersécurité - Piratage éthique112
5.3 Performances116
5.3.1 Complexité algorithmique116
5.3.2 Gestion de mémoire118
5.3.3 Performances en JavaScript119
5.4 Performance orientée Monitoring et Programming patterns123
5.5 Quinze healthy checks126
6. Synthèse et exercices128
6.1 Takeaways128
6.2 Actions et exercices pratiques131
Chapitre 3
Savoir structurer
1. Introduction133
2. Gestion de la dette technique135
2.1 Codes smells les plus populaires - [wikipedia]137
2.2 Une affaire personnelle : c'est mieux quand ça sent bon !139
2.3 Une affaire d'équipe142
2.4 La quête aux KPI144
3. Initiation au DDD147
3.1 Un jargon commun149
3.2 Model - La base, le squelette, l'essence même151
3.3 Instance - Donner vie au model153
3.3.1 Instance omniprésent (Ubiquitous Language)154
3.3.2 Continuous Integration156
3.4 Layer - Séparer pour mieux régner156
3.4.1 Bounded context157
3.4.2 Modules157
3.4.3 Context map158
3.4.4 Shared kernel159
3.4.5 Anti-corruption layer159
3.4.6 Big Ball of Mud160
3.5 DDD à bon escient161
4. Architecture propre et solide162
4.1 Principes Solid - Martin Fowler et Robert C. Martin164
4.2 clean architecture172
4.3 Architecture Cloud : 12 facteurs de succès178
4.4 Architecture émergente : JiT, Dry, Yagni et Kiss182
5. Gestion du Legacy187
5.1 Les origines du mal189
5.2 La métaphore du toréador194
5.3 Avoir un plan et des roues196
5.4 Une histoire de trou noir200
5.5 Bonnes pratiques202
6. Synthèse et exercices204
6.1 Takeaways204
6.2 Actions et exercices pratiques205
Chapitre 4
Savoir penser
1. Introduction207
2. Veille techno. et non Vieille techno208
2.1 Veille active : open source, ami du caft210
2.2 Veille passive : à flux détendu212
2.3 Veille hybride : savoir s'entourer214
2.3.1 Où sont les experts ?214
2.3.2 Médias sociaux214
2.3.3 Meetups et conférences215
2.4 Un brin d'organisation216
3. Qui est Martin Fowler ?217
3.1 Jeff Bezos - Two-Pizzas219
3.2 Chris Richardson-MicroServices.io220
3.3 Greg Young-Event Sourcing et CQRS222
3.4 Michael Geers - Micro Frontends224
3.5 Martin Odersky - Scala225
3.6 Andrew Ng - Coursera et IA226
3.7 Martin Fowler - MartinFowler.com227
3.8 Ainsi que228
4. Chraftsmanship Thinking229
4.1 Design Thinking231
4.2 MVP - Minimum Viable Product237
4.3 MVP et DX - Developer Experience239
4.4 Pragmatisme et concentration - Keep Focus241
5. Think First, Act Last243
5.1 Une histoire de dette technique245
5.2 Une histoire d'APIfication du legacy248
5.3 Une histoire de MVP250
5.4 Une histoire de reconnaissance d'image251
6. Synthèse et exercices253
6.1 Takeaways253
6.2 Actions et exercices pratiques254
7. Bonus - Craft appliqué au Machine Learning255
7.1 Réglage de classificateur256
7.1.1 Métriques d'évaluation de classificateurs257
7.1.2 Gestion des collections258
7.2 Analyses difformes et classifications262
7.3 Distributions non uniformes263
7.4 Modes d'apprentissage267
Index271