Often, when we are working on complex projects, our final deliverables are over-budget and behind schedule. Obviously, this is a problem not only for businesses, but also for people who value their time and money (i.e. most people). What is it about complex projects that creates so many problems for us?
First, we should look at simple projects. A simple project consists of four main features:
- The tasks involved are not novel
- The tasks involved are not resource-intensive
- Intense thinking is not required
- A team is not necessary to complete tasks
There is a bit of leeway to break the above rules. For example, a landscaping project would be a simple task for professional landscapers. They know how to operate lawnmowers, leaf blowers, and other necessary machinery. They have the physical strength to do the job. If they’re really good, they know what plants and other features would look best on your land. For them, landscaping tasks are mundane, not novel. They do not require massive amounts of capital or labor at the same level that business projects do. For skilled landscapers, tasks are second-nature. Finally, one person could landscape alone, though it’s often easier to have a team. As you can see, the rules have some wiggle room.
The criteria of complex projects, on the other hand, are as follows:
- The tasks involved are novel
- The tasks require large investments of time, money, and labor
- Intense thinking is required to solve novel problems
- A team is required due to time pressure and the presence of multiple goals
A complex task might be building and deploying a new software. The developers involved need to learn how to solve the necessary problems. Marketers, designers, and salespeople need to develop an identity for the new project and determine how best to convert people into loyal customers (this, in itself, is a complex project). These tasks require huge investment of tangible resources like capital and labor and intangibles like brainpower and willpower. Entire departments of this hypothetical company would be working towards the same goals.
Clearly, there are a lot of moving parts. The interdependence of various tasks in complex projects creates unpredictability. It’s hard to accurately forecast how long novel tasks will take, due to learning curves and unforeseen complications. Due to this forecasting problem, we face Hofstadter’s Law. It states that a complex project always takes longer than you expect, even when you take into account Hofstadter’s Law. This means that, even when you account for your lateness, you’ll still be later than you expect. Thus, you must assume that your project will endure extreme lateness as well as the associated cost overruns.
When most teams face late projects, they tend to throw more resources at the problem. However, Brooks’ Law tells us that adding more workers to a late project will actually make it even later. This occurs due to the learning curve that a new worker faces when dealing with a novel task; the time it takes the additional worker to become useful delays the project even more. Furthermore, adding more workers exponentially increases the communication channels between employees on the project. A team of two has one communication channel, but a team of four has six channels! This can lead to coordination failures, in which the inability to effectively make decisions together causes even more problems (improper allocation of resources, trying to reach the wrong goals, misidentifying potential problems). Finally, re-tasking an employee necessarily means that you are subtracting resources from whatever other project they were working on.
If we assume that all complex projects will be late and that adding resources will delay our project further, we seem to be faced with an intractable problem. However, Hofstadter and Brooks’ rules only apply to complex problems. What if we could find a way to make all of our problems simple?
We must turn to decomposition. Just as one can decompose a math problem, chemical compound, or biological matter, one can decompose a complex project. Most teams that try to decompose their projects do so improperly; they do not arrive at lots of simple projects but many small complex projects, which creates yet more coordination failures and switching costs. In order to decompose a complex project, you must refine tasks until they are no longer novel, no longer require intensive resource and brainpower, and no longer require a team. To continue from our complex software project above, we might divide up the development tasks so that one person is working on building a login and another is building cybersecurity (and so on). One marketer should take over Facebook marketing and another might work on Google AdWords. The project rapidly becomes decomposed into numerous simple projects.
These simple projects can often be automated or outsourced. This drives down costs and can actually speed up time to completion. When projects are sufficiently decomposed, one can estimate how long they will take more accurately. Perhaps the best way to make these estimations is to recall how long the same or similar tasks have taken in the past and find the average. Another method might be to ask colleagues or check Internet forums. Obviously, these methods may not be terribly precise. To rectify that, you should incorporate buffer time. To do so, multiply 1.65 (a z-score signifying 95% confidence) by the standard deviation of the similar tasks you’ve done in the past. Consider the following times for implementing cybersecurity: 1 hour, 2 hours, 3 hours, 7 hours, 10 hours, and 12 hours. The average of those task times is 5.8 hours and the standard deviation is 4.5 hours. If you multiply the standard deviation by 1.65, you get about 7.4 hours, which you can assume will be the time you take to complete the cybersecurity task even if things go wrong. Repeat this process for every simple task in the complex project and then compose them (i.e. add all of the tasks together while cutting out redundancies to find total project time). You can use this method for budget as well.
Thus, you can find a way to accurately estimate project time and budgets with buffer. Never be late on a complex project again!