Software Development's Magic Triangle

Magic Triangle

There’s an old adage “Fast, Cheap, Good; Pick Two”. This situation is called a magic triangle. You can have two and only two, if you try for all three you will compromise all three. Fools often try, losing everything.

In the world of software development, another magic triangle exists. You can pick any two of the three, but not all three, so figure out what’s truly important.

Fixed Schedules      Fixed Features      High Quality

Unfortunately business owners rarely have visibility into the last one (Quality). While it’s rare anyone would intentionally sacrifice quality, you’ll commonly hear “I want feature W, X, Y & Z and I want them yesterday” with no thought to tomorrow. They will cut it every time without even realizing it.  Every time a CTO says yes to this request the world becomes a slightly worse place. The amount of debt incurred is (almost) never worth it. Over time the debt from a lack of focus on quality slows down every single operation until features take weeks instead of days. It’s the single most expensive item to cut and will inevitably lead to the ruin of the company / product over time. If you believe that’s still an option, you should read 1.0 by Rands.

The job of the CTO is to ensure that quality is never one of the choices, let the business pick whether they want a fixed feature set or a fixed schedule. Either can work well.


Fixed Schedules

Apple is known for fixed release windows, but flexible feature sets. This is how products are often shipped “incomplete”, but on time. Remember the iPhone. Sorely missing copy and paste (and a slew of other features). It’s not that Apple’s engineers didn’t think about it, it’s just that they decided that given the time needed to ship, they were comfortable waiting for the next release for that feature. Apple is notorious for releasing incomplete first versions of products, but they hit their dates.

Fixed Features

Nintendo is known for excellence in quality and complete, but fluid release dates. A great example of this is The Legend of Zelda: Ocarina of Time. While it is often considered the greatest game ever, it’s ship date was delayed for a couple months. Nearly every Zelda game since has similarly been excellent as well as delayed.


Microsoft is known for failing prey to the magic triangle, often compromising all three.

Their entire history as a company has been failing to deliver.

Cairo (eventually shipped as Windows 95):

  • Announced in 1991 to distract from the lack of anything dramatically new in Windows 3.0.
  • Expected in 1994. Pushed to late 1995, pushed to late 1996, intended to debut in 1997. Changed to a vision.
  • Core features dropped. Ended up as polish on the existing Windows 3.0: Windows 95.

Longhorn (eventually shipped as Windows Vista):

  • Announced in 2001 to distract from the lack of anything dramatically new in Windows XP.
  • Expected in 2003. Pushed to 2004, 2005, pushed to late 2006, intended to debut in 2007.
  • Core features dropped. Ends up as polish on the existing Windows XP: Windows Vista.

Courtesy of:

In the web world, flexible release dates are the norm. Facebook, Twitter, Google and many more subscribe to the montra, “Ship when ready”.