20/09/2023
𝐌𝐨𝐫𝐞 𝐩𝐫𝐨𝐠𝐫𝐚𝐦𝐦𝐞𝐫𝐬, 𝐦𝐨𝐫𝐞 𝐩𝐫𝐨𝐛𝐥𝐞𝐦𝐬
If you’re a programmer, you probably know the problem – you’re stuck wrestling with a software project that's lagging far behind schedule. In this situation, it seems natural to think that throwing more programmers at the issue would do the trick, right? Wrong. It turns out that this is likely to backfire – and might even cause further delays.
This is the wisdom behind Brooks's Law, which proposes just that – scaling up the team size might actually extend the development time, particularly when a project is already off the rails. But what is it about the nature of software development that causes such a conundrum?
The thing is, software projects are two-layered entities. The top layer is what’s known as the essential complexity, or the soul of the problem that needs solving. The bottom layer, on the other hand, is the accidental complexity – the technical underbelly of infrastructure, tools, and interfaces. Initially, your fight is with the accidental complexity. Here, more warriors, or programmers, can be a boon. They can take down the beast faster.
But the battle shifts once you start dealing with the essential complexity. You’re in the realm of ideas, creating elegant algorithms and shaping intricate data structures. It's a process of deep thinking, creativity, and more than a little individual genius.
Now, imagine more people are added to this creative endeavor. The process gets disrupted as you’re forced to divvy up the tasks. The holistic vision gets fragmented like a puzzle, with each new member holding a piece but nobody seeing the full picture anymore. Every new addition also needs mentoring and training, which soaks up the energy that could've been used elsewhere.
So, what's the solution? Brooks has a few suggestions. First, instead of an automatic response of hiring, evaluate the feasibility of the project timeline or scope. Take a comprehensive inventory of the current project status – where exactly does the project stand in relation to the predetermined milestones? Are there specific modules or functionalities that are lagging, or is the delay widespread?
You might also consider performing a risk assessment. Identify any potential bottlenecks or obstacles that might arise in the future. Are there dependencies that could cause further delays? Maybe certain functionalities rely on third-party solutions that aren’t finalized yet.
But say you arrive at the conclusion that a manpower boost is absolutely necessary. If this is the case, then make sure to assimilate members slowly while being careful not to disrupt the existing harmony in your team.
So next time you're staring down a delayed project, pause before you draft in more programmers. Remember, more doesn't always mean faster – especially mid-journey. With careful and mindful additions, your team's velocity can be boosted without sacrificing the hard-won cohesion of the group.