Where Bad Code Comes From? June 2012
I’m Marcin Floryan http://marcin.floryan.pl
Energized Work @mfloryan Value, Flow, Quality
You can find me at:
The ACE Conference:
This presentation:
#aceconf
#mfbadcode
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
☐
☐
☐
Any developers in the room?
Seen any bad code?
? Experienced ���any bad code
? how bad can it get
Mariner 1
$18.5 million
Hartford Coliseum
$80 million
Ariane 5
$500 million
““One bug, one crash. Of all the careless lines of code
this one may stand as the most devastatingly efficient.
James Gleick
North America black-out
55 million people
““To err is human, but to
really foul things up you need a computer.
Paul Ehrlich
Does your code resemble ���this
or this…?
Building ���the wrong thing
Building ���the thing wrong
what how code
““When people are
factored in, nothing is simple.
Ken Schwaber
what how
who
code
““A post-modern firm is rich
in information and relies heavily on the daily choices of its knowledgeable employees.
Haridimos Tsoukas
Let’s go back in time
What’s that rustling in the bushes?
FIGHT
You’re fed
What’s that rustling in the bushes?
F IGHT L
You’re safe
back to reality
How about that RAG report?
Running late?
Add more people
Even more late *
* Consult the Brooks Law for details
How about that RAG report?
Already over budget?
Let’s squeeze the testing
What do you mean quality?
But it worked so well ���
for the 99% of the time
homo sapiens ���
have been around!
Do you ever fly?
? a novice pilot���or���
an experienced captain
or perhaps even������
head of the airline safety program
Welcome aboard KLM Flight 4805 ���
Amsterdam to Las Palmas
A bomb in a flower shop������������
Las Palmas closed
Landing at Tenerife
law mandated rest period looming
decision to re-fuel
and a T H I C K fog
KLM 747 crashes ���into PanAm 747
Communication misunderstandings
deadliest accident in aviation history
Junior pilots any better?
remember Air France flight 447
so how about���Software
Development
? Ever worked ���to a tight deadline
? Ever worked ���on a high stakes project
? Ever worked ���with senior people
meet Bob*���the architect
* Name changed to protect the innocent
““Good, safe social interaction
is as necessary to successful development as good technical skills
Kent Beck
Difficult Conversations
Recognise���any of these…
How do we tell… our tester
you let all these nasty
bugs through
How do we tell… a new developer
you don’t know the
framework well enough
How do we tell… project manager
we are not resources
How do we tell… stakeholders
your expectaAons
are unrealisAc
How do we tell… operations
we need it live NOW
How do we tell… our client
I am unable to add value as a coach
we
DON’T.
instead
Time for ���S O L U T I O N S
Ehm… no. ���Not today.
I want you to learn������
and we learn best ���by doing
““One must learn by doing the
thing; for though you think you know it, you have no certainty, until you try.
Sophocles
so instead
some���H O M E W O R K���
for you
Your job
1. Find some bad code
2. Trace it back to a difficult conversation
3. How could you have done it differently?���
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
Follow-Up
• Catch me, stop me, talk to me
• Contact me on twitter @mfloryan • Submit and discuss your ideas
bit.ly/ace-homework
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
Bibliography
So Thank You bit.ly/ace-bad-code
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
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.
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.