Ilya's Reviews > The Design of Design: Essays from a Computer Scientist

The Design of Design by Frederick P. Brooks Jr.
Rate this book
Clear rating

's review
Jan 27, 2013

really liked it
bookshelves: engineering

In 1961-1965, in his early 30s, Frederick Brooks was the project manager of the IBM System/360 and OS/360 project, one of the most successful engineering projects in history. Called "I.B.M.'s $5,000,000,000 gamble", this project succeeded enormously, and transformed not only the company and the industry, but the entire civilization: the computer architecture and it successors, and the operating system and its successors have been the de facto standard for mainframe computers ever since (of course, mainframe computers have been becoming ever less important in the world of computers, though they are still a multibillion-dollar business). Though Brooks has done other things later in life (working on interactive computer graphics, serving on the Defense Science Board, writing a textbook on computer architecture together with one of the architects of System/360, writing the famous book on software engineering The Mythical Man-Month), working on System/360 and OS/360 was the experience of his lifetime. He goes deeply into the design decisions made in these two projects. Having 8 bits instead of 6 bits in a byte, which allowed lowercase letters in software applications, was a terrific idea. JCL, on the other hand, was "the worst computer programming language ever" because its designers did not realize that they were creating a programming language (I would add templates in C++ as a much later example of an inadvertent programming language). A design goal was for the architecture to have 24 bits of address space, to be eventually extended to 32 bits; unfortunately, one instruction used the top 8 bits for its own purposes, which the architect overlooked, so when the architecture was extended to 31 bits (not 32 because of other design flaws) in System/370, programs compiled for System/360 had to run in a special compatibility mode. Emulation of earlier IBM computers was a great idea; adding decimal arithmetic for monetary values probably wasn't; applications or compilers should have stored the number of cents as an integer. Implementing OS/360 in assembly instead of PL/I made it less reliable, less clean, and slower to be delivered. Brooks gives more examples of good and bad design from his career, although System/360 and OS/360 are clearly where his passion lies. As a civilian expert on the Defense Science Board, he was invited to the review of the RAH-66 Comanche helicopter program, which was later canceled after a $6.9 billion investment. The colonel who briefed them said that one of the requirements for the helicopter was to be able to ferry itself across the Atlantic. Brooks asked, why it needed to do that: surely, this capability had to come at the expense of other capabilities more relevant to an attack helicopter. The colonel answered that this was because they did not have enough C-5 transport planes. Brooks asked, why they couldn't take some money from the helicopter program and use it to buy more planes. The colonel replied, "That's not possible," without explanation. There was no helicopter pilot or aircraft engineer on the committee formulating the requirements; just bureaucrats protecting their own turf. How could good design ever have emerged from that?

Sign into Goodreads to see if any of your friends have read The Design of Design.
Sign In »

No comments have been added yet.