Reflections on Management: How to Manage Your Software Projects, Your Teams, Your Boss, and Yourself by Watts S. Humphrey (with William R. Thomas) is an easy to read book that has something to offer everyone involved in the software development process. It is a collection of various writings by Humphrey over the years, arranged by topic and in a logical progression. It speaks volumes about Mr. Humphrey's long career as a writer that so many different selections of his writings could be put together in a cohesive whole like this book.
The format works very well. Each section of the book stands on its own and as a completely fleshed out and explained idea. You can read for only a minute or two, put the book down, and pick it up later with no interruption in the thought process. Each section reads smoothly. The only thing I did not like about the format is that, because the writings in it are from so many different sources, there are a few times where the same example is reused to illustrate different points. It gets a little bit repetitive to read the full description of the scenario multiple times.
The content was excellent as well. Mr. Humphrey did a good job at shining some new light on a number of topics. I really liked that he emphasized action and taking responsibilities. One of the most insightful things he talks about is how too often, development teams assume the responsibility for management's mistakes by saying "we'll try our best" to mean an unreasonable requirement, and then using "victim language" such as "we were handed an impossible deadline" to justify failure. Instead, Mr. Humphrey says that you need to negotiate better requirements, which means that you have to put together a project plan and show that the requirements are not realistic, and start from there.
One thing to keep in mind is that Mr. Humphrey's focus is on long-term, planned projects. He developed the Capability Maturity Model (CMM) (which the Capability Maturity Model Integration project sprang from). As a result, readers who favor Agile methodologies may reject some of his message. I think that this would be a mistake. While the book's examples often use long-term projects, there is very little advice in here that is only applicable to those kinds of situations. Yes, TSP, PSP, and CMM are mentioned on a regular basis, but you do not need to be familiar with them to get value from this book; those methodologies are "mentioned" but not really "discussed." The focus of the book is not on development methodology, but how to deal with other people and conduct yourself to ensure project success.
I highly recommend this book for anyone involved in software development; its lessons are especially applicable to anyone working in a team environment. It is a breeze to read and well worth the time investment. If you are familiar with the common problems in development but have not found many solutions, this is the book for you.
J.JaNote: This review was based on a reviewer's copy of the book furnished by the publisher. Disclosure of Justin's industry affiliations: Justin James has a contract with Spiceworks to write product buying guides; he has a contract with OpenAmplify, which is owned by Hapax, to write a series of blogs, tutorials, and articles; and he has a contract with OutSystems to write articles, sample code, etc.
———————————————————————————————————————————-Get weekly development tips in your inbox Keep your developer skills sharp by signing up for TechRepublic's free Web Developer newsletter, delivered each Tuesday. Automatically subscribe today!
Justin James is the Lead Architect for Conigent.