Great! We found a bug!    Pascal Van Cauwenberghe
Hello              Consults              Programs              Manages projects              Creates Games              Or...
SAFETY WARNING
Safety Warning• This presentation contains code  – No guarantee that it actually compiles• This presentation may contain b...
Based on true stories•   In different countries•   In different projects•   With different teams•   Using different (progr...
Great! Another bug!Or how to spend all day with the whole        team to fix a tiny bug
Mummy....Where do bugs come from?
Well.... Once upon a timethere was a project
Context•   Global company•   Large public web application•   Mission critical, 24/7•   Major revenue source for the compan...
The projectThe application  US
Scene 1:a developer spots a bug
How do you react when someone   says “I’ve found a bug” ?
MERCI!    Thank You!
11 steps to perfect code1. SPOT A PROBLEM2. THANK THE REPORTER3. ...
MERCI!    Thank You!
Scene 2:What do we do now?
THIS IS NOT A BUG
THIS IS AN OPPORTUNITY
TIPS• Never BLAME• No need to find the “guilty”• Watch your language:  – “Exercise”, “Experiment”, “Learn”, “Improve”  – “...
Scene 3:The team performs a Root Cause Analysis5 developers + architect
Business rule:“The customer can ask for a refund          until delivery”
Who can spot the problem?boolean refundAllowed(Product product) {  Datetime now = Datetime.now;    Datetime final = Dateti...
MERCI!    Thank You!
Let’s test the application• Delivery on 27/10/2012 at 16:00• It is now 26/10/2012 10:20• 26/10/2012 10:20 <= 27/10/2012 00...
Let’s test the application• Delivery on 27/10/2012 at 16:00• It is now 26/10/2012 10:20• 26/10/2012 10:20 <= 27/10/2012 00...
Let’s test the application• Delivery on 26/10/2012 at 16:00• It is now 26/10/2012 10:20• 26/10/2012 10:20 <= 26/10/2012 00...
Let’s test the application• Delivery on 26/10/2012 at 16:00• It is now 26/10/2012 10:20• 26/10/2012 10:20 <= 26/10/2012 00...
11 steps to perfect code1.   SPOT A PROBLEM2.   THANK THE REPORTER3.   REPRODUCE THE PROBLEM4.   ...
Can we fix the bug?The fix is really simple!
11 steps to perfect code1.   SPOT A PROBLEM2.   THANK THE REPORTER3.   REPRODUCE THE PROBLEM4.   ADD (AT LEAST) ONE FAILIN...
A new testvoid testRefundGivenWhenDeliveryLaterToday() {Datetime now = DateTime.now ;String endofDay = now.strftime(“yyyy-...
A new testvoid testRefundGivenWhenDeliveryLaterToday() {Datetime now = DateTime.now ;String endofDay = now.strftime(“yyyy-...
Can we fix the bug?The fix is really simple!
We finally fix the bugboolean refundAllowed(Product product) {  Datetime now = Datetime.now;    Datetime final = Datetime....
Rerun the testvoid testRefundGivenWhenDeliveryLaterToday() {Datetime now = DateTime.now ;String endofDay = now.strftime(“y...
11 steps to perfect code1.   SPOT A PROBLEM2.   THANK THE REPORTER3.   REPRODUCE THE PROBLEM4.   ADD (AT LEAST) ONE FAILIN...
“This agile thing is going to be very slow ifwe do this for every bug!”“Yes, but at least now we have someconfidence that ...
“We’ve really applied our team value of‘quality without compromise’. We tookthe time to do it right, even if nocustomer ha...
“We should contact the team that’s responsible forthis code and inform them of our correction.”“There may have been custom...
TIPS• Define and make the team values visible  at all times• Keep a list of things to do after the Root  Cause Analysis (R...
WE WILL...• Contact the development team responsible  for this code• Inform the customer support team
11 steps to perfect code1.   SPOT A PROBLEM2.   THANK THE REPORTER3.   REPRODUCE THE PROBLEM4.   ADD (AT LEAST) ONE FAILIN...
“GOOD JOB!”“Now, back to work!”
THE ENDAnd they lived happily ever after...
It’s not over yet!
Scene 4:         After the fixThe tester joins the developers and              architect
11 steps to perfect code1.   SPOT A PROBLEM2.   THANK THE REPORTER3.   REPRODUCE THE PROBLEM4.   ADD (AT LEAST) ONE FAILIN...
How can we improve our tests?    We should have found this bug               sooner
How can we improve our tests?  We should have will fouind this type            of bug sooner
How can we improve our tests?  We will find this type of bug sooner
Context (2)• Almost 80% code coverage with automated  unit tests in the whole application• This module has 100% test cover...
Who can spot the problem?void testRefundGiven() { Product product = ... product.deliveryAt(“2050-12-31 19:00”) ; BusinessR...
MERCI!    Thank You!
How can we improve our tests?• There’s no ASSERT !  – It’s easy to get 100% code coverage that way• Why 2050?  – What happ...
Why?• Developers don’t know how to test date and  time (and timezone!)-related code  – Lots of tests use dates in 2050• Fe...
We will...• Contact the development team responsible  for this code• Inform the customer support team• Add more tests abou...
Developers: “we have a lot to learn about unittesting”Architect: “I’ve always had doubts about ourautomated tests. Now I k...
Let’s dig deeper...       Why tests without ASSERT?• Goal: “increase code coverage of automated  tests” instead of “increa...
We will...• Contact the development team responsible for  this code• Inform the customer support team• Add more tests abou...
Systems Thinking
11 steps to perfect code1. SPOT A PROBLEM2. THANK THE REPORTER3. REPRODUCE THE PROBLEM4. ADD (AT LEAST) ONE FAILING TEST5....
The EndThey lived happily ever after...   “We have a lot to learn”
It’s not over yet!
Scene 5:    After the testsA bug never travels alone...
Is this bug unique?
Let’s search the code...• We find 10 cases where this datetime is  parsed  – 5 times with “yyyy-MM-dd HH:MM”  – 5 times wi...
What do you say?
MERCI!    Thank You!
And again...
MERCI!    Thank You!
11 steps to perfect code1.    SPOT A PROBLEM2.    THANK THE REPORTER3.    REPRODUCE THE PROBLEM4.    ADD (AT LEAST) ONE FA...
“Quality without compromise”. Easy tosay, hard to do“Writing tests and correcting problemsis starting to become routine. I...
Finally, The End?Can we live happily ever after now?
It’s not DONE !
Did you spot another problem?
MERCI!    Thank You!
Digging deeper...    Why did we introduce the bug?• We aren’t aware that there’s a date+time• We have 10x the same parsing...
Improving Productclass Product {...  // Deprecated: Remove when obsolete  String deliveryAt() ;  // New: gradually refacto...
11 steps to perfect code1.    SPOT A PROBLEM2.    THANK THE REPORTER3.    REPRODUCE THE PROBLEM4.    ADD (AT LEAST) ONE FA...
TIP• If you think you have to comment your  code, think again
With commentsclass A {  void methodA() ;  // Call methodA before calling these  void methodB() ;  void methodC() ;}...a.me...
Without commentclass A {  B methodA() ;}class B {  void methodB() ;  void methodC() ;}a.methodA().methodB() ;
Mummy....Where do strings come from?
The application                                    ABCDEFGHIJKLMNO   ABCDEFGHIJKLMNO                                      ...
The application(vision)                ABCDEFGHIJKLMNO                                    System AL’application           ...
We will...• Contact the development team responsible for this  code• Inform the customer support team• Add more tests abou...
LARGE REFACTORING
A3 proposal
A3 Proposal              Problem descriptionBEFORE                  AFTERSTEPS:                  Visualisation1. .jdlkjds2...
TIPS• Keep the A3 visible during the whole  refactoring• Put the A3 where it can’t be missed• Limit the number of A3s that...
Scene 6:Final act
Looking back1. 7 team members + one coach have spent all   afternoon to correct a 6-character bug? Is   this reasonable?2....
Theory of Constraints    in a nutshell
How much do they deliver?                    Test &Analysis:   Dev:  20         10                    Deploy:             ...
How much do they deliver?                    Test &Analysis:   Dev:  20         10                    Deploy:             ...
How much do they deliver?                     Test & Analysis:   Dev:   20         10                     Deploy:         ...
How much do they deliver?                     Test & Analysis:   Dev:   20         10                     Deploy:         ...
What if development speeds up?                     Test & Analysis:   Dev:   20         20                     Deploy:    ...
Nothing happens?                        Test & Analysis:      Dev:   20            20                        Deploy:      ...
Buffers start to fill up!                              Test & Analysis:          Dev:   20                20              ...
How much do they deliver?                     Test & Analysis:   Dev:   20         10                     Deploy:         ...
What if we go slower?                           Test & Analysis:         Dev:   20               8                        ...
Why are we analysing so fast?                    Test & Analysis:   Dev:   20         8                    Deploy:        ...
We do less                      Test &              Dev:                                <= 17 Analysis:   10              ...
Play The Bottleneck Game
Reading tips
How much does quality cost?
TIPS• Once you run out of reported bugs...                            Apply IDD™   Irritation Driven DevelopmentContact me...
TIPS• Pair with the bottleneck  – ToC calls this “subordinating”• Walk a mile in their shoes  – Carefully observe and note...
Summary
11 steps to a life with less stress1.    SPOT A PROBLEM2.    THANK THE REPORTER3.    REPRODUCE THE PROBLEM4.    ADD (AT LE...
But, most importantly...
MERCI!    Thank You!
The EndAnd they lived happily ever after
SESSION FEEDBACK
MERCI!    Thank You!
Thank you, Dank u, Merci, Danke, Tak,Kiitos, Gracias, Grazie, Tack, Obrigado                                    Consults  ...
Great! another bug
Great! another bug
Great! another bug
Great! another bug
Great! another bug
Great! another bug
Great! another bug
Great! another bug
Great! another bug
Upcoming SlideShare
Loading in...5
×

Great! another bug

5,062

Published on

Tells the story of a team spending all afternoon to fix a tiny bug, but meanwhile learns to think

Published in: Business
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,062
On Slideshare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
0
Comments
0
Likes
9
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.
  • Transcript of "Great! another bug"

    1. 1. Great! We found a bug! Pascal Van Cauwenberghe
    2. 2. Hello Consults Programs Manages projects Creates Games Organises conferencesNAYIMAWe make play workwww.nayima.beblog.nayima.be
    3. 3. SAFETY WARNING
    4. 4. Safety Warning• This presentation contains code – No guarantee that it actually compiles• This presentation may contain bugs – Avoid if suffering from entomophobia
    5. 5. Based on true stories• In different countries• In different projects• With different teams• Using different (programming) languages
    6. 6. Great! Another bug!Or how to spend all day with the whole team to fix a tiny bug
    7. 7. Mummy....Where do bugs come from?
    8. 8. Well.... Once upon a timethere was a project
    9. 9. Context• Global company• Large public web application• Mission critical, 24/7• Major revenue source for the company• First agile project for this team• I coach the team• We need to modify and extend a small section of the application
    10. 10. The projectThe application US
    11. 11. Scene 1:a developer spots a bug
    12. 12. How do you react when someone says “I’ve found a bug” ?
    13. 13. MERCI! Thank You!
    14. 14. 11 steps to perfect code1. SPOT A PROBLEM2. THANK THE REPORTER3. ...
    15. 15. MERCI! Thank You!
    16. 16. Scene 2:What do we do now?
    17. 17. THIS IS NOT A BUG
    18. 18. THIS IS AN OPPORTUNITY
    19. 19. TIPS• Never BLAME• No need to find the “guilty”• Watch your language: – “Exercise”, “Experiment”, “Learn”, “Improve” – “We”, “Our code”, “Our problem”• “Solution Focus” approach
    20. 20. Scene 3:The team performs a Root Cause Analysis5 developers + architect
    21. 21. Business rule:“The customer can ask for a refund until delivery”
    22. 22. Who can spot the problem?boolean refundAllowed(Product product) { Datetime now = Datetime.now; Datetime final = Datetime.parse("yyyy-MM-dd“, product.deliveryAt()); return now <= final ;}
    23. 23. MERCI! Thank You!
    24. 24. Let’s test the application• Delivery on 27/10/2012 at 16:00• It is now 26/10/2012 10:20• 26/10/2012 10:20 <= 27/10/2012 00:00 ?
    25. 25. Let’s test the application• Delivery on 27/10/2012 at 16:00• It is now 26/10/2012 10:20• 26/10/2012 10:20 <= 27/10/2012 00:00 ? Refund? YES
    26. 26. Let’s test the application• Delivery on 26/10/2012 at 16:00• It is now 26/10/2012 10:20• 26/10/2012 10:20 <= 26/10/2012 00:00 ?
    27. 27. Let’s test the application• Delivery on 26/10/2012 at 16:00• It is now 26/10/2012 10:20• 26/10/2012 10:20 <= 26/10/2012 00:00 ? Refund? NO
    28. 28. 11 steps to perfect code1. SPOT A PROBLEM2. THANK THE REPORTER3. REPRODUCE THE PROBLEM4. ...
    29. 29. Can we fix the bug?The fix is really simple!
    30. 30. 11 steps to perfect code1. SPOT A PROBLEM2. THANK THE REPORTER3. REPRODUCE THE PROBLEM4. ADD (AT LEAST) ONE FAILING TEST5. ...
    31. 31. A new 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. A new 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. Can we fix the bug?The fix is really simple!
    34. 34. We finally fix the bugboolean refundAllowed(Product product) { Datetime now = Datetime.now; Datetime final = Datetime.parse("yyyy-MM-dd HH:MM”, product.deliveryAt()); return now <= final ;}
    35. 35. Rerun the 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. 11 steps to perfect code1. SPOT A PROBLEM2. THANK THE REPORTER3. REPRODUCE THE PROBLEM4. ADD (AT LEAST) ONE FAILING TEST5. CORRECT THE PROBLEM6. AND RERUN ALL TESTS UNTIL THEY PASS7. ...
    37. 37. “This agile thing is going to be very slow ifwe do this for every bug!”“Yes, but at least now we have someconfidence that the bug is fixed correctlyand that we haven’t broken anything else.”
    38. 38. “We’ve really applied our team value of‘quality without compromise’. We tookthe time to do it right, even if nocustomer has complained yet.”
    39. 39. “We should contact the team that’s responsible forthis code and inform them of our correction.”“There may have been customer complaints already.We should contact the customer support people tosee if there are complaints and inform them of theexisting problem”
    40. 40. TIPS• Define and make the team values visible at all times• Keep a list of things to do after the Root Cause Analysis (RCA)• Language: – “We should...” => “We will...”
    41. 41. WE WILL...• Contact the development team responsible for this code• Inform the customer support team
    42. 42. 11 steps to perfect code1. SPOT A PROBLEM2. THANK THE REPORTER3. REPRODUCE THE PROBLEM4. ADD (AT LEAST) ONE FAILING TEST5. CORRECT THE PROBLEM6. AND RERUN ALL TESTS UNTIL THEY PASS7. PERFORM THE ACTIONS OF THE RCA8. ...
    43. 43. “GOOD JOB!”“Now, back to work!”
    44. 44. THE ENDAnd they lived happily ever after...
    45. 45. It’s not over yet!
    46. 46. Scene 4: After the fixThe tester joins the developers and architect
    47. 47. 11 steps to perfect code1. SPOT A PROBLEM2. THANK THE REPORTER3. REPRODUCE THE PROBLEM4. ADD (AT LEAST) ONE FAILING TEST5. CORRECT THE PROBLEM6. AND RERUN ALL TESTS UNTIL THEY PASS7. PERFORM THE ACTIONS OF THE RCA8. IMPROVE YOUR TESTS9. ...
    48. 48. How can we improve our tests? We should have found this bug sooner
    49. 49. How can we improve our tests? We should have will fouind this type of bug sooner
    50. 50. How can we improve our tests? We will find this type of bug sooner
    51. 51. Context (2)• Almost 80% code coverage with automated unit tests in the whole application• This module has 100% test coverage• But still contains (at least) one bug• Why?• Let’s look at the tests...
    52. 52. Who can spot the problem?void testRefundGiven() { Product product = ... product.deliveryAt(“2050-12-31 19:00”) ; BusinessRule businessRule = ... bool allowed = businessRule.refundAllowed(product)}
    53. 53. MERCI! Thank You!
    54. 54. How can we improve our tests?• There’s no ASSERT ! – It’s easy to get 100% code coverage that way• Why 2050? – What happens on January 1st 2051?• We need at least 4 tests – Delivery before today – Delivery today before now – Delivery today after now – Delivery after today
    55. 55. Why?• Developers don’t know how to test date and time (and timezone!)-related code – Lots of tests use dates in 2050• Few developers with unit testing experience• Agile coaching in the past did not include technical practices
    56. 56. We will...• Contact the development team responsible for this code• Inform the customer support team• Add more tests about dates that can serve as examples• Show our example tests to other teams
    57. 57. Developers: “we have a lot to learn about unittesting”Architect: “I’ve always had doubts about ourautomated tests. Now I know why.”Tester: “If you want, I can help you to define andimprove tests”
    58. 58. Let’s dig deeper... Why tests without ASSERT?• Goal: “increase code coverage of automated tests” instead of “increase quality”• Pressure to “do more with less (money and time)”• Not much experience with unit testing• TEST LAST development instead of Test First• No training or coaching on technical practices• Not all Agile coaches in the company have experience with technical practices
    59. 59. We will...• Contact the development team responsible for this code• Inform the customer support team• Add more tests about dates that can serve as examples• Show our example tests to other teams• Apply TDD by pairing with the coach and tester• Raise « lack of technical practice coaching » risk at coach meeting
    60. 60. Systems Thinking
    61. 61. 11 steps to perfect code1. SPOT A PROBLEM2. THANK THE REPORTER3. REPRODUCE THE PROBLEM4. ADD (AT LEAST) ONE FAILING TEST5. CORRECT THE PROBLEM6. AND RERUN ALL TESTS UNTIL THEY PASS7. PERFORM THE ACTIONS OF THE RCA8. IMPROVE YOUR TESTS9. IMPROVE THE WAY YOU WRITE TESTS10. ...
    62. 62. The EndThey lived happily ever after... “We have a lot to learn”
    63. 63. It’s not over yet!
    64. 64. Scene 5: After the testsA bug never travels alone...
    65. 65. Is this bug unique?
    66. 66. Let’s search the code...• We find 10 cases where this datetime is parsed – 5 times with “yyyy-MM-dd HH:MM” – 5 times with “yyyy-MM-dd”• Each developer analyses one case• Result: two more bugs
    67. 67. What do you say?
    68. 68. MERCI! Thank You!
    69. 69. And again...
    70. 70. MERCI! Thank You!
    71. 71. 11 steps to perfect code1. SPOT A PROBLEM2. THANK THE REPORTER3. REPRODUCE THE PROBLEM4. ADD (AT LEAST) ONE FAILING TEST5. CORRECT THE PROBLEM6. AND RERUN ALL TESTS UNTIL THEY PASS7. PERFORM THE ACTIONS OF THE RCA8. IMPROVE YOUR TESTS9. IMPROVE THE WAY YOU WRITE TESTS10. LOOK FOR SIMILAR PROBLEMS. GOTO 211. ...
    72. 72. “Quality without compromise”. Easy tosay, hard to do“Writing tests and correcting problemsis starting to become routine. It goesfaster each time we do it.”
    73. 73. Finally, The End?Can we live happily ever after now?
    74. 74. It’s not DONE !
    75. 75. Did you spot another problem?
    76. 76. MERCI! Thank You!
    77. 77. Digging deeper... Why did we introduce the bug?• We aren’t aware that there’s a date+time• We have 10x the same parsing code• => 10 opportunities to make a mistake• Let’s remove the duplication that leads to mistakes
    78. 78. Improving Productclass Product {... // Deprecated: Remove when obsolete String deliveryAt() ; // New: gradually refactor all clients DateTime deliveryAtDateTime() ;...}From “stringly typed” to “strongly typed”
    79. 79. 11 steps to perfect code1. SPOT A PROBLEM2. THANK THE REPORTER3. REPRODUCE THE PROBLEM4. ADD (AT LEAST) ONE FAILING TEST5. CORRECT THE PROBLEM6. AND RERUN ALL TESTS UNTIL THEY PASS7. PERFORM THE ACTIONS OF THE RCA8. IMPROVE YOUR TESTS9. IMPROVE THE WAY YOU WRITE TESTS10. LOOK FOR SIMILAR PROBLEMS. GOTO 211. MAKE THIS TYPE OF PROBLEM IMPOSSIBLE
    80. 80. TIP• If you think you have to comment your code, think again
    81. 81. With commentsclass A { void methodA() ; // Call methodA before calling these void methodB() ; void methodC() ;}...a.methodB() ; // ERRORa.methodA() ; // ERROR!!
    82. 82. Without commentclass A { B methodA() ;}class B { void methodB() ; void methodC() ;}a.methodA().methodB() ;
    83. 83. Mummy....Where do strings come from?
    84. 84. The application ABCDEFGHIJKLMNO ABCDEFGHIJKLMNO System AABCDEFGHIJKLMNO ABCDEFGHIJKLMNO Application ABCDEFGHIJKLMNO ABCDEFGHIJKLMNO ABCDEFGHIJKLMNO ABCDEFGHIJKLMNO System B
    85. 85. The application(vision) ABCDEFGHIJKLMNO System AL’application ABCDEFGHIJKLMNO System B
    86. 86. We will...• Contact the development team responsible for this code• Inform the customer support team• Add more tests about dates that can serve as examples• Show our example tests to other teams• Apply TDD by pairing with the coach and tester• Raise « lack of technical practice coaching » risk at coach meeting• Encapsulate data coming from outside
    87. 87. LARGE REFACTORING
    88. 88. A3 proposal
    89. 89. A3 Proposal Problem descriptionBEFORE AFTERSTEPS: Visualisation1. .jdlkjds2. Kmlkdmlkd3. Dkqjdlkjds4. Sqkjlkdlksqmk5. BEER !
    90. 90. TIPS• Keep the A3 visible during the whole refactoring• Put the A3 where it can’t be missed• Limit the number of A3s that can be published
    91. 91. Scene 6:Final act
    92. 92. Looking back1. 7 team members + one coach have spent all afternoon to correct a 6-character bug? Is this reasonable?2. In the end, there were a lot less bugs found in test than on “normal” projects. Is there a link?3. This project was delivered in 5 months instead of the 8 that were estimated. How can you finish faster by going slower?
    93. 93. Theory of Constraints in a nutshell
    94. 94. How much do they deliver? Test &Analysis: Dev: 20 10 Deploy: 15 ???
    95. 95. How much do they deliver? Test &Analysis: Dev: 20 10 Deploy: 15 <= 10
    96. 96. How much do they deliver? Test & Analysis: Dev: 20 10 Deploy: 15 ???Analysis: Dev: 10 12
    97. 97. How much do they deliver? Test & Analysis: Dev: 20 10 Deploy: 15 <= 15Analysis: Dev: 10 12
    98. 98. What if development speeds up? Test & Analysis: Dev: 20 20 Deploy: 15 ???Analysis: Dev: 10 12
    99. 99. Nothing happens? Test & Analysis: Dev: 20 20 Deploy: 15 <= 15Analysis: Dev: 10 12
    100. 100. Buffers start to fill up! Test & Analysis: Dev: 20 20 Deploy: 15 < 15Analysis: Dev: 10 12
    101. 101. How much do they deliver? Test & Analysis: Dev: 20 10 Deploy: 15 <= 15Analysis: Dev: 10 12
    102. 102. What if we go slower? Test & Analysis: Dev: 20 8 Deploy: 17 <= 17Analysis: Dev: 10 12
    103. 103. Why are we analysing so fast? Test & Analysis: Dev: 20 8 Deploy: 17 <= 17Analysis: Dev: 10 12
    104. 104. We do less Test & Dev: <= 17 Analysis: 10 Deploy: 8 17Analysis: Dev: 10 12
    105. 105. Play The Bottleneck Game
    106. 106. Reading tips
    107. 107. How much does quality cost?
    108. 108. TIPS• Once you run out of reported bugs... Apply IDD™ Irritation Driven DevelopmentContact me if you want to become a Certifiable Irritating Person
    109. 109. TIPS• Pair with the bottleneck – ToC calls this “subordinating”• Walk a mile in their shoes – Carefully observe and note irritations – Quietly remove the irritations• Example: pair-installing dev-ops
    110. 110. Summary
    111. 111. 11 steps to a life with less stress1. SPOT A PROBLEM2. THANK THE REPORTER3. REPRODUCE THE PROBLEM4. ADD (AT LEAST) ONE FAILING TEST5. CORRECT THE PROBLEM6. AND RERUN ALL TESTS UNTIL THEY PASS7. PERFORM THE ACTIONS OF THE RCA8. IMPROVE YOUR TESTS9. IMPROVE THE WAY YOU WRITE TESTS10. LOOK FOR SIMILAR PROBLEMS. GOTO 211. MAKE THIS TYPE OF PROBLEM IMPOSSIBLE
    112. 112. But, most importantly...
    113. 113. MERCI! Thank You!
    114. 114. The EndAnd they lived happily ever after
    115. 115. SESSION FEEDBACK
    116. 116. MERCI! Thank You!
    117. 117. Thank you, Dank u, Merci, Danke, Tak,Kiitos, Gracias, Grazie, Tack, Obrigado Consults Programs Manages projects Creates Games Organises conferences NAYIMA We make play work http://www.nayima.be http://www.agilecoach.net

    ×