Proprement codeur
Code de conduite pour développeurs professionnels
Robert C. Martin
Olivier Engler
Pearson
Dédicace
III
Avant-propos
XI
Préface
XVII
À propos de ce livreXX
BibliographieXX
Remerciements
XXI
À propos de l'auteur
XXV
Image de couverture
XXVII
Introduction incontournable
1
Chapitre 1 : Professionnalisme7
Droits et devoirs8
Prendre ses responsabilités8
D'abord, ne pas nuire10
Ne pas nuire à la fonction11
Ne pas nuire à la structure13
Éthique professionnelle15
Connaissez vos classiques16
Apprentissage continu17
Bibliographie20
Chapitre 2 : Savoir dire non21
Rôles opposés24
Chercher les raisons ou pas ?26
De l'importance des enjeux26
Agir dans un esprit d'équipe28
Essayer ?29
Agressivité passive31
Le coût du oui33
Peut-on livrer du bon code (par John Blanco) ?33
Le bon code est-il impossible ?38
Chapitre 3 : Savoir dire oui41
Le langage de l'engagement (par Roy Osherove)43
Apprendre à dire oui47
Essayer, ce n'est pas l'adopter47
Conclusion50
Chapitre 4 : Coder51
Préparation52
Le codage de fin de nuit nuit53
Code et problèmes54
L'état de grâce et la zone du flow55
Accompagnement musical56
L'angoisse de la feuille blanche57
Inspiration créative58
Débogage59
Temps passé au débogage61
Prendre soin de soi62
Savoir faire une pause62
Le chemin du retour63
La douche régénérante63
Être en retard63
Espoirs et voeux pieux63
Courir pour mal finir64
Heures supplémentaires64
Livraisons frauduleuses65
Un « fini » clairement indéfini65
Donner et recevoir de l'aide66
Aider les autres66
Recevoir de l'aide66
Monitorat67
Bibliographie68
Chapitre 5 : Développement dirigé par les tests ou TDD69
Le verdict est tombé71
Les trois lois de TDD71
Une galerie de bénéfices72
Ce que TDD n'est pas75
Bibliographie76
Chapitre 6 : Entraînement77
Entraînement du développeur : un peu d'histoire78
À la puissance 22 !79
Le temps de cycle79
Le dojo du codage81
Kata82
Waza83
Randori83
Extension du domaine de l'expérience84
Conclusion85
Bibliographie85
Chapitre 7 : Tests d'acceptation et recette87
Communication et exigences87
Précision prématurée89
Ambiguïté tardive90
Tests d'acceptation92
La définition d'achèvement, « définition of done »92
Communication95
Automatisation95
Supplément de travail97
Rédaction des tests : par qui et quand ?97
Rôle du développeur98
Négociation et agression passive99
Tests d'acceptation et tests unitaires100
Interface graphique et autres complications101
Intégration continue102
Arrêtez tout !102
Conclusion103
Chapitre 8 : Stratégies de test105
L'assurance qualité doit être bredouille106
L'assurance qualité fait partie de l'équipe106
La pyramide de l'automatisation des tests107
Tests unitaires107
Test des composants108
Tests d'intégration109
Tests système110
Tests manuels d'exploration110
Conclusion111
Bibliographie111
Chapitre 9 : Gestion du temps113
Réunions114
Décliner l'invitation115
Écourter sa présence115
Avoir un ordre du jour et un objectif116
Les réunions debout (stand-up)116
Les réunions de planification d'itération116
La rétrospective d'itération et la démonstration117
Disputes et désaccords117
Mana et énergie de concentration118
Sommeil119
Caféine119
Rechargement de mana119
Concentration physique120
Inspiration et expiration créative120
Blocs de temps et chronotomates120
Stratégies d'évitement121
Inversion de priorités121
Impasses et marche arrière122
Marécages, bourbiers et autres bazars122
Conclusion123
Chapitre 10 : Estimations125
Qu'est-ce qu'une estimation ?127
Un engagement128
Une hypothèse128
Engagement implicite130
La technique PERT131
Techniques d'estimation des tâches134
Estimation de Delphes à large bande134
Les doigts de vote134
Le planning poker135
Estimation d'affinités135
Estimation trivariée136
La loi des grands nombres136
Conclusion137
Bibliographie137
Chapitre 11 : Pression139
Éviter la pression141
Engagement141
Rester propre142
Discipline en temps de crise142
Gérer la pression143
Ne paniquez pas143
Communiquez143
Appuyez-vous sur vos règles143
Demandez de l'aide144
Conclusion144
Chapitre 12 : Collaboration et coopération145
Programmeurs et autres humains147
Les programmeurs et les employeurs147
Les programmeurs contre les programmeurs150
Frottement de cervelets152
Conclusion153
Chapitre 13 : Équipes et projets155
Faire prendre l'émulsion156
Une équipe soudée156
Comment gérer tout cela ?157
Le dilemme du maître d'ouvrage ou du Project Owner158
Conclusion159
Bibliographie159
Chapitre 14 : Guides, apprentis et artisans161
Des diplômes aux multiples lacunes ?162
Guides et moniteurs162
Mon premier ordinateur : le Digi-Comp163
L'ECP-18 du lycée164
Formations non conventionnelles167
Souffrir pour apprendre168
Apprentissage169
Apprentissage logiciel170
Maître programmeur170
Compagnon programmeur171
Apprenti et stagiaire171
Le principe de réalité172
Artisanat172
Convaincre les personnes172
Conclusion173
Annexe : Outillage175
Une sélection d'outils177
Contrôle de version du code source177
Système de contrôle du source « d'entreprise »177
Verrouillage pessimiste ou optimiste178
CVS/SDN179
Arbre et branches179
git179
Éditeur et environnement de développement EDI182
L'éditeur vi182
L'éditeur Emacs182
Eclipse et IntelliJ183
TextMate183
Suivi des problèmes184
Nombre de bogues actifs184
Construction continue185
Outils de tests unitaires185
Outils de test de composants186
La définition d'achèvement (definition of done)186
FitNesse187
Autres outils de test de composants187
Outil de tests d'intégration188
Outils de modélisation UML/MDA188
Les détails qui tuent189
Rien de nouveau sous le soleil190
Conclusion191
Index
193