Wednesday, May 14, 2014

Why Is Software Architecture Hard?


The other day I was asked the question, "why is software architecture hard?"  My answer built upon Ian Stringer's answer. Ian is Director of MTInsight at AMT - The Association For Manufacturing Technology.  Ian provided answer that I thought was fantastic. Ian put the challenge in perspective by by comparing MTInsight to building McCormick Place, the huge conference center in Chicago by stating "Building the MTinsight platform from scratch is like building McCormick Place."


I thought it was a great analogy and built upon Ian's point by stating the following.


Task AMT's Executive Team with having to build a convention center in ​Ashburn, VA.   Below is the background and the requirements:

  • Currently there is no convention center.
  • The convention center must be able to handle everything from a tupperware show to IMTS and everything in between.
  • You must be able to handle between 10 and 10 million attendees on any one given day.
  • Each attendee must have the same wait time no matter if 9 other people show up or 9,999,999 show up.
  • You are responsible for working with the county to make sure that no matter what type of transportation is taken to the convention center, that there will never, EVER be a delay.
  • You must work with Ashburn to make sure that the longest wait for a restaurant is never longer than 30 seconds.
  • Traffic cannot be worse for current commuters and residents of Ashburn.
  • You can never run out of hotel rooms.
  • There can never be a single crime or a single accident on any of the roads that was caused by a convention attendee or or worker at the new convention center.
  • You can't disrupt what is going with the the rest of Ashburn.
  • You must be profitable and have a 90% user satisfaction rating.

There's a reason that 20 somethings in Silicon Valley are making $200,000 and up per year in total compensation and it is not because it is a CA government jobs program.  ​If it was easy, everyone would do it.

To quote a good friend of mine Mike O'Dell (Internet networking god):
 
  1. Scaling is ALWAYS the problem
  2. If you are not AFRAID, you simply do NOT understand.
Now, ask yourself the question -- still think designing software architecture is easy? :-)