Great Software Design

Excerpted from: No Silver Bullet — Essence and Accidents of Software Engineering, by Fred Brooks

Dick Dowdell
The Techlife
3 min readNov 1, 2022

--

Frederick PhillipsFredBrooks Jr. (April 19, 1931 — November 17, 2022) was an American computer architect, software engineer, and computer scientist, best known for managing the development of IBM’s System/360 family of computers and the OS/360 operating system — then later writing candidly about the process in his seminal book The Mythical Man-Month, a must-read for anyone connected with software development or development planning.

For those of us who were not developing software back in those ancient times (1960s), the concept of an operating system that abstracted the complexities of the hardware system was pretty new. When you moved from one computer to another type, model, or version, you usually had to rewrite the parts of your code that dealt with the hardware — things like memory, storage, and printing. The System/360 helped to change all that.

In 1976, Brooks was elected as a member into the National Academy of Engineering for “contributions to computer system design and the development of academic programs in computer sciences”.

Brooks received many awards, including the National Medal of Technology in 1985 and the Turing Award in 1999.

Here’s what Fred Brooks had to say about great software design:

“The central question — in how to improve the state of the software art — centers, as it always has, on people.

We can get good designs by following good practices instead of poor ones. Good design practices can be taught. Programmers are among the most intelligent part of the population, so they can learn good practice. Thus a major thrust in the United States is to promulgate good modern practice. New curricula, new literature, new organizations such as the Software Engineering Institute, all have come into being in order to raise the level of our practice from poor to good. This is entirely proper.

Nevertheless, I do not believe we can make the next step upward in the same way. Whereas the difference between poor conceptual designs and good ones may lie in the soundness of design method, the difference between good designs and great ones surely does not. Great designs come from great designers. Software construction is a creative process. Sound methodology can empower and liberate the creative mind; it cannot enflame or inspire the drudge.

The differences are not minor — it is rather like Salieri and Mozart. Study after study shows that the very best designers produce structures that are faster, smaller, simpler, cleaner, and produced with less effort. The differences between the great, and the average, approach an order of magnitude.

A little retrospection shows that although many fine, useful software systems have been designed by committees and built by multipart projects, those software systems that have excited passionate fans are those which are the products of one or a few designing minds, great designers. Consider Unix, APL, Pascal, Modula, the Smalltalk interface, even Fortran; and contrast with Cobol, PL/I, Algol, MVS/370, and MS-DOS.

Hence, although I strongly support the technology transfer and curriculum development efforts now underway, I think the most important single effort we can mount is to develop ways to grow great designers.

No software organization can ignore this challenge. Good managers, scarce though they be, are no scarcer than good designers. Great designers and great managers are both very rare. Most organizations spend considerable effort in finding and cultivating the management prospects; I know of none that spends equal effort in finding and developing the great designers upon whom the technical excellence of the products will ultimately depend.”

--

--

Dick Dowdell
The Techlife

A former US Army officer with a wonderful wife and family, I’m a software architect and engineer who has been building software systems for 50 years.