Wednesday, October 23, 2013

Obamacare vaporware will get worse still.
Or: How VC-wannabe Obama will learn about the mythical man-month.

Twenty years ago, Frederick Brooks wrote the classic book The Mythical Man-Month to discuss the challenges facing engineers when they develop large software systems. This book is required reading in CS programs around the world and its findings have been confirmed by every software engineer (including myself) who has ever worked on large software projects.

The book addresses the following question: When a large and complex software project is behind schedule, what should you do to speed up its completion? The naive answer is that you should add more software engineers to the project. The basic reasoning behind this answer goes like this: If one software engineer will take one year (twelve man-months) to complete a task, then it should take 12 software engineers one month (again, twelve man-months) to complete the same task. Brooks demonstrates that this reasoning is fallacious. Instead, he posits a thesis that has become known as Brooks Law:

    Adding manpower to a late software project only makes it later.
Brooks Law is true for two basic reasons, as summarized by Wikipedia:
  1. It takes some time for the people added to a project to become productive. Brooks calls this the "ramp up" time. Software projects are complex engineering endeavors, and new workers on the project must first become educated about the work that has preceded them; this education requires diverting resources already working on the project, temporarily diminishing their productivity while the new workers are not yet contributing meaningfully. Each new worker also needs to integrate with a team composed of multiple engineers who must educate the new worker in their area of expertise in the code base, day by day. In addition to reducing the contribution of experienced workers (because of the need to train), new workers may even have negative contributions – for example, if they introduce bugs that move the project further from completion.
  2. Communication overheads increase as the number of people increases. The number of different communication channels increases rapidly with the number of people. Everyone working on the same task needs to keep in sync, so as more people are added they spend more time trying to find out what everyone else is doing.
The Obamacare website and all the back-office enterprise software components that support it obviously qualify as an example of the kind of system that Brooks had in mind. The project is obviously very much behind schedule and very buggy. So, what is President Obama doing? Precisely, what Brooks said he should not do: he is adding manpower to the project. Reports the President:

    We've had some of the best IT talent in the entire country join the team. And we're well into a tech surge to fix the problem.

I can just imagine this new "best IT talent surging" onto the project and declaring "We are in charge now." There is no surer way to get the engineers already on the project to say "fuck this" and simply give up. When people already on the project are alienated, they will become uncooperative and stop supplying information about the architecture and implementation of the system.

In addition, Democrats are growing increasingly annoyed with their dysfunctional software system. Mr Obama fumed:

    Nobody’s madder than me about the fact that the website isn’t working as well as it should, which means it’s going to get fixed.

Bitched Nancy Pelosi:

    I think somebody should fix it. Coming from where I do in California, I have great confidence in technology and its ability to bring fresh eyes to the subject and fix it so that we can go forward. Just fix it, just fix it.”

In spite of the fact that she comes from California, Nancy obviously does not understand very much about the challenges of large software systems. "Just fix it" is the cry of someone who simply doesn't know what to do or even how to get started.

So, where do we stand? We have a software system that is terribly late and horribly buggy, the President is adding manpower to the project, and all the Democrats, increasingly dismayed that the system is not working, are applying enormous pressure to the engineers to "just fix it." Given the way things are working out, the Obamacare fiasco probably calls for a revision of Brooks' Law. It should now read:

    Adding manpower to a late software project only makes it later. And having politicians watch over engineers' shoulders and scream at them while they are trying to fix problems, only makes the project even later and more buggy still.

In an earlier blog post in July, I made the following prediction:

    The idea that all the computer systems required to implement Obamacare will be up and running smoothly by October is sheer fantasy. The recent announcements of delays in the implementation of Obamacare are just the beginning. Expect a steady drumbeat of additional postponements from the Obama administration as the implementation of Obamacare falls farther and farther behind schedule.

That prediction has come true in spades. Expect the problems with the system not to decrease, but actually to increase. It is a certainty now that the personal mandate will be delayed, just as the Tea Party Republicans insisted it should earlier this month.

No comments:

Post a Comment