It happens all the time. As companies grow, they take on bigger and bigger software projects. Why is that?
Small companies work on small projects. Why? Simply because they can only handle small ones. They don’t have the staffing, equipment, office space or budget to handle big, long-term projects. Makes sense, right?
Big companies have many more resources at their disposal including partners, vendors and major customers. They have the apparent capacity to take on much bigger projects. So they do. If a small company can deliver something small, a big company can deliver something big. Makes sense, right?
Appearances Can Be Deceiving
This simplistic comparison of a small company to a big one contains a fatal implied assumption. The assumption is that complexity is linear. That is, as the company and more specifically its projects grow, complexity grows at about the same rate. That’s wrong! Complexity grows faster — much faster.
Think about this simple example. Imagine having a conversation with one other person about JSON data format (you don’t need to know what JSON is for this example). You might be an expert or a novice. Either way, the conversation would be informative.
Now imagine adding two more people to the discussion. It gets more complex. More questions. More details. More variations. More tangents. We’ve doubled the number of people and more than doubled the complexity.
Now add four more people. It’s no longer a single conversation. It’s multiple conversations and a whole lot more complexity.
The same type of thing happens with software projects. Going from a 10-person project to a 20-person project doesn’t double the complexity. It quadruples the complexity — at least. (I’ll spare you the math behind this conclusion. Take my word for it.)
I don’t mean to imply that complexity is bad. It’s not. As long as you recognize it and control it, you’re chances of success are as good as any software project. However, when you don’t acknowledge complexity and take appropriate steps to handle it, your project is DOA (dead-on-arrival). You may as well not even bother.
Then It Gets Worse
Complexity is not the only problem. Big projects develop personas. They take on institutional characteristics. They want to be preserved and protected. They even form antibodies to change making them highly resistant to efforts that might alter their courses or planned outcomes.
Many corporate executives have started colossal projects only to lose control of them. As more people are added to the projects, more and more ideas are generated. More ideas means more things to do — more artifacts to be delivered. Before long, the executive’s original vision is lost in the chaos and the project finds its own direction from within. No one knows where it will go. No one has control.
Enough already! Big software projects are bad. Smaller is better. Massive change efforts carry huge risks. Incremental changes are safer. Makes good sense, right?