Edit: Added page numbers for quotes.
I’ve been reading quite a few programming books lately including The Mythical Man-Month and Death March, both excellent books.
I’ve just started reading The Inmates are Running the Asylum. A work colleague read this before me and warned me that he found it annoying. He was right. I’m only about 20 pages in and I’m finding it extremely annoying. Some selected segments below.
page xx
Accountants call these “variable costs” because the expense varies directly with each product built. “Fixed Costs”, as you might expect, don’t vary directly… In the information age, there is little or no variable cost, whereas in the late industrial age, variable cost was the dominant factor. Indeed, the absence of variable cost is what makes this a new economy.
Effectively he is arguing that software has only fixed costs and “old” manufacturing is dominated by variable costs. Old manufacturing could be dominated by fixed costs: administration, building of the plant, digging mines. In addition software costs have variable costs. The more customers you have, the more features that will be requested before a new product is released. More customers also means more time on support for your product (and that is an integral part of shipping software). More customers means more requests for features in patches after the product has been released. You don’t think that Microsoft stopped work on XP after it shipped do you?
In addition, while I agree that software has more fixed costs than variable costs, Cooper talks as if this is a completely new thing to the business world. How about costs for making movies, CDs and Art? Those are almost totally fixed costs.
page xxiv-xxv
This model is copied directly from academia, where the act of creating software is entangled with the planning and engineering of that software. … Architecture … is typically deferred until construction has begun and is corrupted by intermingling with production code.
Hooray. Bring back the waterfall model of software development.
page 3
On the landing approach, the pilot of 757 needed to select the next radio navigation fix, named “ROZO”. The computer returned a list of these starting with “R”, and the pilot selected the first of these, whose latitude and longitude appeared to be correct. Unfortunately, instead of “ROZO” the pilot selected “ROMEO”. … the pilot began an easterly turn and slammed into a granite peak at 10,000 feet. …. One hundred and fifty-two passengers and all eight crew members perished.
I, think, he, uses, too, many, commas. On average one could be removed from every sentence. But I digress.
This crash is held as an example of bad software. However it isn’t enough to point the finger and say it was bad, you must say how it can be made better. Do you confirm the choice of beacon? If you do that all the time people ignore confirmations. Do you rename the beacons so there are none that start with the same letter? That assumes that there are only 26 beacons (unlikely). Do you get the pilot to map out which beacons they will hit on their flight path before the flight, ensuring that only beacons on that flight path appear in this beacon list? That doesn’t stop the pilot selecting the wrong beacon before the flight. Do you make the pilot type the full name in? That would just annoy the pilots further. In short it remains the pilot’s problem to ensure that the correct beacon is selected, which is what the National Transport Safety Board decided.
Nice example.