____________________________Books
   

Rich Cohen's 'Books I Wish I had Written'

There are no books I wish I had written. I certainly do wish I had the ability and devotion to write books like you, Tom and especially Jerry Weinberg. However, I don't. On the other hand there are books that had a major impact on my life and outlook and which I take pride in showing and giving to others. These are books that I hope others will remember "Rich Cohen got me to read this book and I'm glad he did." Over the years I've given perhaps 50 books as gifts to clients and fellow professionals. Here are some of my favorites and why I've given them out (I'm working entirely from memory here):

 

The Elements Of Programming Style by Kernighan and Plauger. I give this to new programmers. Many people learn language syntax and have no understanding of the importance of style. This book helps them get a running start on this important issue. It's a great study group book with about a hundred rules that can be usefully debated. Although the examples are in FORTRAN and PL/1, its issues are relevant to work in any programming language.

 

Controlling Software Projects by Tom DeMarco. This is one of my favorite gifts to new project managers and QA managers. It also has some very sage advice for people who are considering adapting a corporate methodology. The section on estimating is something every project manager should memorize. The section on the SDLC and the use of metrics is excellent and shows how measurement can be usefully coupled to all stages of development. Chapter 19 on methodology and standards is the best approach I've seen on how to have standards with their becoming straight jackets. The final chapters are an excellent starting point for a company quality assurance program. Finally, the book digests and explains some of the most important ideas in Barry Boehm's Software Engineering Economics. All of Tom's writings are a pleasure to read.

 

Exploring Requirements - Quality Before Design by Gause and Weinberg. The first great revelation to me was the (now obvious) point that the purpose of system analysis is to reduce ambiguity. Then they show how this can be done and how we can measure it! Scattered through out are all sorts of gems like a chapter on holding meetings and another on the use of context free questions. Two other themes throughout this excellent book are: make lists and do more than just make lists. Every time they recommend a list they give you something to do with each entry that requires you to _think_ about it. Finally, the book ends with a chapter on ending the analysis phase even though analysis is never over.

 

The Human Factor by Rubenstein and Hersh (DEC Press). This book is "green screen" but it's message is completely relevant today. It is readable and summarizes itself well in a set of about a hundred principles. It starts out by showing ways we can learn more about our users and how we can organize that understanding. It emphasizes the importance of delivering a consistent external myth. The point being that what the user thinks is happening is not necessarily what is really going on behind the screen and that this difference is important and very useful. They also emphasize that we must us they users language in the interface.

 

The Practical Guide To Structured Systems Design by Meilir Page-Jones. I know structured design is obsolete, but I still feel this book is the right next step for many (most?) programmers. It explains coupling and cohesion, factoring and information clusters, top down development, testing and management. This is a book full of important ideas that still apply in the OO world.

 

Handbook of Walkthroughs, Reviews and Technical Inspections by Freedman and Weinberg. Bill Curtis once said that peer reviews are the nearest thing to a silver bullet he could think of. I agree. This is the how to book for doing them. While I don't particularly like the question and answer style, this book covers all the important issues and is very readable. Its more than about technical reviews. It's recommendations can be applied usefully to a wide variety of meetings.

 

Quality Software Management, volume 1 - Systems Thinking by Jerry Weinberg. This book is an excellent vehicle for helping a technical person transition to a management role. Effects diagrams are a great tool for helping programmers understand the complexity of dealing with people. The application of the cybernetic model to management is not new, but this presentation is particularly effective in helping an engineer understand his role as manager. Finally, Jerry's five levels of management culture are far more important to me than the SEI's five levels of process maturity. Jerry's writing style is open, understandable and very readable.

 

Quality Software Management, volume 2 - First Order Measurement. This is a great book for project managers. This book does an excellent job of answering the questions "What should I measure?" and "How can I get the most out of information already at hand?" It also makes a very strong case for peer reviews. Finally it shows why software development isn't as simple as it seems and how that complexity makes estimating more difficult. The use of slip charts to understand software development culture is a wonderful idea and the public project planning chart is something every manager should use.

 

Tog On Interface by Bruce Tognazzini. This book focuses on the Macintosh, but it's real value is the insight it gives on the outlook, attitudes and methods of a world-class user interface designer. It has practical suggestions that can be applied to even the smallest of projects and regardless of the development platform. The writing style is friendly, humorous and very readable.

 

Rich

Richard Cohen is a consultant interested in helping people do software better. His main interests are in project planning, requirement analysis, user interface design and quality assurance. He has a masters degree in System Engineering and has been working with computers for more than 30 years. Mr. Cohen can be reached at 70007.6607@compuserve.com

 

top of page