3. PRINCIPE
Itération 1 heure
Nouvelles contraintes par itération
Sortir de sa zone de confort
Vous n’êtes pas au boulot
C’est un lieu d’apprentissage avant tout
Amusez vous!
4. ITÉRATION 1
•Pas de Pair Programming
•Pas de TU
Mais…
•Un livre surprise à gagner pour le premier!
6. ITÉRATION 1.1
DNA Kata, la biotech du futur!
•Supprimer toutes les lettres qui ne sont pas des paires
de bases valides
•Ne pas utiliser de librairies tierces ou natives de manipulation
de chaînes pour des raisons "évidentes" de sécurité et de
performance (dixit le CTO)
8. ITÉRATION 1.2
•Supprimer toutes les lettres qui ne sont pas des paires de
bases valide
•Inversion de la séquence ADN si la première ligne du
fichier est «reverse »
10. ITÉRATION 1.3
•Supprimer toutes les lettres qui ne sont pas des paires de
bases valide
•Inversion de la séquence ADN si la première ligne du fichier
est «reverse »
•Compter le nombre d’apparition d’un fragment voulu si
la 1ere ligne est « count fragmentVoulu »
12. ITÉRATION 1.4
•Supprimer toutes les lettres qui ne sont pas des paires de bases
valide
•Inversion de la séquence ADN si la première ligne du fichier est
«reverse »
•Compter le nombre d’apparition d’un fragment voulu si la 1ere
ligne est « count fragmentVoulu »
•Insérer un fragment voulu si la 1ere ligne est « insert
fragmentVoulu positionInsertion »
14. ITÉRATION 1.5
•Supprimer toutes les lettres qui ne sont pas des paires de
bases valide
•Inversion de la séquence ADN si la première ligne du fichier
est «reverse »
•Compter le nombre d’apparition d’un fragment voulu si la
1ere ligne est « count fragmentVoulu »
•Ne pas utiliser de librairies tierces ou natives de manipulation
de chaînes pour des raisons "évidentes" de sécurité et de
performance (dixit le CTO)
•Insérer un fragment voulu si la 1ere ligne est « insert
fragmentVoulu positionInsertion »
•Compléter la séquence si la 1ere ligne est « complete »
16. ITÉRATION 1.6
•Supprimer toutes les lettres qui ne sont pas des paires de
bases valide
•Inversion de la séquence ADN si la première ligne du fichier
est «reverse »
•Compter le nombre d’apparition d’un fragment voulu si la
1ere ligne est « count fragmentVoulu »
•Ne pas utiliser de librairies tierces ou natives de manipulation
de chaînes pour des raisons "évidentes" de sécurité et de
performance (dixit le CTO)
•Insérer un fragment voulu si la 1ere ligne est « insert
fragmentVoulu positionInsertion »
•Compléter la séquence si la 1ere ligne est « complete »
•Insérer un tag si la 1ere ligne est « tag tagContent
fragmentToTag »
18. ITÉRATION 1 RÉTRO TIME
•Quel est le sujet de ce code retreat ?
•Et le gagnant est ?
•On ne jette pas le code !
19. ITÉRATION 1 OBJECTIF
•Générer du code legacy :
« Du code legacy est du code qui n’est pas couvert par des tests
unitaires » - Michael Feathers
•Contexte entrainant du mauvais code:
•Enjeu court-termiste
•Pression plus ou moins positive
•Isolation
20. ITÉRATION 2 INTRO
•On a bien joué a être au travail
•Maintenant prenons le temps de progresser pour de vrai
22. ITÉRATION 2
•Plusieurs commandes peuvent se cumuler (A traiter par
ordre d’apparition dans le fichier)
•Le fichier input peut contenir une séquence simple ou
complète
•Ajouter 2 lettres X et Y
(http://www.maxisciences.com/adn/adn-des-chercheurs-creent-
deux-nouvelles-lettres-dans-l-039-alphabet-du-
vivant_art32558.html)
•Ajouter la commande « simple » qui converti une séquence
double en séquence simple
•Ajouter la commande « noSynthetic » qui supprime les
paire de base X et Y
25. ITÉRATION 3 INTRO
Rappel 1: SOLID
simple Responsibility
Open Close
Liskov Substitution Principle
Interface Segregation
Dependency Inversion
26. ITÉRATION 3 INTRO
Rappel 2: 4 rules of simple design (Kent Beck)
Passes its tests
Minimizes duplication
Maximizes clarity
Has fewer elements
27. ITÉRATION 3
•Travail en pair obligatoire
•Changement de pilote toutes les 5 min
•Supprimer toutes dépendances implicites
28. ITÉRATION 3
•Plusieurs commandes peuvent se cumuler (A traiter par
ordre d’apparition dans le fichier)
•Le fichier input peut contenir une séquence simple ou
complète
•Ajouter 2 lettres X et Y
(http://www.maxisciences.com/adn/adn-des-chercheurs-creent-
deux-nouvelles-lettres-dans-l-039-alphabet-du-
vivant_art32558.html)
•Ajouter la commande « simple » qui convertit une
séquence double en séquence simple
•Ajouter la commande « noSynthetic » qui supprime les
paire de base X et Y
29. ITÉRATION 3 RÉTRO TIME
•Quelle différence quand on travail en paire ?
30. ITÉRATION 3 OBJECTIF
•Sensibiliser à l’importance d’une paire quand on modifie du
code non testé
•Identifier le fait que du code non testé est souvent fortement
couplé (dépandances implicites)
•On test avant ou après avoir supprimer ces dépandances?
31. ITÉRATION 4
•Modification de code seulement si couvert par un TU
•Changement de pilotes en ping pong Test
•Ne pas travailler sur votre code
•Travail en paire obligatoire
•Supprimer toutes dépendances implicites
32. ITÉRATION 4
•Plusieurs commandes peuvent se cumuler (A traiter par
ordre d’apparition dans le fichier)
•Le fichier input peut contenir une séquence simple ou
complète
•Ajouter 2 lettres X et Y
(http://www.maxisciences.com/adn/adn-des-chercheurs-creent-
deux-nouvelles-lettres-dans-l-039-alphabet-du-
vivant_art32558.html)
•Ajouter la commande « simple » qui converti une séquence
double en séquence simple
•Ajouter la commande « noSynthetic » qui supprime les
paire de base X et Y
33. ITÉRATION 4 RETRO TIME
•Est-ce que le test fait gagner :
•En temps ?
•En qualité ?
•En assurance ?
35. ITÉRATION 5
•Pas de if ni de switch en dehors de Factory
•Pas de mutation d'objet
•Modification de code seulement si couvert par un TU
•Changement de pilotes en ping pong Test
•Travail en paire obligatoire
•Supprimer toutes dépendances implicites
36. ITÉRATION 5 RETRO TIME
•C’est quoi la POO ?
•C’est quoi la programmation fonctionnelle ?
40. CONCLUSION
•Le legacy ce n’est pas juste le code des autres
•Vision court termiste vs maintenance à long terme
•Comment gérer du code legacy ?
•Commencer dès demain par ne plus en produire !