The love triangle which every developer should know

For all of us who have to do projects for others - either customers or even internal projects for your company - it's very important to realise the feasibility or non-feasibility of a project as early in the development process as you can.

This can go a long way in making sure that you are not going to put in time and effort in something which is going to end in failure anyway.

There are few things more demoralising than working hard on an application for weeks and then finding out that it wasn't appreciated or didn't work the way it should have.

Most of the projects which end in failure or end in the recycle bin can always be traced back to communication problems between the stakeholders of the project, mainly the customer and the developer(s). It's very rare that a project fails because of technical/hardware/software reasons.

Human communication is very error-prone and vague as it is, and when applied to software development, the errors and confusion are even more magnified. 

What you think of the project and what the customer thinks of the project may be completely different. And if you are going to start work with that situation in place, then it is doomed to failure no matter how much time and effort and skill you put in into it.

The Love Triangle is the one thing which will help you know within five minutes if the project is going to work or not.

Since it's a very simple and non-technical diagram, you can use this to explain to the customer, why the project will fail (or not).

Every project has three components to it:

  1. Features: The set of features which have to be implemented
  2. Resources: Resources available in terms of manpower/hardware/software/money
  3. Time: The time available to implement the project

In all my years in the software business, I have yet to see a project where all the three components were evenly matched. We don't live in a perfect world so we never get perfect projects.

What happens is that generally the customer falls in love with all the three components i.e he wants to control all the three components as per his liking. For a project to succeed, he must be willing to let the developer fall in love with at least one of the components.

Example scenario

Project X needs 100 features, has to be done in 5 months and will require 5 people.

In the unlikely case that you find the above constraints perfect then you have nothing to worry about. The customer’s love triangle matches yours.

However what will happen is that you will have a problem with at least one of the components:

You: “We can't do this in 5 months, we need at least 7 months”

Customer: “Not possible”

You: “Then if you want it in 5 months, at least increase the number of people to 8″

Customer: “Not possible”

You: “Fine, then if people and time can't be changed, reduce the deliverable features. We can do 65 of the 100 features within these constraints.”

Customer: “Not possible”

The above situation is a huge red flag. Because the customer refuses to give you control of any of the three components.

You can use the above diagram and explain to the customer that if he's not willing to let go of even one corner of the triangle, then the project will never work out.

Endgame

The simplest thing to remember is: you need to have control of at least one corner of the Love Triangle if you want the project to succeed.

Related Stories

Leave a comment

Alternatively

This will only be used to quickly provide signup information and will not allow us to post to your account or appear on your timeline.

PolishedGeek
6 Jul 2012, 8:12 p.m.

Those of us who have been in project manager roles call this the "Triple Constraint" of Project Management. Many a time we've patiently explained to clients "Cheap, Fast or Good - Pick Two!". Our blog post on this same topic nicely dovetails with this developer focused post. Here's a different spin, with a contract negotiation point of view: https://polishedgeek.com/home/blog/item/6-web-design-cheap-fast-or-good-pick-two.html

Great to see an article about this important concept, and how to use it in customer conversations, in a developer resource!

Reply