bennettscash
bennettscash
Balancing the Triangle
Thursday, 31 January 2008
In my experience, one of the things old software engineers like to do to pass on their infinite wisdom to young software engineers is draw a triangle on a chalkboard (a whiteboard would be more apt in these days where agile and its associated whiteboard-philia is all the rage), write 'time' at one point, 'scope' at another point, and 'cost' at the third.
The old software engineer then says "Now, young padawan, you must be firm against the dark client side who will try to sway you away from the truth. Tell them that they may control two of these factors, but that their choice in those two will dictate the third."
Apparently that's the extent of the wisdom a software engineer develops in their life. And nobody's quite sure what the point of the triangle is(1). But it's good advice nevertheless.
There's also a popular misconception that you can add a fourth factor - quality - to the triangle so that it becomes a pyramid, and allow stakeholders to select three of the four. But since all good programmers have hubris(2), that'll never work (although battles have been fought over it).
(1) OK, in actuality there is a point behind the triangle. The point is that there are three variables on a two dimensional space, which means that your client can pick any point inside the triangle and by doing so selects two of the variables and has the third determined for them.
(2) The three chief virtues of a programmer are: Laziness, Impatience and Hubris - Larry Wall, Programming Perl
Twilight, Booroomba Rocks