- Bad Logic
- Bad Assumptions
- Planning for Predictability
- A Different Kind of Problem
- Messy Problems
- Software Development
Planning for Predictability
The manufacturing mindset tells managers they can predict the software they want and then build it.
Why would they assume that? Consider real life. What can you predict there? Very little. The norm is unpredictability, for everything from stock prices to the weather, but most managers try to predict the smallest details of their software projects anyway. You can see this if you look carefully at the typical software development plan again. It assumes we can predict the future far enough in advance, with enough detail, and with enough accuracy to plan for almost everything.
Most plans contain sections dealing with scope, contingencies, and assumptions. The names might be different, but all that stuff is usually in there. Reflect on what those sections mean. Before we've done any work at all, we try to write down our theories about how it will go, what we'll end up with, and what might bite us in the rear end. That, of course, assumes we can know what software we want after we think about it for a while. We can then proceed to build it.
How does the first assumption of the manufacturing mindset as applied to software—that managers can make useful, detailed, accurate, long-term predictions about software development—fare? Not very well. What software will users end up wanting in six months, or a year, or two years? Ask me then. Until then, I can't say with absolute certainty. No manager or software developer can either. But the plans most managers make demand it. A manager can't make entries in project planning software unless he knows lots of specific details about what will happen, and when, and how long each step will last.
Regardless of what we say about software projects, our plans reflect what we truly believe, or at least what plan readers believe. If that weren't so, somebody somewhere would say, “Hey, this is wallpaper!” Then people would stop making plans like this. Given that folks still do make them, we must really believe that software development is like factory work when, in fact, it just isn't.