I just finished "reading" an incredible book – Moneyball: The art of winning an unfair game.  This book is about the Oakland A's, and how it's general manager, Billy Beane, has made the team successful in a market place (major league baseball) that is supposedly substantially bias to the big market, wealthy teams – of which the Oakland A’s are not.  For example, Oakland generates about $50-60 million in revenue a year compared to the $100-300 million generated by the big city teams.  This makes it very hard for Oakland to bring in good players via the free agent hiring process and therefore should mean that Oakland should not be a good team every year.  However, the opposite has happened – the Oakland A’s have been one of the top teams in baseball for the last several years.

 

Ok, I know what you are thinking, how good can a book about baseball be? Or that you don’t even like baseball, so why would you read a book about it.  Bottom line, this book is less about baseball and more about the objective analysis of complex systems.  Billy Beane has decided to analyze the world of baseball from a completely objective point of view by using the one thing baseball has plenty of: raw statistics.  Now, there isn’t much revolutionary or amazing about that, in fact professional baseball has been driven by statistics for more one hundred years.  However, Billy Beane and his team of mathematicians have found which stats are significant and which are not.   By doing so, he has found a way to leverage the market inefficiencies of major league baseball and keep his team winning even though his revenue restrictions would dictate that is not possible.

 

The most interesting element is that the book describes many of the techniques he has discovered and how they work.  Hence one would assume that other teams would catch on quickly – however there is such an old boy network in professional baseball that excepts a lot of tradition as “fact” and don’t even believe objective statistical analyze when it slaps them in the face, this is not the case.  This has lead me to think about a lot of the “facts” associated with software development, and question whether we really objective analyze our way of doing things enough.  For example, we often use the traditional water fall project cycle at work… but is there really any proof that this is the best way to develop database programming software for the enterprise.  We use it so often that I believe a lot of people assume it is the best way to develop software or are just so comfortable with this project cycle they accept it as fact.

 

Let’s even go further and think about coding conventions.  How many coding idioms does one accept as “fact” without objective understanding of why the idiom exists?  For example, when I was programming in C++ we knew that string management and manipulation could be very expensive, so we used some semi-hacky techniques to avoid copying buffers, etc.  However, when moving to C#, System.String is immutable – thereby forcing us to completely rethink how they handle strings.  The example is a fairly obvious case, and most C# developers have made this transition – but I believe it illustrates my point.  I guess, bottom line it pays to have a strong technical knowledge of what is going on when one uses a given programming language and/ or library and to objectively question the existing “facts” associated with it.  As the entire software development industry moves up the abstraction ladder, this is going to become much harder – if not impossible.  And to some low level developers, this has already happened.

 

In reality, there is no way we could afford to completely objectively and exhaustively analyze every element of software development… we would never ship anything.  However personally, I am going to strive to be better going forward about questioning what really is fact and what is “tradition turned into fact” as much as I can get away with… or forget about this software gig and try to become a general manager for a major league baseball team and steal all of Billy Beane’s ideas.