Wednesday, January 29, 2014

Building Software the Chicago Way

In 2000-2002 I worked for a company in the Chicago area with a call center in Phoenix. They sent me out to Phoenix twice for training and to work with our Call Center Reps on the software I was developing.  Each time I stayed over the weekend to golf so I was around from Friday until Sunday both times.  I bring this up because in Chicago we have two seasons: winter and construction.  But construction also takes place in Phoenix.  It's just unobtrusive and efficient. At least it was back then. 
The difference between Agile and Waterfall Development is very similar to the difference in approaches to road construction in Phoenix vs. Chicago.

The Chicago Way

In Chicago, huge plans are drawn up years in advance. Billions in capital are approved and funded. The construction project then starts by blocking off the lanes and tearing up everything for the length of the projects.  Traffic patterns are changed for months.  Temp lanes opened, lanes adjacent to construction shut down and people traveling in both directions are subject to the torture that is Construction Season.  For 6,9, 12 months or more, the entire project under construction is ripped up.  At least the Phase 1 of construction.  Usually multiple phases are involved. Each phase taking a year or so. 

All planned up front.

The end result is that by the time the project is actually finished (usually 4-5 years later) the population density has changed as well the traffic patterns and the project that was planned no longer meets the current needs. So they start the whole process over again.  They never catch up to current needs.  And we live under perpetual construction.  First get the guys to tear up the road.  All of it. Then a few months later bring in the guys to lay dirt and gravel.  Then the guys come to flatten it.  Next they lay down the asphalt.  Finally at the end of the project the guys come by and lay down the paint on top of it all.  The funding needed for the project is in the billions.  Cost overruns abound. And whatever is delivered is already obsolete.  Nice.

Contrast that with...

What I saw in Phoenix:

On Friday night after rush hour a crew comes out and blocks off the highway between two entrances and exits.  Nothing else is touched.  Traffic over the weekend is rerouted off the highway and allowed back on at the next entrance.  A crew tears up a piece of road from between exits on Friday night.  Saturday during the day they lay down the foundation of the dirt and gravel and flatten it.  Saturday night they lay the asphalt and flatten it again.  Sunday during the day they add more and flatten it again and let it set up.  Sunday evening they apply paint, clean up their gear, and let the paint dry.  They are gone before Monday morning rush hour.  Exits opened.  New road laid down.  Finished.  The Following Friday they move down to the next exit/entrance and repeat the process.  Instead of billions of dollars being tied up into the project they have hundreds of thousands.  If anything comes up during the reconstruction of the road it can be halted at any time without impacting travel. 
See the difference? At the end of their weekend sprint, the Phoenix team has delivered a completely functional piece of road.  Sound familiar?  If priorities change, they can simply stop moving forward without any lingering issues or unfinished business with which to deal.  Risks are greatly mitigated.  Now imagine if a highway project in Chicago were cancelled in the middle, the workers just getting up and walking away?  What kind of mess would be left behind and headaches?  None of that is a problem if Phoenix decides to halt the project.  The risk in their approach is incredibly small compared to the Chicago Way.  Fewer people are inconvenienced and only for a very short time – and never during the work week when those road are most critical.  There is less road rage, less stress.  And at the end of every weekend, a functioning piece of newly repaved road is available to the end users.  See where I’m going?

Shops that are using waterfall are trying to build applications the Chicago Way.  The only one who wins are developers and contractors. And the politicians they pay for.  That is the Chicago Way.  Commuters, motorists, taxpayers, businesses, deliverymen,  basically everyone else not connected, loses.  And even when the project ends they still don’t win because the requirements have changed.  We need to scrap that approach. We need to bring in Sean Connery and change the way we build software or we will fail much more often than we win.   


  1. Good points about the need to be agile and adaptive. I once ran into an architect (the civil engineering type) on a flight. He was mentioning how so many unexpected things come up during a large construction project and how much they have to be agile in order to succeed.

    On another front, the world that could not benefit from rapid prototyping so long is beginning to benefit from the quick feedback cycles made possible with 3D printers. In software development we already have the capabilities to be dynamic, to be flexible, to develop, learn, change, and quickly deliver value. The challenge is not in what we can do, the challenge is what we actually do.

  2. One of the best illustrations on 'Agile vs waterfall' I have read. I am wondering does the ways they approach road construction has something to do with the mentality of people from those two geographical areas..