InfoQ interview - Go Language at 13 Years
I had the pleasure of speaking with Olimpiu Pop from InfoQ about the Go language and community. …
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.
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.
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.
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):
Longhorn (eventually shipped as Windows Vista):
Courtesy of: http://www.roughlydrafted.com
In the web world, flexible release dates are the norm. Facebook, Twitter, Google and many more subscribe to the montra, “Ship when ready”.