Geeks With Blogs
Joe Eames Arbitrary Randomness

The great lesson of the Titanic was hubris, right?

Perhaps. I don't know. What I do know is that there is another valuable lesson from the Titanic that is very applicable to software engineering: A failed implementation does not invalidate the concept.

Titanic was designed by experienced engineers, using some of the most advanced technologies and extensive safety features of the time.  It was built to be luxurious and safe.  The cost of a first class ticket is equivalent to $100,000 accounting for inflation.  It was an amazing ship.  But for all that it still sank.  Why?

If I told you it was because sailing is an impossible venture, you'd laugh.  The titanic didn't sink because the idea of sailing is a flawed concept.  The reason it sank is because a healthy dose of bad luck and human error.

Now compare that to software development methodologies.  Let's pick something with a little controversy behind it.  Pair Programming.  If you try pair programming, and it goes poorly.  Let's say what you work on fails, or the code is obviously less effective, or you feel that you were wasting your time, or perhaps it ended up in a fistfight.  Does that mean that pair programming is a flawed concept?

No.  Like all things in life, we get better as we practice.  Things take time to learn.  Not every two developers in the world can work happily together for 8 hours.  Not every programmer bathes regularly.

Whether it's pair programming, TDD, agile, WIP, Code Reviews, or anything else, you can't take anecdotal evidence as proof that something doesn't work.

A failed implementation does not mean the practice is bad. 


Posted on Thursday, October 13, 2011 9:21 PM | Back to top

Comments on this post: Lessons from the Titanic

No comments posted yet.
Your comment:
 (will show your gravatar)

Copyright © joeeames | Powered by: