Software Development's 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.

Examples

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.

Failure

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.

Sat Dec 18, 2010

600 Words

Read in about 3 Min

About the Author:

Steve Francia has been responsible for two of the largest commercial open
source projects as the current Chief Operator of the Docker Project and the
former Chief Developer Advocate of MongoDB. Steve has also run some of the top
community-based open source projects: spf13-vim, Hugo, Cobra & Viper

He loves open source and is thrilled to be able to work on it full-time and
then some. In writing, Steve tweets as @spf13,
codes on GitHub,
blogs at spf13.com,
connects on LinkedIn,
ocassionally posts on Google+
and has written a few books for O'Reilly.

In person, he enjoys giving talks and workshops and spending time with the
developer community around the world. When not coding, he is usually having fun
outdoors with his wife and four children.