Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Hardware Books Media Book Reviews

The Psychology of Computer Programming 10

After a long hiatus away, Jason Bennett has returned to book reviewers with this review of Gerald M. Weinberg's The Psychology of Computer Programming (Silver Anniversary Edition). This book talks about the meta side of CS, and this book is where many of the other mental CS books have their roots-which means some repitition. Click below for more info.
The Psychology of Computer Programming (Silver Anniversary Edition)
author Gerald M. Weinberg
pages
publisher Dorset House
rating 7/10
reviewer Jason Bennett
ISBN 0-932633-42-0
summary

In many ways, this is the book that started the "meta" trend in computer science. Most books that discuss the mental side of CS have their roots here. Unfortunately, that also means that you've heard it all before.

Background

Long time, no talk! Unfortunately, my reading schedule didn't exactly go as planned (for various and sundry reasons, like slackness), and thus my reviews have not been coming as fast and furious as before. It's good to be back in the saddle again, however, dispensing syrup and vitriol as required.

What's the book about?

The original preface to POCP says it best: "to trigger the beginning of a new field of study: computer programming as a human activity...." Before the original edition, most books viewed programming in a mechanical fashion, in terms of how better to turn a crank. Weinberg, however, deliberately took a different approach: programming is done by people, as part of a thought process, and should be studied as any other thought process. This book focuses on the people aspects of programming, and how people think about doing programming. It discusses how to study programming, how people work together on programming projects, how people program alone, and what tools people use to get their work done. In short, it discusses how people program, not how code is best churned out.

What's Good?

Even though this is the original book on programming psychology, Weinberg managed to hit most of the important facets of the subject. Now, 25 years and many books later, he has come back to the subject. The book itself consists of all of the original work, annotated with chapter-ending notes and reflections. In other words, you read the original chapter, and then Weinberg's thoughts on it. This is not unlike the anniversary edition of Mythical Man-Month, although there is much less new material here. As with most meta-books, the ideas have aged well. People don't change much over 25 years, even though their surroundings do. Egoless programming, the passing around of code for peer analysis, was pioneered in the original work, proven over the years, and still needs to be implemented in more ways. Generally, Weinberg introduces the entire field of computer psychology, laying the groundwork for an entire area of research.

What's Bad?

Well, to be perfectly honest, I didn't enjoy the book that much, at least in terms of enjoying the reading. I feel that I learned some things, but I don't think the book has aged well in certain areas, and additionally I felt that much of the material was covered elsewhere. MMM taught me things that I had never thought of before, and in fact have not been well covered elsewhere since then. Plus, there was a huge section analyzing the entire book. TPOCP, on the other hand, has pages and pages devoted to annoying PL/I details, while adding only a few blurbs here and there. Note that the ideas themselves are still important, there's just a lot to wade through to get to them. In addition, I think this material has been well covered by books such as Peopleware and others. The book is enough of a classic that nothing can be said to be "bad," but I question if it hasn't been superceded.

What's In It For Us?

It's always important to look at we do on a metaphysical level. Computer science and software engineering are some of the most non-physical work areas known, and because of that can be difficult to analyze. Whether you choose this book, or one of the others mentioned above, do read up on how people deal with programming. It's just as important, if not more so, than language syntax or new IDE's.

Purchase the book over at Computer Literacy.

Preface to the Silver Anniversary Edition
Original Preface
Comments on the Original Preface
Suggestions for Course Use

Part 1: Programming as Human Performance

  1. Reading Programs
  2. What Makes a Good Program?
  3. How Can We Study Programming?

    Part 2: Programming as a Social Activity
  4. The Programming Group
  5. The Programming Team
  6. The Programming Project

    Part 3: Programming as an Individual Activity
  7. Variations in the Programming Task
  8. Personality Factors
  9. Intelligence, or Problem-Solving Ability
  10. Motivation, Training, and Experience

    Part 4: Programming Tools
  11. Programming Languages
  12. Some Principles for Programming Language Design
  13. Other Programming Tools

    Part 5: Epilogue
    Index
This discussion has been archived. No new comments can be posted.

The Psychology of Computer Programming

