On Bureaucracy and Software
For a while now I have been thinking of ways in which software development techniques can benefit other areas of our lives. Software engineering is still a maturing field of study, but we have a lot of advantages over other fields. For one, our cycles are very quick – businesses demand continual improvements, and software seldom lives past 20 years of age. So, we learn quickly.
For another, seldom in history have so many smart people been focused on the same problems. Every software application is an experiment, and there have been millions of experiments performed. And we have learned.
We have learned the best ways to build complex organizations of interlocking components, each of these specializing in one thing, but working together toward a common goal. Of course, the goal is never static, so we know how to do this in such a way that we can adapt to changing requirements.
And this is where bureaucracy comes into the picture. A bureaucratic organization shares many of the same characteristics as software. There are many small parts, which must work together to perform some goal. But generally, they do not respond well to change. So, I ask the question, Is there something that Software Engineering can teach organizations, to make them respond better to change?
This is still a thought process for me, so I don’t really have any answers…