"Ça y est ! C’est décidé ! Vous allez construire des applications de meilleure qualité. Vous êtes convaincu(e) que, pour cela, certaines pratiques de développement sont fondamentales comme par exemple les revues de code ou les tests automatisés.
Mais vos collègues n’en font pas. Ou vous-même, vous avez essayé, mais sans en faire systématiquement. Parce que « c’est trop cher on n’a pas le temps », « ça ne marchera pas chez nous »...
Après cette conférence, quand vous reviendrez sur votre plateau projet, vous aurez des éléments à essayer tout de suite. Et peut-être de quoi élaborer un plan de bataille pour que vous et votre équipe soyez fiers de votre code et ainsi conquérir le monde ! ;-)"
1. Sur le chemin de la qualité
Sur le chemin de la qualité : en
équipe et dès demain
Julien Jakubowski - @jak78
GDG Lille
2. 2Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Qui suis-je ?
Julien Jakubowski
Consultant-codeur
OCTO Nord
@jak78
3. 3Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Pourquoi cette conférence ?
@JeromeAvoustin & @superalienninja
4. 4Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
DISCLAIMERS
☉C’est mon vécu
☉Ca sera dur
☉Contexte :
> Equipe < 10 personnes colocalisée
> L’équipe souffre de la non-qualité
> Non applicable avec manager
intrusif
6. 6Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Attention à la condescendance
7. 7Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Adopter la bonne posture
☉Humilité, au service de l’équipe
☉Bien connaître ce que l’équipe veut
améliorer
> Ce que vous allez proposer ensuite doit
être aligné avec les objectifs de l’équipe
8. 8Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Un problème de qualité ?
☉A quoi on reconnaît une qualité de code
insuffisante ?
☉S’intéresser aux impacts de la non-qualité,
ce que tout le monde voit
9. 9Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Impacts de la non-qualité
☉Time to market plus long
☉Indisponibilités accrues
☉Désengagement des
développeurs
10. 10Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
"If you can not measure it, you can not improve it. »
- Lord Kelvin
11. 11Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Mesurer
☉Nombre d’anomalies par
fonctionnalités/User Story
☉Nombre d’anomalies
détectées avant une
MEP/une livraison
12. Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Phase d’observation et d’imitation – 1 semaine
☉Observer en binômant
☉Faire comme fait l’équipe
et taire ses réflexes
☉Récupérer des
symptômes et des dixits
13. Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Phase d’observation et d’imitation – symptômes
> Des commits le soir voire la nuit
> Une moyenne de 5 livrables par itération
> Nombre de bugs dans le backlog en augmentation
#DevoxxFR #TechLead @damienbeaufils
14. Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Phase d’observation et d’imitation – exemples de dixits
> « Le build est rouge mais c’est normal. Relance-le et ça devrait
passer »
> « Tester unitairement c’est compliqué sur le projet »
> « On reçoit tellement de mails de Jenkins qu’on ne les lit plus »
> « Hier j’ai passé mon après-midi à essayer de corriger le build »
#DevoxxFR #TechLead @damienbeaufils
15. Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Phase d’observation et d’imitation - buts
> Trouver les plus grosses douleurs
> Connaître ce qui a déjà été essayé et les
blocages rencontrés
#DevoxxFR #TechLead @damienbeaufils
16. Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Par où commencer ?
è Par ce qui peut résoudre des problèmes concrets
observés par l’équipe
Amélioration continue : petits pas
Git
TDD
Pair programming
Continuous integration Méthodes plus petites
BDD DDD
« ça marche sur ma machine pourtant »
Build plus rapide
Moins de couplage
Standards
Linter
Selenium
19. 19Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Management visuel
0
100
200
300
400
500
600
700
800
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Stock de bugs
20. 20Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Management visuel - exemples de board
21. Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Rétrospective
22. Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
L’appli a planté
23. 23Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
L’appli a planté – on va fixer…
Les utilisateurs n’ont plus accès à
l’application
Les requêtes plantent en
NullPointerException
La propriété nodeparams.country
est null.
è Pourquoi ?
è Pourquoi ?
è OK on va fixer
24. Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Un mois plus tard…
25. Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Ce qu’on aurait pu faire
Les utilisateurs n’ont plus accès à l’application Pourquoi ?
Les requêtes plantent en NullPointerException Pourquoi ?
La propriété nodeparams.country est null. Pourquoi ?
Elle n’a pas été précisée lors du déploiement Pourquoi ?
On l’a oublié Pourquoi ?
è Contre-mesure : l’ajouter dans la checklist de déploiement
26. Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
5 pourquoi et contre-mesure
Les clients ne reçoivent plus les devis par mail Pourquoi ?
Le worker n’envoie plus les mails Pourquoi ?
Le code échoue à parser une chaîne en date Pourquoi ?
La méthode send(String body, String
sendDate) a été appelée en inversant les
arguments
Pourquoi ?
Le développeur n’a pas eu de feedback sur cette
erreur
Pourquoi ?
L’argument sendDate n’est pas typé
èContre-mesure : donner un type Date à sendDate
èCode review ? Tests ? Standards de code ?
28. Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Comment j’ai introduit chaque pratique
☉En lien avec des problèmes observés
☉Exemplarité : je commence par me l’appliquer à moi-
même
☉Alliés, first-follower
☉Communication sur ce que je fais et sur les résultats
> Nb de défauts trouvés…
> « j’ai apprécié »
> Rétrospective
29. Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Pratiques collaboratives : souvent en premier
☉Exemples:
> Revues de code
> Pair programming
> Live-codings, dojos…
☉Pourquoi en premier ?
> Trouvent beaucoup de bugs
> Montrent ce qu’on fait de nouveau
30. Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
La revue de code
31. 31Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Trouver un maximum de défauts au plus tôtCoûtdecorrection
Correction en : dev recette production
32. 32Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Chez Raytheon
ROI de 4 pour 1
Chez CISCO : 50% de réduction des
défauts
Le R.O.I. de la revue de code
33. 33Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Le R.O.I. de la revue de code
34. 34Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Revue collective Revue par un pair Pair programming
Efficience (nombre
de défauts détectés)
Communication,
diffusion
Facilité de mise en
oeuvre
Avantages Plus d’impact sur la
qualité
Plus facile à
démarrer
Montrer les
pratiques
A
A
B B
B
C A B
Les formats de revue
A
35. 35Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
« oui mais pendant qu’on
revoit, on ne code pas, on perd
du temps »
Combien de défauts a-t-on évité
en contre-partie ? Combien de
temps prennent les défauts
« coder à 2 c’est aller 2x moins
vite »
On mesure ?
Moins de choses à revoir
« critiquer mon code, c’est me
critiquer moi »
Dur avec le code, doux avec les
gens
Revue de code et pair programming - objections
36. 36Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Dur avec le code, doux avec les gens
X Tu as fait une erreur
√ Il y a un bug quand on met une
chaîne vide
X Ton code c’est de la m*rde
√ Je vois une méthode de plus
de 30 lignes, ce n’est pas notre
standard
37. 37Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Dur avec le code, doux avec les gens
☉Je donne l’exemple
> Je commence par faire revoir mon code
> Je travaille mon feedback
☉Revue collective : puissant, mais peut être
intimidant au début
38. 38Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Mesures des revues
☉Nombre de défauts trouvés
☉Nombre de lignes revues
39. Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Pair programming, MOB programming, katas
☉Ce que ça a amélioré
> Nombre de retours en revue
> Partage de connaissances,
first-follower
☉Comment j’ai commencé
> Par des demandes d’aide
> Devenir une habitude
> Puis : MOB
40. Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Tests unitaires automatisés - pourquoi
☉Temps de tests manuels
☉Temps de debugging
☉Feedback rapide
☉Design du code
41. Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Tests unitaires automatisés – comment j’ai commencé
☉Montrer le geste TDD : plus facile avec un minimum de
pratiques collaboratives
☉Sur du code existant sans tests, on n’écrit pas de
tests sans raison
> Chaque bugfix est une opportunité
☉J’écris le code neuf systématiquement en TDD
42. 42Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
« écrire des tests, ça prend trop
de temps »
Combien de temps coûtent les bugs ?
Les tests et le debug manuels ?
« ça prend trop de temps
d’ajouter des tests sur tout le
code qu’on a déjà »
Oui, c’est vrai :
faire évol par évol / bugfix par bugfix
« mon code n’est pas testable » Techniques: livre "working effectively
with legacy code", katas…
Essayer en timebox
Tests unitaires automatisés – objections reçues
44. 44Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Gérer la motivation
☉Savourer les petites victoires
☉Observer les mesures
☉Se reposer sur les alliés
45. 45Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
Ecouter l’équipe
☉Respecter le rythme de l’équipe
> Observer comment elle intègre chaque pratique
> Constater l’impact
> Les résistances sont une information utile
☉Je n’ai pas le monopole des bonnes idées
> Le changement peut venir de chacun
46. 46Sur le chemin de la qualité – meetup Software Craftsmanship Lille – Julien Jakubowski
L’essentiel
Posture au service des objectifs de l’équipe
Amélioration à partir des problèmes observés
Ne pas se contenter de fixer un bug
Revue de code et pair programming FTW!
☉Pensez aux formations et accompagnement
☉Si le manager ne suit pas : vous m’invitez en BBL ;-)
☉Tenez-moi au courant de vos essais ! è @jak78