Comments Filter:
  • by Anonymous Coward
    I am interesting in reading books on this topic. Can anyone provide guidance? Is this book a good place to start, or are there better sources for this info? Thx.
  • by Anonymous Coward
    I strongly recommend anything by this man. He started programming in the 50's, back when it paid to time your loops precisely because memory was on a rotating drum! Then he realized that in real life, in big systems, the "real" problems are rarely the technical ones. He has written many books, and they all contain usefull information. The only disappointment for me was his jointly authored "Handbook of Walkthroughs, Inspections, and Technical Reviews". (I didn't feel that one's question and answer format was appropriate for a whole book.)

    He writes so well that his points often seem deceptively obvious and simple. But often, when things haven't gone well, I think back to a point from one of his books and realized that I'm suffering because I hadn't absorbed one of his "obvious" lessons well enough to act on it.

    This anonymous coward is Tom Morrisette, eiffelpgmr@nni.com.

  • by Anonymous Coward
    If you search Amazon for Weinberg books, prepare to be buried. He's written a bunch of good stuff. Here are some starting points

    Whether you're working solo or on a mega-project "Becoming a Technical Leader" is a good start if you're looking for practical advice on how you can be more effective.

    Jerry's "Quality Software Management" series (four volumes) is a treatise on the inner game of projects. You'll come away with a deeper understanding of why things happen the way they do, and where the leverage points to make things happen differently.

    Jerry also runs some outstanding
    workshops on Technical Leadership.
    There is more info on his web site, http://www.geraldmweinberg.com

    Dave Smith
    dws@best.com
  • Code Complete [amazon.com] by Steve McConnell (Microsoft Press, 1993) is both a good introduction to software quality practices (on the applied, not theoretical, level), and has a very good bibliography of prior works, including PCP, MMM, Peopleware, and other classics.

    Despite the irony of being published by Microsoft, this really is quite a solid book. It's the best of the three titles produced by McConnell (others are Rapid Development and Software Project Survival Guide). McConnell maintains related information at his web site [construx.com].

  • I was considering this book until you mentioned that it's where the idea of egoless programming came from.

    Egoless programming is possibly the stupidest thing I've ever heard of. Sure, it gets rid of the problem of people being offended when 'their' code goes wrong, but it also removes all the pride in a job well done, (Hubris, one of Larry Wall's three cardinal properties of good programmers.)

    If it's not my code, I don't feel as obligated to get it done right, since it's not my pride on the line.

  • The basic problem is that managers don't care. They want the results they've promised at the widest possible profit margin. They don't care if it's possible, or if it's the best long term solution.

    Look at most IDEs -- they're focused on getting clickable GUI controls on the screen. Testing? HAH! Testing is for those "ivory tower academics", right? No one cares if the code works.

    It also doesn't help that most managers haven't heard of titles like TPOCP, MMM, and Peopleware. They are under the impression that managing a team of programmers is like managing a McDonald's.

    [Bitter? Me? No!]
  • I was turned on to it by a mention in "Computer Lib/Dream Machines" by Ted Nelson.
    I thought when I took programming courses in college that TPOCP would be a core text, but no such luck.
    The profs must not have thought psychology was relevant to software devlopment.
    Or maybe (irony alert) they thought teaching the concepts in TPOCP was a waste of time.

    Now that I am out in the real world, I find that very few computer "professionals" and even fewer manager types have even heard of TPOCP.
    That's a shame because it contains ideas that, if taken to heart, usually lead to faster development, better code and fewer bruised egos.
    I have been shocked to see local libraries and used book stores selling copies of TPOCP for $.10 or throwing/giving it away.
    I scarf them up and give them away to friends and anyone who complains about the difficulty of collaboration with others.
    Hurray for the publisher that decided to take a chance and put TPOCP back into print.
    Now if I could just get the guy in the next cube to read it...
  • I haven't read the anniversary edition, only the original. However, I think one of the most striking things about this book is how relevant it still is. Most software organizations still do not practice the approaches suggested in this 25 year old book: egoless programming, code reviews, etc.

    The software industry still has very little understanding of how software is actually created. That contributes to the constant schedule slipping and buggy releases.

    This book could have helped to solve the problem. Unfortunately, it turned out to be just a voice in the wilderness. Perhaps this new edition will help remind people that the problems of 25 years ago are still with us today.

I have hardly ever known a mathematician who was capable of reasoning. -- Plato

Working...