Reflections|Projections '08: Keep Your Shoes On

Dave Thomas, of Ruby and Pragmatic Programmers fame, was invited as one of the speakers for the Reflection | Projections conference this year. Ralph had already set up plans for lunch with him a few days ago and a few of us tagged along. It was great to actually meet Dave in person. He was very friendly and it was obvious that he is definitely a very pragmatic programmer. Over lunch, we talked about programming (naturally), Perl 6 (from the talk the night before), writing small maintainable programs, concurrent programming, cell phone development on the iPhone and Google's Android phone and GPS devices.

Dave Thomas at the ACM Reflections | Projections 2008 Conference

Dave was scheduled to give a talk that night on "keeping your shoes on". He chose not to use any slides; instead he sat in the middle of the stage and talked directly to the audience. He started off with this point: every time we fly now, we have to take off our shoes. We have to take off our shoes whether we like it or not. And we have to take them off even if there isn't any real evidence on how doing so will help prevent anything. We just take them off because we are motivated by a false sense of security. We are doing it just for the sake of doing it. And we just accept it.

He then compared this to how some companies do software nowadays. Many companies are scared to change how they do things even if the current way of doing things is not working. They would rather believe the abundance of rumor out there about how a new technique couldn't actually succeed instead of trying the technique out for themselves and evaluating the result. His main example was about Ruby and Enterprise Java. Many developers initially did not believe that you could write enterprise programs with Ruby; you could only do that with the popular statically-typed languages and their humongous frameworks and libraries. Then, Rails comes along and shows that there is a viable alternative. Rails shows how it is possible to rely on a dynamic language like Ruby and a small framework to get the job done.

But because of FUD, many people are paralyzed with fear and never bother evaluating alternative solutions. Instead they would rather stick with the monstrous "tried-and-true" solutions even though something better (and cheaper) is just around the corner. And it isn't necessary the case that their tried-and-true solutions would even work in the first place.

In his talk, he alluded to the monkey, ladder, banana and water spray experiment. I couldn't actually find any solid references to such an experiment so I suspect that it is just a story that someone made up. It is an interesting anecdote nonetheless. You can read the story but the gist of it is that sometimes we just accept a lot of things without actually understanding the logic behind it. In other words, we just choose to accept (and maintain) the status quo without good reasons; very similar to how religions work -- blind faith.

He summed it up best by referring to the importance of courage in eXtreme Programming. In eXtreme Programming eXplained, Kent Beck makes it clear that all the principles of XP work together to alleviate the fear of change. For instance, the fear of breaking existing code through refactoring can be alleviated by having automated tests. That way, when you refactor something you can always run your tests to check if anything is broken.

Dave wasn't advocating that we ignore our fears and just rush ahead blindly with software development. Instead he was advocating that we be cognizant of those risk and take appropriate measures to address them. We shouldn't let those risks dictate how we develop software, we should instead evaluate those risks and see how we can change to alleviate them. Developing software is inherently risky. But as long as we keep those risk in-check, we can proceed to create great software that developers like writing/maintaining and that customers will enjoy using.

Dave wrote something similar on his blog and also gave a talk about this before. So you can actually peruse those two resources while the video recordings for the Reflections | Projections are being put up. In fact, halfway through his talk, the microphones stopped working so this particular talk might not have been recorded properly.


comments powered by Disqus