Managing Complexity with a Trilemma

Managing software projects is not an easy task, unfortunately, due to the pervasiveness of software in the modern world, a common mistake is to think of software engineering as easy. As a consultant for some of the largest companies and high street names in the UK, one sometimes encounters projects that have failed or are failing due to complexity, unrealistic expectations and optimistic budgets.

All too often in board or team meetings, developers and their management guesstimate a task will take two weeks and it ends up taking twice as long because project owners and financiers are never furnished with a trilemma.


This is one of the most important questions people that manage successful projects ask “fast, cheap and good: choose two?”

The modern car is very complex, and features in the expensive range of the modern utilities we are likely to use, consequently, provides an excellent way to compare how commercially successful businesses manage their complexity on a day to day basis. With this complexity in the car, comes a higher probability that problems will arise, because modern cars are complex, failure to maintain components can lead to exorbitant costs down the line, so car manufacturers have service and maintenance plans for the lifetime of a vehicle. There is an important lesson software development teams and IT managers can learn from car dealerships service departments about managing their own projects, and that is if you choose to drive into your dealership without notice, and request that they address a problem on your vehicle immediately, they will happily do this, but it will cost you substantially more money (twice or even more) – companies all to often have software products that they have paid hundreds of thousands, or millions of pounds for, but are seldom prepared to afford any time to pay for the maintenance of the software, this is a fault, especially when it comes to paying back technical debt.


If one would like to not incur these charges, then the recommended approach is to phone the car dealerships service department and book your car in well in advance, note that they will check their diary and advise you when they have a slot available, not you specifying when you would like your car in to be looked at.

Fast + Cheap = Work will be shoddy and of a very poor standard
Fast + Good = Expensive
Cheap + Good = When we have the time

All too often people choose fast and cheap, which is one of the biggest mistakes you can make if you are developing software for customers (though it sounds attractive in the boardroom or when making the sale), the reality is that when you give them a “quick and dirty” software product, it will contain bugs and deficiencies, work poorly and crash often, so the customer will complain, it is now far too late to start deliberating about the trilemma, their expectation will always be a high quality product as no-one likes to pay for software with bugs, if you are agreeing to anything else, you are likely to fail.

IT managers also need to take heed when dealing with users of varying organisational and strategic importance that request that their problem gets addressed immediately. If you are the managing director of a company and take your car for a service (you usually can afford to pay for them to collect the car), if you don’t want to pay for this premium service, then you join the queue the same as everyone else (judgement call).

This is the root cause of bottlenecks and reactive (not proactive) problem solving in a lot of companies, if you want an effective IT department, treat all your users the same, your Managing Director or Chief Executive will come to thank you for it in the end, when their business thrives.