@cpoissonnier
Découvrir des bonnes pratiques du génie logiciel
Mike Bowler
@mike_bowler
Bryan Beecham
@BillyGarnet
Isabelle Blaquez
@iblaquez
Alice Barralon
@a_barralon
distribué sous licence Creative Commons CC BY-NC-SA
Ces slides sont très largement inspirées par leur travail, merci à elles !
En tant qu’aspirants Artisans du Logiciel, nous relevons le niveau du développement professionnel de logiciels par la pratique et en aidant les autres à acquérir le savoir-faire. Grâce à ce travail, nous avons appris à apprécier
It’s a lifestyle where developers choose to be responsible for their own careers and for improving their craft, constantly learning new tools and techniques. Software Craftsmanship is all about putting responsibility, professionalism, pragmatism and pride back into software development
Sandro Mancuso - The Software Craftsman : Professionalism, Pragmatism, Pride
Est-ce que le paillasson amène de la valeur ?
Si chaque picot coûte 1000€, est-ce que ça aurait influencé votre design ?
Introducing abstractions early, with no justification other than “we may need it in the future,” is what makes applications so complicated.
Sandro Mancuso - The Software Craftsman : Professionalism, Pragmatism, Pride
Quelques éléments de réponse :
Chaque nouveau projet vide est un programme parfait
Chaque ajout de code nous éloigne de cet idéal
A nous de nous efforcer à tout mettre en œuvre pour atteindre cet idéal
(tant que les besoins exprimés ne disent pas le contraire)
Fast
Isolated
Repeatable
Self-verifying
Timely
Un refactoring consiste à changer la structure interne d'un logiciel sans en changer son comportement observable
- Martin Fowler
Clean code that works
- Ron Jeffries
Une nouvelle exigence toutes les 30 secondes
Pas de refactoring (deux briques assemblées ne pourront pas être séparées)
Je suis un client sympa ... Je vous donne le double du temps !
Une nouvelle exigence toutes les 30 secondes
Refactoring autorisé
C'est le choix d'emprunter du temps (pour corriger un bug à l'arrache), que l'on devra "rembourser", avec des intérêts .
Si on emprunte trop, le projet n'évoluera plus, et on voudra tout réécrire
L'absence de dette technique permet donc d'aller plus vite, et surtout d'aller plus loin
Always leave the code behind
in a better state than you found it
Un défaut/mauvaise pratique dans le code a toujours tendance se répandre dans la base de code
Ah, c'est comme ça qu'on fait ? C'est pourri, mais ok, je vais faire pareil
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live
(Ça s'appelle l'empathie et le professionnalisme en fait)
Deux rôles : pilote & co-pilote
Le rôle change à chaque itération (ping pong pair-programming)
1.
Co-pilote écrit un test qui apporte de la valeur sur un post-it
2.
Le pilote construit le minimum pour faire passer le test
3.
Refactoring jusqu'à ce qu'on ait une implémentation satisfaisante
Personne
Animal
Plante
Véhicule
Batiment
...
Existe-t-il une personne dans le programme ?
Existe-t-il une maison dans programme ?
La maison est plus haute que la personne ?
La maison est plus large que la personne ?
La maison a au moins 4 briques de haut ?
La personne peut entrer dans la maison ?
La maison a une cheminée ?
La personne a deux bras ?
Chaque équipe (6-8 personnes) travaillent ensemble sur une table
Grande construction complexe, composée de petites constructions indépendantes et différentes liées entre elles (zoo, aéroport, parc d'attraction, ...)
Backlog produit : quelques minutes pour identifier quelques composants à construire
Implémentation : chaque pair construit un composant en TDD puis intègre sa construction au sein du grand projet (au centre de la table)