By: Clay Shannon
Abstract: Consultant/trainer/writer Jerry Weinberg, who worked on the world's first operating system, talks about what you will never see at his training sessions and compares certain programming jobs to doctors agreeing to do surgery on corpses.
Jerry, many of your books, such as The Psychology of Computer Programming and The Secrets of Consulting, are considered to be among the best and most important programming books ever written. Which one[s] do you consider your best, and why?
I was especially influenced by many of your "laws" in "The Secrets of Consulting", such as Rudy's Rutabaga Rule ("Once you eliminate your
number one problem, number two gets a promotion") and The Titanic Effect ("The thought that disaster is impossible often leads to an unthinkable disaster"). Do you continue to come up with new "laws" such as these?
Yes. (One of my laws says don't ask yes/no questions in interviews.)
Ouch. How do you get ideas for new books?
A better question would be "how could someone avoid getting ideas for new books." All you have to do is look around at what people don't seem to know that they ought to know to do their jobs. This technique is particularly simple in the software business, as we are so young, so adolescent.
Are you working on any book[s] at present?
Yes. (I suppose you'd like to know which, but I've learned it's not a good idea to discuss your books before they're hatched. But I have about 30 books in process, so they cover a lot of ground.)
How long does it take you to write your books?
I don't know, as half of them are not finished yet. Besides, the question doesn't mean much, as you, a writer, ought to know. I am always gathering material for books, many books at the same time. When I have sufficient material for one book, I work on finishing it up and submitting it for review and, hopefully, publication.
Many people ask this question, but I think they (not being writers like you and I are) mean "how long does it take to write *down* a book - to get the words on paper or into my computer. Writing down is the least significant part - it's like coding. The gathering information and thinking parts are far more time consuming, at least if the writing is
done well. I have written down a (children's) book in an hour. I wrote down a novel once in eleven days. Those numbers are meaningless.
How do you divide your time between consulting, training, and writing?
For most of my career, I'd say it's been about equal for each of the three, but that doesn't tell much, as consulting and training give me material for writing, training and writing give me insights for consulting, and consulting and writing are what make my training and consulting sensible and relevant.
What do you consider the most important thing for a programmer to do when he begins working on a new project?
He? I don't think men and women should prepare for programming differently. I think each should be sure they are in good physical condition without nagging psychological problems. If you program from an off center place, your programs will be off the mark.
What do you consider the most important thing for a programmer to do when he begins working on a project that has already begun?
She should get sufficient information to decide, before signing on, whether she should sign on. Most programming projects that fail have already failed before most of the programmers have signed on, but through lack of courage or due diligence, many programmers sign on anyway. It's like doctors agreeing to do surgery on corpses.
What do you consider the most important thing for the project manager to do when a new team member comes on board a project?
Be sure that the person becomes a real team member, rather than just a body assigned to a particular group. There are many parts to this task, almost none of which are ever done.
What do you consider the most important thing for existing team members to do when a new team member comes on board a project?
Whatever is necessary for them to welcome this person as a member of their team. Of course, if they're not really a team already (but just called a "team"), then they won't be able to do this job, since nobody can become a member of a team that's not really a team.
What do you consider the most important thing to do at the conclusion of a project?
Finish it. All of it.
You might have expected me to say, "learn from it," and that's a good answer except that it applies at all times in a project, not just at the conclusion.
Do you know of any software projects that were successful in spite of the project "failing" in the traditional sense (i.e., the project was canceled or the software was never used)?
Another yes/no question. Yes. Many.
Even though it's a yes/no question, I'll volunteer something that's important to say about one specific situation. People seem to misunderstand what it means for a prototype to be "successful." Prototypes are projects designed to get information about unknown areas. If a prototype gets useful information, then it's a success, even though
lots of people may think it's a failure because the software isn't finished or never used. Finished software wasn't the reason for prototyping, so it's not a criterion for success. Some of the most successful prototyping projects I know demonstrated that a particular idea wasn't worth throwing any more money after. That's a big success - one I wish more projects would have.
Where do you live, exactly? If you are not native to that area, where are you originally from and in what other places have you lived?
I don't live exactly anywhere. I move about with the seasons, but mostly within New Mexico - desert in the winter, mountains in the summer. I'm writing this while surrounded by the Santa Fe National Forest.
How did you get started in programming (How were you introduced to it, when did you realize you wanted to pursue it as a profession)?
I knew when I was 11 years old, and I read an article in Time magazine about "giant brains." The name "programmer" had not been coined yet, but I knew that's what I wanted to do. That was around 1944, by the way.
How many years experience do you have as a programmer? What was your career path to where you are now?
My first professional job in computing was as a computer. That was my title - "Computer." I did calculations by hand and with a Friden electromechanical calculator for the Physics Department, starting when I was 16. That was an experience that a lot of people who program today could benefit from, but they'll never get it.
I never took a course in computers. There were no courses when I went to school. When I started working for IBM in 1956, I was given a manual and a program library for the IBM 650 and told that I would teach the programming course in two weeks. I still had not seen a computer, and didn't until some months after that course. By that time, I knew (in theory) how to program for five machines, all in machine language - the IBM 650, 704, 604, 607, and 602a. Some were programmed on punch cards, some by wired boards, and some by combinations.
What languages do you know? Which ones do you currently utilize? Or are your coding days behind you?
English, French, German, and a little Swedish. I'm trying to learn Spanish now, living in New Mexico.
I've programmed in more computer languages than I can remember. At a certain point, they're all pretty much the same. (That should enrage large numbers of your readers - those who think programming languages are worth debating. I don't.)
By the way, my greatest contribution to computing was that I never invented a programming language, though I helped the inventors of many of them, such as APL, PL/I, Pascal, Simula, Objective C, SQL, and a variety of meta-languages such as the IBM Zurich formal definition language. Mostly, though, I've been an operating system guy, having worked on the world's first operating system and architected the world's first real-time multiprogrammed operating system.
Nowadays, I program stuff for personal use as needed, in whatever language is needed. With clients, I often read programs and help them find bugs, which is largely a language independent task.
All in all, I've been programming since 1956, and written at least a few programs even in lean years. If you count the years when I programmed myself (the Computer), I've been programming for over 50 years.
Would you recommend a career in programming to young people today?
It depends on what the young person wants to do. I always give the same career recommendation: "Do what you want to do."
What courses would you recommend they take? What languages/technologies should they key on?
They shouldn't key on languages and technologies. They should key on learning to communicate, to think, and to work well with other people. Once they have those, the languages and technologies become simple matters. Without them, no amount of language or technology expertise will do much good.
Which software project/product that you have participated in are you most
I'm proud of all my work, and I don't participate in projects whose product I wouldn't be proud of.
What project[s] are you currently working on?
I cannot write about my clients' projects, but a project that's very dear to my heart is our AYE Conference (Amplifying Your Effectiveness - www.ayeconference.com). It's a different kind of conference, trying to boost eople's effectiveness in the areas I mentioned above - learning to communicate, to think, and to work well with other people.
What is the name of your business and/or employer?
Weinberg and Weinberg.
What is your web site URL?
If you had a webcam on your shoulder throughout a "typical" workday, can you give us an outline of what we would see?
I don't have a typical workday. On writing days, you would see a computer screen with a cursor moving rapidly across spewing words, perhaps for 8 or 10 or 16 hours. On a consulting workday, you would see and hear lots of people talking and demonstrating their work to me, with a very small amount of time with people listening to me. On a training workday, you would be watching lots of people eagerly doing problem-solving exercises, laughing, scratching their heads, and undergoing various sorts of emotional turmoil. Some of the time you would see and hear them discussing what they just went through. One thing you would never see is PowerPoint slides.
What do you do when you're not involved with work, directly or tangentially? (Hobbies? Sports?)
Hiking, writing fiction, playing with dogs and children, lifting weights, cycling, rowing, listening to music while reading (or reading while listening to music), watching people, learning new things ...
What was the funniest experience you've ever had related to consulting?
I couldn't pick one. Buy one of my consulting books and you can read about many of them and choose one for yourself.
Which programming-related web sites do you have bookmarked?
My SHAPE forum, the AYE wiki, many specific Mac sites (software and hardware), StickyMinds. Nowadays, I bookmark very few sites - googling fresh is easier. But I have a lot of interesting sites linked from my own site.
Who do you consider to be the best programmer you know personally, or know of?
One of my students once told me that Bill Gates was the world's greatest programmer. I asked why, and he explained that Bill Gates was the richest person in the world, so he must be the best programmer.
After that, I stopped attempting to answer this silly question. Either it's Gates (by the money criterion) or else there are so many with different skills that comparison would be meaningless).
If you weren't a consultant, what do you think you'd be doing for a living?
I don't do consulting for a living. For a living, I depend on all the royalties I've saved. I've never done anything for a living. I've done what I loved doing, and, as the book says, the money followed. (Besides, I don't have expensive tastes.)
If you could live anywhere on earth at any time, when and where would it be, and why?
Right here, right now. Why? Because if you don't live in the moment, it's not living.
If you were given 30 seconds of free television air time, to be broadcast all throughout the earth, and could say anything you wanted, what would it be?
I'd say, "Turn off this TV and play with your kids."
What is you favorite programming book?
Alice in Wonderland plus Alice Through the Looking Glass. I often used this as the textbook in my courses on software development.
Carroll, L., Through the Looking Glass. The Annotated Alice ed, ed. M.
Gardner. 1960, New York: Clarkson N. Potter, Inc.
What is you favorite non-programming book?
Same as above.
What is you favorite food?
Anything I can eat without triggering one of my many allergies.
What is you favorite beverage?
What is you favorite color?
I'm just happy I can see colors, any colors.
What is you favorite movie?
The Purple Rose of Cairo
What is you favorite song?
Ode to Joy
What is you favorite musician or musical group?
My wife, Dani, when I can get her to play the piano.
Finally, the question I always like to ask: What would you rather eat: the fat from behind a caribou's eyeball, or a frosted poptart?
The caribou fat. There are things I'm allergic to in a poptart, but as far as I know, I'm not allergic to caribou fat.
Is there anything you'd like to add that I neglected to ask about?
1. I appreciate anyone who took the time to read this interview.
2. I'd advise such a person to spend their time reading Alice, next time. You'll get a lot more out of it.
Clay Shannon is a Borland and PDA-certified Delphi 5 developer and the author of "Tomes of Delphi: Developer's Guide to Troubleshooting" (Wordware, 2001) as well as the novel he claims is the strangest one ever written, "the Wacky Misadventures of Warble McGorkle" (see Wacky Warble, etc. for more information on the 4 Novels application, which contains this and three other novels he has penned).
You can find out more about Clay at: http://hometown.aol.com/bclayshannon/myhomepage/index.html
You can look into Clay's shareware and determine his current availability at: http://hometown.aol.com/bclayshannon/myhomepage/business.html
You can contact him at: BClayShannon@aol.com
Try Delphi XE4 free for 30 days
New Instant Trial!
Webinars on demand!
More social media choices:
Delphi on Google+
@RADTools on Twitter
Server Response from: ETNASC04