Silver Anniversary Edition
ISBN: 0-932633-42-0 384 pages softcover
Dorset House Publishing
(translated into Japanese, Korean, German, Chinese)
"This is the best book on computer programming ever written."
– Datamation
Sample and/or Buy the ebook through:
Buy at Amazon.com
Let's let these distinguished reviewers speak for themselves:
J.J. Hirschfelder, Computing Reviews:
"The Psychology of Computer Programming . . . was the first major book to address programming as an individual and team effort, and became a classic in the field. . . . Despite, or perhaps even because of, the perspective of 1971, this book remains a must-read for all software development managers."
Here's what Sue Petersen said in Visual Developer Magazine:
I won't even pretend to be objective about this book. Jerry Weinberg is a mentor and friend, as well as a colleague and one of the best thinkers and writers our profession has produced. I've been following the progress of this new edition for a couple of years. I had the opportunity to comment on the manuscript in progress, as did many of his other students, but I was busy and never did get around to reading it. So I came to it fresh when it recently dropped upon my doorstep.
Psychology was written in 1969, published in 1971, and has been in print continuously since then, a record no other computing book can boast. In this new edition, Jerry looks at where we were 30 years ago, where we are now and where we might be in the future. Instead of changing the original text, he's added new comments to each chapter. This allows the reader to compare and contrast his thinking over the decades, showcasing the errors and omissions as well as the threads that bore fruit.
The technology in Psychology is obviously outdated, but I found it fascinating nonetheless to note the 'current' ideas that were to become so influential later on. Psychology was written before Fred Brook's Mythical Man-Month-, but Jerry makes a passing reference to Brooks' thoughts on Chief Programmer teams. It was written a year after Dijkstra's Go To Statement Considered Harmful- ignited a firestorm of controversy but before Structured Programming had swept the field, and Jerry makes several comments about readable code that demonstrate the ferment of ideas that Structured Programming arose out of.
Most of the 'people-stuff' in Psychology has stood the test of time better than the technology. Jerry's comments are as relevant today as they were 25 years ago. "…good programmers are made, not born; therefor we should turn our attention to the manufacturing, or training process." (page 176)
This one issue–communication–has been at the core of Jerry's work for decades. Unknown to him at the time, Psychology was to form the outline of his life's work. He's spent 30 years expanding on Psychology and the roots of his more recent work are evident here. It isn't my all-time favorite Weinberg book, Becoming a Technical Leader probably has that honor. But Psychology is valuable as history in a field that is all too ready to repeat the errors of its past. Read Psychology as a picture of where we've been, where we are now, and where we need to go next. Read it as an index to the thinking of one of the most influential figures in our field. © Sue Petersen 1999
Here's what Johanna Rothman http://www.jrothman.com said in her newsletter:
Egoless programming. Twenty-five years ago, Jerry Weinberg published The Psychology of Computer Programming. I discovered the book in 1977, and decided I wanted to work as an egoless software engineer, not as a radio disk jockey.
Egoless programming occurs when a technical peer group uses frequent and often peer reviews to find defects in software under development. The objective is for everyone to find defects, including the author, not to prove the work product has no defects. People exchange work products to review, with the expectation that as authors, they will produce errors, and as reviewers, they will find errors. Everyone ends up learning from their own mistakes and other people's mistakes. That's why it's called egoless programming. My ego is not tied to my "perfect" or "imperfect" work product. My ego is only tied to my attempts to do the best job I know how, and to learn from my mistakes, not the initial result of my work.
This is just one of the ideas still promoted in Weinberg's Silver Anniversary Edition. The book retains the same structure as the original edition:
Programming as Human Performance
Programming as a Social Activity
Programming as an Individual Activity
Each chapter has comments at the end, living up to his promise in the preface: "I would not try to hide my errors, for they may be the source of the most learning for my readers. I have left the original text as it was&emdash;antiques and all&emdash;for your illumination, and have simply added some "wisdom of hindsight" remarks whenever the spirit moved me."
I especially enjoyed comments on "Chapter 3: How can we Study Programming?" Weinberg says, "Managers who pay attention to people get good results. Many managers (especially those who were once programmers) want their people to behave like modules of code. These managers think people should function as little black boxes that tasks are fed into and work comes out of, with no observation necessary, and especially no interaction." Met any managers like that recently?
I also enjoyed the comments on "Chapter 13: Other Programming Tools". Weinberg says in his comments "Well, actually, I don't miss cards too much (and I miss paper tape even less!), but I'm enough of a reprobate to yearn for some of the forced delays&emdash;delays that gave me time to think about what I was doing. Whatever the future of programming may bring, I firmly believe it will still reward thinking over mindlessness. … Should we be doing more to support the programmer who wants time to reflect&emdash;and a lot more to support the one who doesn't?" Much of what I do with people and their organizations is to help them see what they are doing and how they are doing it&emdash;that reflection thing.
Sometimes, oldies are goodies. Old books can be even better when they're revised to assess their prophecies and sage advice.
Here's what Steve McConnell, editor-in-chief, said in IEEE Software:
Gerald Weinberg's Psychology of Computer Programming is at the very top of my list of favorite software development books. The following excerpt [not included here] from the silver anniversary edition describes the much misunderstood idea of "egoless programming." To some readers 25 years ago, it must have sounded like a fanciful programming nirvana. since then, egoless programming has given rise to a variety of powerful review techniques, including (at least in part) the open-source idea that "given enough eyeballs, all bugs are shallow." Good software engineering ideas will outlast specific technologies by decades, and there is no better evidence of that than the ideas contained in Psychology of Computer Programming.
Here's what Computerworld had to say:
Managing misfits is still key 25 years later
By Michael Schrage
Gerald Weinberg's classic, The Psychology of Computer Programming, had a huge influence on my life. After reading it in high school, I discovered I didn't want to be a computer programmer.
Don't get me wrong: Some of my best friends are programmers, and computer science was one of my majors. But Weinberg's portrait of what programmers did and how they did it . . . well, I felt that his book could have also been called The Pathology of Computer Programming.
Now, I'm a big fan of Weinberg's work on requirements and walk-throughs, and I got a huge kick out of his extraordinarily clever books on consulting and technical leadership. So when the Silver Anniversary edition of Psychology recently appeared, I wanted to see if my response to the original edition was precocious or merely immature.
Re-reading the book was a bracing experience: Weinberg's Psychology is a classic because he identified an issue that was going to become more important with time &emdash; the care and feeding of programmers and programming teams. Even as a teen-age geek with an Imsai and Plato access, I sensed that technological issues were subordinate to human issues.
Then again, it was clear that computers were going to change everything. The challenge was going to be to figure out how: Would software be the product of personal or interpersonal genius? But I never dreamed that the business world Weinberg described would be as immature and irrational as my high school.
Stupid me! Weinberg clearly believed in managing teams more than managing technology. Even more, he believed in managing dysfunctional teams. He understood that managing people's weaknesses and flaws is as important as managing their strengths. Frankly, I was frightened by a book about managing organizational misfits masquerading as a book about systems design. Weinberg's insights simultaneously struck me as wildly clever and stupendously insulting: If a programmer is indispensable, get rid of him as quickly as possible.
In his Silver edition, Weinberg notes that he's been thanked countless times for that particular management epiphany. I'm still struck by the number of firms that don't appreciate this kind of design heuristic. But as Weinberg notes, ". . . the lack of software skill was never the problem. Lack of managerial skill was always the problem; lack of software skill was merely a convenient excuse for those managers who lacked esteem."
I'm not a touchy-feely kind of guy, but I recognize that the fundamental truth Weinberg zeroed in on decades ago was that it would be the touchy-feely issues &emdash; not new tools, technologies or languages &emdash; that would have the biggest impact on the quality of software development. Like Fred Brooks' Mythical Man-Month, Weinberg's Psychology endures because it recognizes that organizations are prisoners of their pathologies.
What technology offers is a new lens and lever into organizational interactions and innovation. For that reason, I was a bit surprised that Weinberg's update didn't talk about the role of rapid prototyping, joint application development and other methodologies designed to link software development, managerial development and organizational development more creatively. But still, it's astonishing how relevant the book remains.
For me, re-reading Psychology was less a trip down memory lane than a reminder of a hard-won lesson: In a time of technological turbulence and digital discontinuity, management leverage often comes from those things that don't change &emdash; despite our best efforts.
Schrage is a research associate at the MIT Media Lab and author of No More Teams! His E-mail address is [email protected]
Here's what Ed Yourdon wrote on The Cutter IT E-Mail Advisor, the weekly e-mail service for subscribers of the *Cutter IT Journal* ™.
REBIRTH OF A CLASSIC
A long time ago, in what now seems like a galaxy far, far away, a software guru by the name of Gerald Weinberg wrote a book called *The Psychology of Computer Programming*. Several of my colleagues and I stumbled upon the book by accident when it first appeared in 1971, and we were all thunderstruck — no one had ever suggested that software development might be considered as a human activity. Over the years, the book became an international bestseller, but it then ran afoul of the whims and vagaries of major publishing companies and quietly faded away. A small but highly influential publisher, Dorset House, rescued the book in the late 1980s and made it available once again, but a new generation of software developers paid scant attention. After all, how could a book written in the primordial era of the early 1970s possibly have any relevance in the late-1990s world of Java and the Web?
To my delight, a new "silver anniversary edition" of Weinberg's opus recently appeared in my mailbox. Also published by Dorset House, it contains a chapter-by-chapter commentary by the author on the key topics discussed throughout the book:
* Programming as a social activity
* Psychological management
* Egoless programming
* The programming team
* Common social problems of large projects
* Intelligence, or problem-solving ability
* Motivation, training, and experience
* Some principles for programming language design
The chapter entitled "What Makes A Good Program?" illustrates how things have changed. The original chapter discussed such obvious characteristics as efficiency and adaptability, but in his commentary, Weinberg now notes that "the biggest NEW factor in determining how we judge the quality of code is the economic factor. A program that sells, and makes profits, is obviously better than one that doesn't. At least several non-programmers have told me that Bill Gates is the world's greatest programmer. In my career as a programmer, most of the operating system code I wrote was given away, so naturally I'm suspicious of this financial measure!"
It hardly requires mentioning that computer hardware technology has improved by several orders of magnitude in the 25 years since *The Psychology of Computer Programming* was first published. By contrast, one could argue that human nature has changed not a whit in the same period; after all, people are still people. But it's quite possible that our values, perceptions, and expectations about computers HAVE changed, and this may have an enormous influence on the way we behave. We didn't develop software for the general public in those days, and we certainly didn't expect that our software might expose the public to the kind of risks associated with today's Y2000 dilemma.
Whether you're part of the generation of the 1960s and 1970s, or part of the current generation of the 1980s and 1990s, you owe it to yourself to pick up a copy of this wonderful book. Once you've digested it, you should then track down all nine of the other Weinberg textbooks published by Dorset House (located at http://www.dorsethouse.com on the Internet). Every one of them is a jewel.
Ed Yourdon
Cutter IT E-Mail Advisor
Silver anniversary edition hits gold
Reviewer: B. Scott Andersen from Acton, MA USA (Source: Amazon.com)
The silver anniversary edition is an updated version of the classic work originally published in 1971. How can this still be relevant? Easy: people haven't really changed.
Weinberg did something courageous in his updated text. Instead of whitewashing history, he let his original text stand, unedited, and simply commented on each chapter separately. The approach worked for me, making an already entertaining text a joy to read.
What is all this about? Weinberg writes "This book has only one major purpose–to trigger the beginning of a new field of study: computer programming as a human activity, or, in short, the psychology of computer programming. All other goals are subservient to that one." Indeed there has been much study of computer programming as an art and as a discipline for individuals and for groups. This book may represent the beginning of that noble effort.
Don't be put off by the technology Weinberg occasionally uses within the text. At the time of this book's writing, FORTRAN, PL/1, and APL were in common use and OS/360 was the defacto standard. If echoes of the past bother you, ignore them! Instead, concentrate on Weinberg's main topic: the people who develop software systems. For example, consider the following: "…the average programming manager would prefer that a project be estimated at twelve months and take twelve than the same project be estimated at six months and take nine. This is an area where psychological study could be rewarding, but there are indications from other situations that it is not the mean length of estimated time that annoys people, but, rather, the standard deviation in actual time taken." Of course this notion applies as much today as it did then. Weinberg provides numerous, powerful insights throughout the text that have stood the test of time. He got it right then–and it is still right.
The book is well researched and contains many stories. All ring true and some made me laugh out loud. If you don't see a little of yourself in this book, you aren't a computer professional. Buy it, read it, and then leave it on your manager's chair. It will do both of you a world of good.