free html hit counter
Posted on: Wednesday, 02 May 2007 by Rajiv Popat

Scott W. Ambler compares software development to the iron triangle as follows:

He states the problem rather elegantly:

Recognize that the iron triangle must be respected. The iron triangle refers to the concept that of the three critical factors – scope, cost, and time – at least one must vary otherwise the quality of the work suffers. Nobody wants a poor quality system, otherwise why build it? Therefore the implication is that at least one of the three vertexes must be allowed to vary. The problem is that when you try to define the exact level of quality, the exact cost, the exact schedule, and the exact scope to be delivered you virtually guarantee failure because there is no room for a project team to maneuver.

For a Software Project / Product to be successful, we as development teams and above all, as responsible individuals, need to learn how to elasticize the triangle. Scott suggests over four ways to introduce elasticity in his article. He suggests that you can actually alter any side of the triangle, depending on your project / situation.

Andy Hunt and Venkat Subramaniam in their book – Practices of an Agile Developer suggest time-boxing as an answer:

“Setting a near-term, hard deadline for an activity that cannot be extended. You get to choose which other aspect will suffer, but the deadline is fixed. You probably don’t know the exact number of time-boxes that are required to complete the overall task, but each individual box is short, is finite, and accomplishes a clear goal-setting a near-term, hard deadline for an activity that cannot be extended.

You get to choose which other aspect will suffer, but the deadline is fixed. You probably don’t know the exact number of time-boxes that are required to complete the overall task, but each individual box is short, is finite, and accomplishes a clear goal.”

The book offers a very real example (which I can relate to from past projects that I've worked on):

For example, iterations typically run a couple of weeks long. When the time is up, the iteration is done. That part is fixed - but the set of features that makes it into that particular iteration is flexible. In other words, you never slip the date, but you may slip a feature.

I’ve seen developers around the world (I refer to them as Fred :)) give-in to the temptation and try to make the triangle elastic by lowering quality. We (a mentor and I) also even went ahead and termed this - the Junior Developer Syndrome.

Having said that, Time-boxing really works wonders in introducing elasticity into the triangle and at the same time maintain sanity! Especially if you are shipping projects / products with a strong leadership and a mature team that will not compromise on quality.

As developers, we all suffer through the I-can-do-it syndrome. It’s easy to get into trap by having a conversation with a marketing person / client, which goes somewhat like –

“Can we build this?” – Developer: Sure.

“Can we build this in 3 months?” - Developer: Ummm….

“Thanks! Our current team is enough to build it, right?” – Developer: I think so... I...

“Great! Thank you so much! Let’s start building it then!”

The next time you estimate or say “yes” continuously in a conversation like the one above ask yourself – have you respected the iron triangle? Have you left enough room for elasticity? If you haven’t, chances are that the fourth dimension - quality - will suffer. Time-boxing, prioritizing features and dropping the ones that don’t really add value is the safest, smartest way to introduce elasticity into the triangle. When in doubt prioritize up-front!

posted on Wednesday, 02 May 2007 15:43:07 UTC by Rajiv Popat  #    Comments [0] Trackback
Related posts:
Are We Really Overworked? Or Just Not Enjoying What We Do?
Managers And Their Self-Fulfilling Prophecies.
Fake It Till You Become It.
Cookie Cutter Vs. Improvised Support
The Real Story Of Passionate Success.
Feeling Like A Phony Is Fine. Not Showing Up Isn't.
Tracked by:
"Code, Hand-over the Code, Run and Don't Look Back!" (ThousandtyOne!) [Trackback]
"Developer Tip - Own Your Code!" (ThousandtyOne!) [Trackback]
"Developer Tip - Support What You Write" (ThousandtyOne!) [Trackback]
"Programmer Tip - Support What You Write!" (ThousandtyOne!) [Trackback]
"TacticSheet New Features - Announcement 1" (ThousandtyOne!) [Trackback]
"Are You Done? Or Just Ninety Percent Done?" (ThousandtyOne!) [Trackback]
"Is Your Task Done? Or Just Ninety Percent Done?" (ThousandtyOne!) [Trackback]
"15 Percent Rule Manifesto - Just A Glamorized CYA Document?" (ThousandtyOne! - ... [Trackback]
"15 Percent Rule Manifesto Is Just A Glamorized CYA Document!" (ThousandtyOne! -... [Trackback]
"The 15 Percent Rule Manifesto Is Just A Glamorized CYA Document!" (ThousandtyOn... [Trackback]
"The War, The Angel, The Devil And The Programmer" (ThousandtyOne! - .NET, Life ... [Trackback]
"Deadlines Driven Development For Dummies" (ThousandtyOne! - .NET, Life and Logi... [Trackback]
"Deadlines Driven Development Is For Dummies" (ThousandtyOne! - .NET, Life and L... [Trackback]
"Coordinating With A Burn Down Chart" (ThousandtyOne! - .NET, Life and Logical T... [Trackback]
"Tracking Your Project With Agile And Scrum – Look At Your Burn Down Chart... [Trackback]
"Tracking Your Project Using Agile – Are You Looking At Your Burn Down Cha... [Trackback]
"Tracking Your Project Using Agile – Are You Looking At Those Burn Down Ch... [Trackback]
"Software Development And The Art Of Giving Up Or Surrendering." (ThousandtyOne!... [Trackback]
"Software Development And The Art Of Giving Up Or Surrendering - Shamelessly." (... [Trackback]
"Software Development And The Art Of Giving Up - Shamelessly." (ThousandtyOne! -... [Trackback]
"Software Development And Learning The Art Of Giving Up - Shamelessly." (Thousan... [Trackback]
"Tracking Your Project Using Agile - Are You Looking At Those Burn Down Charts?"... [Trackback]
"Software Marketing - Honesty Can Make You Remarkable." (ThousandtyOne! - .NET, ... [Trackback]
"When It Comes To Software Marketing - Honesty Can Make You Remarkable." (Thousa... [Trackback]
"Closing Software Deals - Honesty Can Make You Remarkable." (ThousandtyOne! - .N... [Trackback]
"The Art Of Selling Software - Remarkable Story Telling And Simple Honesty." (Th... [Trackback]
"The Art Of Selling Software - It's About Remarkable Story Telling And Simple Ho... [Trackback]
"The Art Of Selling Software - It's About Remarkable Story Telling And Blatant H... [Trackback]
"The Art Of Selling Software - It's About Remarkable And 'Honest' Story Telling.... [Trackback]
"The Art Of Selling Software - It's About Remarkable Story Telling With Honest I... [Trackback]
"Glitches With Working To Make Your Managers Happy." (ThousandtyOne! - .NET, Lif... [Trackback]
"Drawbacks With Working To Make Your Managers Happy." (ThousandtyOne! - .NET, Li... [Trackback]
"Different Modes Of Working - Part 1." (ThousandtyOne! - .NET, Life and Logical ... [Trackback]
"Issues With Working To Please Your Managers." (ThousandtyOne! - .NET, Life and ... [Trackback]