Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Where Bad Code Comes From

Where Bad Code Comes From

Presentation for the ACE! 2012 conference in Kraków


Marcin Floryan

June 12, 2012


  1. Where Bad Code Comes From? June 2012

  2. I’m Marcin Floryan http://marcin.floryan.pl

  3. Energized Work @mfloryan Value, Flow, Quality You can find me

  4. The ACE Conference: This presentation: #aceconf #mfbadcode

  5. Acceptance criteria You can give examples of different sources of

    bad code You have identified one new reason for bad code you didn’t pay attention to before You will consider a way to tackle it ☐ ☐ ☐
  6. Any developers in the room?

  7. Seen any bad code?

  8. ? Experienced

  9. None
  10. ? how bad can it get

  11. Mariner 1 $18.5 million

  12. Hartford Coliseum $80 million

  13. Ariane 5 $500 million

  14. “One  bug,  one  crash.  Of  all   the  careless  lines

     of  code   this  one  may  stand  as  the   most  devastatingly efficient.   James Gleick
  15. North America black-out 55 million people

  16. “To  err  is  human,  but  to   really  foul  things

     up  you   need  a  computer.   Paul Ehrlich
  17. Does your code resemble

  18. or this…?

  19. Building

  20. None
  21. Building

  22. None
  23. what how code

  24. “When  people  are   factored  in,     nothing  is

     simple.   Ken Schwaber
  25. what how who code

  26. None
  27. “A post-modern firm is rich in information and relies heavily

    on the daily choices of its knowledgeable employees. Haridimos Tsoukas
  28. Let’s go back in time

  29. None
  30. None
  31. None
  32. What’s that rustling in the bushes?

  33. None
  34. FIGHT

  35. You’re fed

  36. What’s that rustling in the bushes?

  37. None
  38. F IGHT L

  39. You’re safe

  40. back to reality

  41. How about that RAG report?

  42. Running late?

  43. Add more people

  44. Even more late * *  Consult  the  Brooks  Law  for

  45. How about that RAG report?

  46. Already over budget?

  47. Let’s squeeze the testing

  48. What do you mean quality?

  49. But it worked so well

  50. Do you ever fly?

  51. ? a novice pilot

  52. or perhaps even

  53. Welcome aboard KLM Flight 4805

  54. A bomb in a flower shop

  55. Landing at Tenerife

  56. law mandated rest period looming

  57. decision to re-fuel

  58. and a T H I C K fog

  59. KLM 747 crashes

  60. Communication misunderstandings deadliest accident in aviation history

  61. Junior pilots any better? remember Air France flight 447

  62. so how about

  63. ? Ever worked

  64. ? Ever worked

  65. ? Ever worked

  66. meet Bob*

  67. “Good, safe social interaction is as necessary to successful development

    as good technical skills Kent Beck
  68. Difficult Conversations

  69. Recognise

  70. How do we tell… our tester you let all these

    nasty bugs through
  71. How do we tell… a new developer you don’t know

    the framework well enough
  72. How do we tell… project manager we are not resources

  73. How do we tell… stakeholders your   expectaAons   are

  74. How do we tell… operations we  need  it   live

  75. How do we tell… our client I am unable to

    add value as a coach
  76. we DON’T.

  77. instead

  78. Time for

  79. Ehm… no.

  80. I want you to learn

  81. “One must learn by doing the thing; for though you

    think you know it, you have no certainty, until you try. Sophocles
  82. so instead

  83. some

  84. Your job 1.  Find some bad code 2.  Trace it

    back to a difficult conversation 3.  How could you have done it differently?
  85. My example 1.  Data transfer via FTP upload of text

    files is really clunky 2.  That’s the way things are done around here. We never challenged this. 3.  Ask to understand rationale behind the decision, present viable alternatives
  86. Follow-Up •  Catch me, stop me, talk to me • 

    Contact me on twitter @mfloryan •  Submit and discuss your ideas bit.ly/ace-homework
  87. The Remember Slide • We’re not optimised for writing code • Our

    mental software is mostly legacy code • We don’t talk to each other • We hide our emotions
  88. Bibliography

  89. So Thank You bit.ly/ace-bad-code

  90. Resources •  Hartford Civic Center Arena Roof Collapse http://www.eng.uab.edu/cee/faculty/ndelatte/case_studies_project/Hartford%20Civic%20Center/hartford.htm • 

    Mariner 1 http://en.wikipedia.org/wiki/Mariner_1 •  Ariane 5 http://www.around.com/ariane.html •  KLM flight 4805 http://en.wikipedia.org/wiki/Tenerife_airport_disaster •  Air France flight 447 http://en.wikipedia.org/wiki/Air_France_Flight_447 •  2003 North America black-out http://en.wikipedia.org/wiki/2003_North_America_blackout •  The Kludge Tweet https://twitter.com/jmeydam/status/143405066571886592
  91. Picture Credits •  The Bismuth Cristals based on “Wismut Kristall

    und 1cm3 Wuerfel” photo by Alchemist-hp from Wikimedia Commons under FreeArt license •  "FIGURE 02.2 The Manifesto for Agile Software Development” from flickr by Jurgen Appelo from flickr licensed under Creative-Commons-by-2.0 license •  "FIGURE 02.3 The Manifesto for Software Craftsmanship” from flickr by Jurgen Appelo from flickr licensed under Creative-Commons-by-2.0 license •  ”bushes" from flickr by Rupert Ganzer under Creative-Commons-by-nd-2.0 license •  ”Cottontail Rabbit" from flickr by Ken Slade under Creative-Commons-by-nc-2.0 license •  “Lion” from flickr by Angela Huxham under Creative-Commons-by-nc-sa-2.0 license •  ”the first standup" photo from flickr by Karthik Chandrasekariah under Creative-Commons-by-nc-2.0 license •  "Traffic light stacking" photo from flickr by fabi42 under Creative-Commons-by-nc-sa-2.0 license •  “Tenerife747s” picture from Wikimedia Commons by Anynobody under Creative Commons by-sa-3.0 license •  The Difficult Conversations picture is by Olaf Lewitz from XP Days Benelux 2012 available on G+ •  The Coaching Dojo picture is from Olaf Lewitz (By Ole) at XP Days Benelux 2012 available on G+ The remaining pictures are used under the fair use policy or available in public domain.
  92. License This presentation is provided under the Creative Commons Attribution

    - Share Alike 3.0 Unported License to Share — to copy, distribute and transmit the work to Remix — to adapt the work You are free Under the following conditions Attribution — You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). Share Alike — If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.