Chouette! Encore un bug!     Pascal Van Cauwenberghe
Bonjour              Donne des conseils              Programme              Gère des projets              Crée des Jeux   ...
CLAUSE DE NON-RESPONSABILITÉ
Clause de non-responsabilité• Cette présentation contient du code  – Sans garantie que ça compile• Cette présentation cont...
Based on true stories•   In different countries•   In different projects•   With different teams•   Using different (progr...
Chouette! Encore un bug!Comment passer toute la journée à   corriger un tout petit bug
Maman....D’où viennent les bugs?
Euh....Il était une fois un projet...
Contexte•   Société globale•   Grande application web•   Mission critical, 24/7•   Majeure source de revenue•   Premier pr...
Le ProjetL’applicationNOUS
Scene 1:Un développeur découvre un bug
Que faites vous quand on vous dit “J’ai trouvé un bug...” ?
MERCI!    MERCI !
Algoritme du code parfait1. TROUVER UN BUG2. DIRE “MERCI !”3. ......11. ...
MERCI!    MERCI !
Scene 2:Qu’est-ce qu’on fait ?
CECI N’EST PAS UN BUG
CECI EST UNE OPPORTUNITE
ASTUCES• Sans blâme• Personne n’est coupable• Attention au langage:  – “Excercice”, “Experiment”, “Apprendre”,    “Amélior...
Scene 3:    L’équipe fait uneRoot Cause Analysis (RCA)5 développeurs + architecte
“Le client a droit à unremboursement jusqu’au moment        de la livraison”
Qui voit le problème?boolean refundAllowed(Product product) {  Datetime delivery = Datetime.parse("yyyy-MM-dd“,  product.d...
MERCI!    MERCI !
On teste l’application• Livraison le 23/11/2012 à 16:00• Il est maintenant 22/11/2012 17:45• 22/11/2012 17:45 <= 23/11/201...
Let’s test the application• Livraison le 23/11/2012 à 16:00• Il est maintenant 22/11/2012 17:45• 22/11/2012 17:45 <= 23/11...
On teste l’application• Livraison le 22/11/2012 à 20:00• Il est maintenant 22/11/2012 17:45• 22/11/2012 17:45 <= 22/11/201...
Let’s test the application• Livraison le 22/11/2012 à 20:00• Il est maintenant 22/11/2012 17:45• 22/11/2012 17:45 <= 22/11...
Algoritme du code parfait1.   TROUVER UN BUG2.   DIRE “MERCI !”3.   REPRODUIRE LE PROBLEME4.   ...
Est-ce qu’on peut corriger le           code ?     C’est tout simple !
Algoritme du code parfait1.   TROUVER UN BUG2.   DIRE “MERCI !”3.   REPRODUIRE LE PROBLEME4.   AJOUTER (AU MOINS) UN TEST ...
Un nouveau testvoid testRefundGivenWhenDeliveryLaterToday() {Datetime now = DateTime.now ;String endofDay = now.strftime(“...
Un nouveau testvoid testRefundGivenWhenDeliveryLaterToday() {Datetime now = DateTime.now ;String endofDay = now.strftime(“...
Est-ce qu’on peut corriger le           code ?     C’est tout simple !
Enfin, on corrige le bugboolean refundAllowed(Product product) { Datetime delivery = Datetime.parse( "yyyy-MM-dd   HH:MM“,...
On relance le testvoid testRefundGivenWhenDeliveryLaterToday() {Datetime now = DateTime.now ;String endofDay = now.strftim...
Algoritme du code parfait1.   TROUVER UN BUG2.   DIRE “MERCI !”3.   REPRODUIRE LE PROBLEME4.   AJOUTER (AU MOINS) UN TEST ...
“Ce truc agile prendra beaucoup de tempssi on va faire ça pour tous les bugs !”“Oui, mais on a plus de confiance qu’on abi...
“On a vraiment suivi notre principe‘qualité sans compromis’.”
“On devrait contacter l’équipe responsablepour leur dire qu’on a corrigé le bug.”“Il y a peut-être déjà des réclamations p...
Astuce• Définir et afficher les valeurs de l’équipe• Maintenez un liste visible des actions  issues de la Root Cause Analy...
ON VA...• Contacter l’équipe dev responsable• Informer le service support client
Algoritme du code parfait1.   TROUVER UN BUG2.   DIRE “MERCI !”3.   REPRODUIRE LE PROBLEME4.   AJOUTER (AU MOINS) UN TEST ...
“Bon travail, les gars.”“Retournons au boulot!”
THE ENDEt ils vécurent heureux à tout jamais ...
C’est pas encore fini!
Scene 4:     Après la correctionLe testeur rejoint les développeurs           et l’architecte
Algoritme du code parfait1.   TROUVER UN BUG2.   DIRE “MERCI !”3.   REPRODUIRE LE PROBLEME4.   AJOUTER (AU MOINS) UN TEST ...
Comment améliorer nos tests?  Nous aurions dû trouver ce bug plus                  tôt
Comment améliorer nos tests?  Nous aurions dû allons trouver ce        genre de bug plus tôt
Comment améliorer nos tests?  Nous allons trouver ce genre de bug                plus tôt
Contexte (2)• L’application a presque 80% de couverture de  code avec des tests automatiques• Ce module a une couverture d...
Qui voit le problème ?void testRefundGiven() {  Product product = ...  product.deliveryAt(“2050-12-31 19:00”) ;    Busines...
MERCI!    MERCI !
Comment améliorer nos tests?• Il n’y a pas d’ ASSERT !  – Facile d’avoir 100% de couverture• Pourquoi 2050?  – Qu’est-ce q...
Pourquoi?• Développeurs ne savent pas comment tester  du code avec des dates (et des zones horaires)  – Beaucoup de tests ...
On va...• Contacter l’équipe de dev responsable• Informer le service support client• Ajouter des tests pour les dates, qui...
Développeurs: “On a encore beaucoup àapprendre”Architecte: “J’ai toujours eu des doutes ausujet des tests. Maintenant je s...
Testeur: “Si vous voulez, je peux vousaider à écrire des tests”
Creusons un peu ...    Pourquoi des tests sans ASSERT?• But: “augmenter la couverture par les tests  automatiques” au lieu...
On va...• Contacter l’équipe de dev responsable• Informer le service support client• Ajouter des tests pour les dates, qui...
Systems Thinking
Algoritme du code parfait1. TROUVER UN BUG2. DIRE “MERCI !”3. REPRODUIRE LE PROBLEME4. AJOUTER (AU MOINS) UN TEST QUI ECHO...
The EndEt ils vécurent heureux à tout jamais..   “On a beaucoup à apprendre”
I’m BACK !
Scene 5:     Après les testsUn bug n’arrive jamais seul...
Est-ce que ce bug est arrivé seul?
Cherchons dans le code...• 10 cas où on parse cette date  – 5 fois avec “yyyy-MM-dd HH:MM”  – 5 fois avec “yyyy-MM-dd”• Ch...
Qu’est-ce que vous dites ?
MERCI!    MERCI !
Encore une fois...
MERCI!    MERCI !
Algoritme du code parfait1.    TROUVER UN BUG2.    DIRE “MERCI !”3.    REPRODUIRE LE PROBLEME4.    AJOUTER (AU MOINS) UN T...
“Qualité sans compromis”. Facile à dire,difficile à faire“Ecrire les tests et corriger lesproblèmes devient de plus en plu...
Enfin, La Fin?Est-ce qu’on peut vivre heureux à    tout jamais, maintenant ?
C’est pas encore fini!
Est-ce que vous voyez encore un           problème?
MERCI!    MERCI !
Creusons un peu... Pourquoi est-ce qu’on a écrit ce bug?• On ne se rend pas compte qu’il y a une date +  temps• On a 10x l...
Améliorons Productclass Product {...  // Deprecated: Remove when obsolete  String deliveryAt() ;  // New: gradually refact...
Algoritme du code parfait1.    TROUVER UN BUG2.    DIRE “MERCI !”3.    REPRODUIRE LE PROBLEME4.    AJOUTER (AU MOINS) UN T...
Maman....D’ou viennent les strings?
L’application                                    ABCDEFGHIJKLMNO   ABCDEFGHIJKLMNO                                        ...
L’application (vision)                ABCDEFGHIJKLMNO                                    System AL’application            ...
On va...• Contacter l’équipe de dev responsable• Informer le service support client• Ajouter des tests pour les dates, qui...
GRAND REFACTORING
Proposition A3
Proposition A3          Description du problèmeAVANT                     APRESSTEPS:                    Visualisation1. .j...
ASTUCE• La proposition A3 reste visible pendant  toute la durée• Affichez l’A3 où on ne peut pas la  manquer• Limitez le n...
Scene 6:Acte Final
Qu’est-ce qui s’est passé?1. 7 membres de l’équipe + un coach ont passé   tout l’après-midi à corriger un bug de 6   carac...
Theory of Constraints    in a nutshell
Combien est-ce qu’ils livrent?                     Test &Analysis:   Dev:  20         10                     Deploy:      ...
Combien est-ce qu’ils livrent?                     Test &Analysis:   Dev:  20         10                     Deploy:      ...
Combien est-ce qu’ils livrent?                      Test & Analysis:   Dev:   20         10                      Deploy:  ...
Combien est-ce qu’ils livrent?                      Test & Analysis:   Dev:   20         10                      Deploy:  ...
Si on développe plus vite?                        Test & Analysis:     Dev:   20           20                        Deplo...
Aucun changement?                         Test & Analysis:       Dev:   20             20                         Deploy: ...
Le backlog se remplit!                            Test & Analysis:         Dev:   20               20                     ...
Est-ce qu’on peut faire mieux?                     Test & Analysis:   Dev:   20         10                     Deploy:    ...
Et si on allait plus lentement?                       Test & Analysis:    Dev:   20          8                       Deplo...
Et si on allait plus lentement?                       Test & Analysis:    Dev:   20          8                       Deplo...
Pourquoi écrire tant de stories?                    Test & Analysis:   Dev:   20         8                    Deploy:     ...
On fait moins             On livre plus                        Test &              Dev:                                  <...
The Bottleneck Game
Pour en savoir plus
Combien coûte la qualité?
PUB• Quand il n’y a plus de bugs...                     Appliquez IDD™ Irritation Driven Development®Contact me if you wan...
ASTUCES• Binomez avec le goulot d’étranglement• Marchez dans leurs souliers• Observez et notez les irritations  – Eliminez...
En Résumé
Algoritme du code parfait1.    TROUVER UN BUG2.    DIRE “MERCI !”3.    REPRODUIRE LE PROBLEME4.    AJOUTER (AU MOINS) UN T...
PARLONSRESPONSABILITÉ
Qu’allez vous faire demain pour    augmenter la qualité?         “Quality is Free”          Philip Crosby
Mais le plus important ...
MERCI!    MERCI !
LA FINEt ils vécurent heureux à tout jamais
SESSION FEEDBACK
Merci, Dank u, Thank you, Danke, Tak,Kiitos, Gracias, Grazie, Tack, Obrigado,          Arigatou Gozaimasu                 ...
Chouette! Encore un bug! Agile Tour 2012
Chouette! Encore un bug! Agile Tour 2012
Chouette! Encore un bug! Agile Tour 2012
Chouette! Encore un bug! Agile Tour 2012
Chouette! Encore un bug! Agile Tour 2012
Chouette! Encore un bug! Agile Tour 2012
Chouette! Encore un bug! Agile Tour 2012
Upcoming SlideShare
Loading in...5
×

Chouette! Encore un bug! Agile Tour 2012

998

Published on

A bug can be a learning opportunity

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
998
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide
  • Portia and Pascal introduce themselves by sharing a bit about their background.
  • Portia and Pascal introduce themselves by sharing a bit about their background.
  • Chouette! Encore un bug! Agile Tour 2012

    1. 1. Chouette! Encore un bug! Pascal Van Cauwenberghe
    2. 2. Bonjour Donne des conseils Programme Gère des projets Crée des Jeux Organise des ConférencesNAYIMAWe make play workwww.nayima.beblog.nayima.be
    3. 3. CLAUSE DE NON-RESPONSABILITÉ
    4. 4. Clause de non-responsabilité• Cette présentation contient du code – Sans garantie que ça compile• Cette présentation contient des insectes – A éviter pour les entomophobes
    5. 5. Based on true stories• In different countries• In different projects• With different teams• Using different (programming) languages
    6. 6. Chouette! Encore un bug!Comment passer toute la journée à corriger un tout petit bug
    7. 7. Maman....D’où viennent les bugs?
    8. 8. Euh....Il était une fois un projet...
    9. 9. Contexte• Société globale• Grande application web• Mission critical, 24/7• Majeure source de revenue• Premier projet Agile de l’équipe• Je les accompagne comme coach• Nous devons modifier et étendre une petite partie de l’application
    10. 10. Le ProjetL’applicationNOUS
    11. 11. Scene 1:Un développeur découvre un bug
    12. 12. Que faites vous quand on vous dit “J’ai trouvé un bug...” ?
    13. 13. MERCI! MERCI !
    14. 14. Algoritme du code parfait1. TROUVER UN BUG2. DIRE “MERCI !”3. ......11. ...
    15. 15. MERCI! MERCI !
    16. 16. Scene 2:Qu’est-ce qu’on fait ?
    17. 17. CECI N’EST PAS UN BUG
    18. 18. CECI EST UNE OPPORTUNITE
    19. 19. ASTUCES• Sans blâme• Personne n’est coupable• Attention au langage: – “Excercice”, “Experiment”, “Apprendre”, “Améliorer” – “Nous”, “Notre code”, “Notre problème”• Approche “Solution Focus”
    20. 20. Scene 3: L’équipe fait uneRoot Cause Analysis (RCA)5 développeurs + architecte
    21. 21. “Le client a droit à unremboursement jusqu’au moment de la livraison”
    22. 22. Qui voit le problème?boolean refundAllowed(Product product) { Datetime delivery = Datetime.parse("yyyy-MM-dd“, product.deliveryAt()); Datetime now = Datetime.now; return now <= delivery ;}
    23. 23. MERCI! MERCI !
    24. 24. On teste l’application• Livraison le 23/11/2012 à 16:00• Il est maintenant 22/11/2012 17:45• 22/11/2012 17:45 <= 23/11/2012 00:00 ?
    25. 25. Let’s test the application• Livraison le 23/11/2012 à 16:00• Il est maintenant 22/11/2012 17:45• 22/11/2012 17:45 <= 23/11/2012 00:00 ? Remboursement? OUI
    26. 26. On teste l’application• Livraison le 22/11/2012 à 20:00• Il est maintenant 22/11/2012 17:45• 22/11/2012 17:45 <= 22/11/2012 00:00 ?
    27. 27. Let’s test the application• Livraison le 22/11/2012 à 20:00• Il est maintenant 22/11/2012 17:45• 22/11/2012 17:45 <= 22/11/2012 00:00 ? Remboursement? NON
    28. 28. Algoritme du code parfait1. TROUVER UN BUG2. DIRE “MERCI !”3. REPRODUIRE LE PROBLEME4. ...
    29. 29. Est-ce qu’on peut corriger le code ? C’est tout simple !
    30. 30. Algoritme du code parfait1. TROUVER UN BUG2. DIRE “MERCI !”3. REPRODUIRE LE PROBLEME4. AJOUTER (AU MOINS) UN TEST QUI ECHOUE5. ...
    31. 31. Un nouveau testvoid testRefundGivenWhenDeliveryLaterToday() {Datetime now = DateTime.now ;String endofDay = now.strftime(“yyyy-MM-dd") + " 23:59" ;Product product = ...product.deliveryAt(endOfDay) ;BusinessRule businessRule = ...bool refund = businessRule.refundAllowed(product);assertTrue(refund,“Refund allowed until delivery, even on the day of delivery") ;}
    32. 32. Un nouveau testvoid testRefundGivenWhenDeliveryLaterToday() {Datetime now = DateTime.now ;String endofDay = now.strftime(“yyyy-MM-dd") + " 23:59" ;Product product = ...product.deliveryAt(endOfDay) ;BusinessRule businessRule = ...bool refund = businessRule.refundAllowed(product);assertTrue(refund,“Refund allowed until delivery, even on the day of delivery") ;}
    33. 33. Est-ce qu’on peut corriger le code ? C’est tout simple !
    34. 34. Enfin, on corrige le bugboolean refundAllowed(Product product) { Datetime delivery = Datetime.parse( "yyyy-MM-dd HH:MM“,product.deliveryAt()); Datetime now = Datetime.now; return now <= delivery ;}
    35. 35. On relance le testvoid testRefundGivenWhenDeliveryLaterToday() {Datetime now = DateTime.now ;String endofDay = now.strftime(“yyyy-MM-dd") + " 23:59" ;Product product = ...product.deliveryAt(endOfDay) ;BusinessRule businessRule = ...bool refund = businessRule.refundAllowed(product);assertTrue(refund,“Refund allowed until delivery, even on the day of delivery") ;}
    36. 36. Algoritme du code parfait1. TROUVER UN BUG2. DIRE “MERCI !”3. REPRODUIRE LE PROBLEME4. AJOUTER (AU MOINS) UN TEST QUI ECHOUE5. CORRIGER LE PROBLEME6. TOUS LES TESTS PASSENT7. ...
    37. 37. “Ce truc agile prendra beaucoup de tempssi on va faire ça pour tous les bugs !”“Oui, mais on a plus de confiance qu’on abien corrigé le bug et qu’on n’a pas casséautre chose.”
    38. 38. “On a vraiment suivi notre principe‘qualité sans compromis’.”
    39. 39. “On devrait contacter l’équipe responsablepour leur dire qu’on a corrigé le bug.”“Il y a peut-être déjà des réclamations parnos clients. On devrait informer les servicesupport client”
    40. 40. Astuce• Définir et afficher les valeurs de l’équipe• Maintenez un liste visible des actions issues de la Root Cause Analysis (RCA)• Langage: – “On devrait ...” => “On va ...”
    41. 41. ON VA...• Contacter l’équipe dev responsable• Informer le service support client
    42. 42. Algoritme du code parfait1. TROUVER UN BUG2. DIRE “MERCI !”3. REPRODUIRE LE PROBLEME4. AJOUTER (AU MOINS) UN TEST QUI ECHOUE5. CORRIGER LE PROBLEME6. TOUS LES TESTS PASSENT7. EXECUTER LES ACTIONS ISSUES DU RCA8. ...
    43. 43. “Bon travail, les gars.”“Retournons au boulot!”
    44. 44. THE ENDEt ils vécurent heureux à tout jamais ...
    45. 45. C’est pas encore fini!
    46. 46. Scene 4: Après la correctionLe testeur rejoint les développeurs et l’architecte
    47. 47. Algoritme du code parfait1. TROUVER UN BUG2. DIRE “MERCI !”3. REPRODUIRE LE PROBLEME4. AJOUTER (AU MOINS) UN TEST QUI ECHOUE5. CORRIGER LE PROBLEME6. TOUS LES TESTS PASSENT7. EXECUTER LES ACTIONS ISSUES DU RCA8. AMELIORER LES TESTS9. ...
    48. 48. Comment améliorer nos tests? Nous aurions dû trouver ce bug plus tôt
    49. 49. Comment améliorer nos tests? Nous aurions dû allons trouver ce genre de bug plus tôt
    50. 50. Comment améliorer nos tests? Nous allons trouver ce genre de bug plus tôt
    51. 51. Contexte (2)• L’application a presque 80% de couverture de code avec des tests automatiques• Ce module a une couverture de 100%• Mais contient (au moins) un bug• Pourquoi ?• Regardons les tests ...
    52. 52. Qui voit le problème ?void testRefundGiven() { Product product = ... product.deliveryAt(“2050-12-31 19:00”) ; BusinessRule businessRule = ... bool allowed = businessRule.refundAllowed(product)}
    53. 53. MERCI! MERCI !
    54. 54. Comment améliorer nos tests?• Il n’y a pas d’ ASSERT ! – Facile d’avoir 100% de couverture• Pourquoi 2050? – Qu’est-ce qui se passe le 1er janvier 2051?• Il faut au moins 4 tests – Livraison avant aujourd’hui – Livraison aujourd’hui avant maintenant – Livraison aujourd’hui après maintenant – Livraison après aujourd’hui
    55. 55. Pourquoi?• Développeurs ne savent pas comment tester du code avec des dates (et des zones horaires) – Beaucoup de tests avec des dates en 2050• Peu de développeurs avec de l’experience en tests unitaires• Coaching Agile dans le passé ne contenait pas de formation technique
    56. 56. On va...• Contacter l’équipe de dev responsable• Informer le service support client• Ajouter des tests pour les dates, qui peuvent servir comme exemple• Montrer nos exemples aux autres équipes
    57. 57. Développeurs: “On a encore beaucoup àapprendre”Architecte: “J’ai toujours eu des doutes ausujet des tests. Maintenant je saispourquoi.”
    58. 58. Testeur: “Si vous voulez, je peux vousaider à écrire des tests”
    59. 59. Creusons un peu ... Pourquoi des tests sans ASSERT?• But: “augmenter la couverture par les tests automatiques” au lieu de “augmenter la qualit锕 Pression pour livrer des fonctionnalités• Peu d’experience en testing• TEST LAST au lieu de TEST FIRST• Pas de formation ou coaching sur les aspects techniques Agile• Peu de coaches avec de l’experience technique
    60. 60. On va...• Contacter l’équipe de dev responsable• Informer le service support client• Ajouter des tests pour les dates, qui peuvent servir comme exemple• Montrer nos exemples aux autres équipes• Appliquer le TDD en binôme avec le coach et le testeur• Ajouter « Manque de coaching technique » à la liste des risques du coach meeting
    61. 61. Systems Thinking
    62. 62. Algoritme du code parfait1. TROUVER UN BUG2. DIRE “MERCI !”3. REPRODUIRE LE PROBLEME4. AJOUTER (AU MOINS) UN TEST QUI ECHOUE5. CORRIGER LE PROBLEME6. TOUS LES TESTS PASSENT7. EXECUTER LES ACTIONS ISSUES DU RCA8. AMELIORER LES TESTS9. AMELIORER LA FACON D’ECRIRE LES TESTS10. ...
    63. 63. The EndEt ils vécurent heureux à tout jamais.. “On a beaucoup à apprendre”
    64. 64. I’m BACK !
    65. 65. Scene 5: Après les testsUn bug n’arrive jamais seul...
    66. 66. Est-ce que ce bug est arrivé seul?
    67. 67. Cherchons dans le code...• 10 cas où on parse cette date – 5 fois avec “yyyy-MM-dd HH:MM” – 5 fois avec “yyyy-MM-dd”• Chaque développeur analyse un cas• Résultat: deux bugs en plus
    68. 68. Qu’est-ce que vous dites ?
    69. 69. MERCI! MERCI !
    70. 70. Encore une fois...
    71. 71. MERCI! MERCI !
    72. 72. Algoritme du code parfait1. TROUVER UN BUG2. DIRE “MERCI !”3. REPRODUIRE LE PROBLEME4. AJOUTER (AU MOINS) UN TEST QUI ECHOUE5. CORRIGER LE PROBLEME6. TOUS LES TESTS PASSENT7. EXECUTER LES ACTIONS ISSUES DU RCA8. AMELIORER LES TESTS9. AMELIORER LA FACON D’ECRIRE LES TESTS10. RECHERCHER DES PROBLEMES SIMILAIRES. GOTO 211. ...
    73. 73. “Qualité sans compromis”. Facile à dire,difficile à faire“Ecrire les tests et corriger lesproblèmes devient de plus en plus de laroutine. Ca va de plus en plus vite.”
    74. 74. Enfin, La Fin?Est-ce qu’on peut vivre heureux à tout jamais, maintenant ?
    75. 75. C’est pas encore fini!
    76. 76. Est-ce que vous voyez encore un problème?
    77. 77. MERCI! MERCI !
    78. 78. Creusons un peu... Pourquoi est-ce qu’on a écrit ce bug?• On ne se rend pas compte qu’il y a une date + temps• On a 10x le même code de parsing• => 10 opportunités pour des erreurs• Enlevons la duplication
    79. 79. Améliorons Productclass Product {... // Deprecated: Remove when obsolete String deliveryAt() ; // New: gradually refactor all clients DateTime deliveryAtDateTime() ;...}From “stringly typed” to “strongly typed”
    80. 80. Algoritme du code parfait1. TROUVER UN BUG2. DIRE “MERCI !”3. REPRODUIRE LE PROBLEME4. AJOUTER (AU MOINS) UN TEST QUI ECHOUE5. CORRIGER LE PROBLEME6. TOUS LES TESTS PASSENT7. EXECUTER LES ACTIONS ISSUES DU RCA8. AMELIORER LES TESTS9. AMELIORER LA FACON D’ECRIRE LES TESTS10. RECHERCHER DES PROBLEMES SIMILAIRES. GOTO 211. RENDRE IMPOSSIBLE DE REFAIRE LA MEME ERREUR
    81. 81. Maman....D’ou viennent les strings?
    82. 82. L’application ABCDEFGHIJKLMNO ABCDEFGHIJKLMNO System AABCDEFGHIJKLMNO ABCDEFGHIJKLMNO Application ABCDEFGHIJKLMNO ABCDEFGHIJKLMNO ABCDEFGHIJKLMNO ABCDEFGHIJKLMNO System B
    83. 83. L’application (vision) ABCDEFGHIJKLMNO System AL’application ABCDEFGHIJKLMNO System B
    84. 84. On va...• Contacter l’équipe de dev responsable• Informer le service support client• Ajouter des tests pour les dates, qui peuvent servir comme exemple• Montrer nos exemples aux autres équipes• Appliquer le TDD en binôme avec le coach et le testeur• Ajouter « Manque de coaching technique » à la liste des risques du coach meeting• Encapsuler les données qui viennent de l’exterieur
    85. 85. GRAND REFACTORING
    86. 86. Proposition A3
    87. 87. Proposition A3 Description du problèmeAVANT APRESSTEPS: Visualisation1. .jdlkjds2. Kmlkdmlkd3. Dkqjdlkjds4. Sqkjlkdlksqmk5. BEER !
    88. 88. ASTUCE• La proposition A3 reste visible pendant toute la durée• Affichez l’A3 où on ne peut pas la manquer• Limitez le nombre de propositions A3
    89. 89. Scene 6:Acte Final
    90. 90. Qu’est-ce qui s’est passé?1. 7 membres de l’équipe + un coach ont passé tout l’après-midi à corriger un bug de 6 caractères. Est-ce raisonable?2. On a trouvé beaucoup moins de bugs que dans les projets “normaux”? Y a-t-il un lien?3. Le projet a été livré en 5 mois au lieu de 8. Comment peut-on finir plus vite en allant plus lentement?
    91. 91. Theory of Constraints in a nutshell
    92. 92. Combien est-ce qu’ils livrent? Test &Analysis: Dev: 20 10 Deploy: 15 ???
    93. 93. Combien est-ce qu’ils livrent? Test &Analysis: Dev: 20 10 Deploy: 15 <= 10
    94. 94. Combien est-ce qu’ils livrent? Test & Analysis: Dev: 20 10 Deploy: 15 ???Analysis: Dev: 10 12
    95. 95. Combien est-ce qu’ils livrent? Test & Analysis: Dev: 20 10 Deploy: 15 <= 15Analysis: Dev: 10 12
    96. 96. Si on développe plus vite? Test & Analysis: Dev: 20 20 Deploy: 15 ???Analysis: Dev: 10 12
    97. 97. Aucun changement? Test & Analysis: Dev: 20 20 Deploy: 15 <= 15Analysis: Dev: 10 12
    98. 98. Le backlog se remplit! Test & Analysis: Dev: 20 20 Deploy: 15 < 15Analysis: Dev: 10 12
    99. 99. Est-ce qu’on peut faire mieux? Test & Analysis: Dev: 20 10 Deploy: 15 <= 15Analysis: Dev: 10 12
    100. 100. Et si on allait plus lentement? Test & Analysis: Dev: 20 8 Deploy: 15 <= 15Analysis: Dev: 10 12
    101. 101. Et si on allait plus lentement? Test & Analysis: Dev: 20 8 Deploy: 17 <= 17Analysis: Dev: 10 12
    102. 102. Pourquoi écrire tant de stories? Test & Analysis: Dev: 20 8 Deploy: 17 <= 17Analysis: Dev: 10 12
    103. 103. On fait moins On livre plus Test & Dev: <= 17 Analysis: 10 Deploy: 8 17Analysis: Dev: 10 12
    104. 104. The Bottleneck Game
    105. 105. Pour en savoir plus
    106. 106. Combien coûte la qualité?
    107. 107. PUB• Quand il n’y a plus de bugs... Appliquez IDD™ Irritation Driven Development®Contact me if you want to become a Certifiable Irritating Person
    108. 108. ASTUCES• Binomez avec le goulot d’étranglement• Marchez dans leurs souliers• Observez et notez les irritations – Eliminez les irritations, sans fanfare• Exemple: installation dev-ops
    109. 109. En Résumé
    110. 110. Algoritme du code parfait1. TROUVER UN BUG2. DIRE “MERCI !”3. REPRODUIRE LE PROBLEME4. AJOUTER (AU MOINS) UN TEST QUI ECHOUE5. CORRIGER LE PROBLEME6. TOUS LES TESTS PASSENT7. EXECUTER LES ACTIONS ISSUES DU RCA8. AMELIORER LES TESTS9. AMELIORER LA FACON D’ECRIRE LES TESTS10. RECHERCHER DES PROBLEMES SIMILAIRES. GOTO 211. RENDRE IMPOSSIBLE DE REFAIRE LA MEME ERREUR
    111. 111. PARLONSRESPONSABILITÉ
    112. 112. Qu’allez vous faire demain pour augmenter la qualité? “Quality is Free” Philip Crosby
    113. 113. Mais le plus important ...
    114. 114. MERCI! MERCI !
    115. 115. LA FINEt ils vécurent heureux à tout jamais
    116. 116. SESSION FEEDBACK
    117. 117. Merci, Dank u, Thank you, Danke, Tak,Kiitos, Gracias, Grazie, Tack, Obrigado, Arigatou Gozaimasu Donne des conseils Programme Gère des projets Crée des Jeux Organise des conférences NAYIMA We make play work http://www.nayima.be http://www.agilecoach.net

    ×