Software Engineering – Can You Have It Good, Fast And Cheap?

Project TriangleAnyone who has been in software engineering can most likely recognize the old project triangle. The basic premise to this triangle is that in software engineering you may pick only two of the tips of this triangle.

  1. You can create software quickly and cheaply but it will suffer quality.
  2. You can have high quality quickly but it will be expensive.
  3. You can also high quality cheaply but it will take a long time.

Now I do not believe that these are absolutes, but the reality lies somewhere in the middle. As you pull on two of the points of the triangle the third draws closer to the center thus keeping the sum of the angles to 180° (remember high school geometry?).

There have been many good discussions on this topic include this one (Lean and the Project Triangle). I’ve also recently seen some discussion about adding a fourth point into the mix in articles such as this one (The Iron Stool). This article is basically saying the points in the original triangle correspond to Time, Resources and Functionality. He then adds the fourth point as Quality. Though on a very granular level of software engineering you can separate functionality and quality into two separate points I do not think that they should be for the spirit or intent of the project triangle. Instead I would say that functionality and quality would be on the same point as they are both “qualities” or “properties” of the software being built.

So what do you think about the project triangle? Have you even heard of this nonsense before? I’ll leave you with one of my favorite software engineering quotes from a very good friend of mine. He said, “if you want it real bad… you’ll get it real bad.”