TITLE: Notes from a Master Designer AUTHOR: Eugene Wallingford DATE: August 31, 2010 7:18 PM DESC: ----- BODY: Someone tweeted recently about a recent interview with Fred Brooks in Wired magazine. Brooks is one of the giants of our field, so I went straight to the page. I knew that I wanted to write something about the interview as soon as I saw this exchange, which followed up questions about how a 1940s North Carolina schoolboy ended up working with computers:
Wired: When you finally got your hands on a computer in the 1950s, what did you do with it? Brooks: In our first year of graduate school, a friend and I wrote a program to compose tunes. The only large sample of tunes we had access to was hymns, so we started generating common-meter hymns. They were good enough that we could have palmed them off to any choir.
It never surprises me when I learn that programmers and computer scientists are first drawn to software by a desire to implement creative and intelligent tasks. Brooks was first drawn to computers by a desire to automatic data retrieval, which at the time must have seemed almost as fantastic as composing music. In an Communications of the ACM interview printed sometime last year, Ed Feigenbaum called AI the "manifest destiny" of computer science. I often think he is right. (I hope to write about that interview soon, too.) But that's not the only great passage in Brooks's short interview. Consider:
Wired: You say that the Job Control Language you developed for the IBM 360 OS was "the worst computer programming language ever devised by anybody, anywhere." Have you always been so frank with yourself? Brooks: You can learn more from failure than success. In failure you're forced to find out what part did not work. But in success you can believe everything you did was great, when in fact some parts may not have worked at all. Failure forces you to face reality.
As an undergrad, I took a two-course sequence in assembly language programming and JCL on an old IBM 370 system. I don't know how much the JCL on that machine had advanced beyond Brooks's worst computer programming language ever devised, if it had at all. But I do know that the JCL course gave me a negative-split learning experience unlike any I had ever had before or have had since. As difficult as that was, I will be forever grateful for Dr. William Brown, a veteran of the IBM 360/370 world, and what he taught me that year. There are at least two more quotables from Brooks that are worth hanging on my door some day:
Great design does not come from great processes; it comes from great designers.
Hey to Steve Jobs. The insight most likely to improve my own work came next:
The critical thing about the design process is to identify your scarcest resource.
This one line will keep me on my toes for many projects to come. If great design comes from great designers, then how can the rest of us work toward the goal of becoming a great designer, or at least a better one?
Design, design, and design; and seek knowledgeable criticism.
Practice, practice, practice. But that probably won't be enough. Seek out criticism from thoughtful programmers, designers, and users. Listen to what they have to say, and use it to improve your practice. A good start might be to read this interview and Brooks's books. -----