Useful summary book to core software engineering methodology, 2008-08-24
Reviewer rating:
With more than 45 years experience in the software field, Robert Glass
attempts to sum up the most integral facts and dispel common misunderstandings with software engineering.
Definitely look at the table of contents for this book to determine whether you should add this book to your shelf. All of the facts and fallacies are listed in a one statement summarized format which means just looking up the relevant page information to find a more detailed statement with support or controversy.
Mr. Glass separated his book into facts and fallacies with each section
helpfully indexed within a broad category (such as Management), and then into a smaller category (such as People, or Tools). For each fact and fallacy he discussed support and controversy (if any), sources of information, and references.
In the conclusion, Mr. Glass covers 4 themes (complexity, estimation, disconnect, and hype) that are repeatedly pointed out by the 55 facts/fallacies. I found these conclusions to be the most interesting aspect of the book although they cover only half a page.
The repetition of fully covering each category before moving on to the next, limits the enjoyableness of reading the book from cover to cover, but this emphasizes that it is really a reference book for endorsing good software engineering practices. Writing that is clear and easily understood underlines Mr. Glass's great experience with this subject.
Although he repeats references within the book several times as they apply to multiple statements, this is helpful for the reader to immediately reference rather than flipping to the back of the book or chapter looking up specific numbered references. It would have been nice to include a list of all references just to know how many references there truly are, but the book in its current incarnation is a nice size to be easily thumbed over.
The intended audience is those researching and developing software, but many of the statements can be equally applied to other fields, for example system administration. Besides possibly wearing a software engineer hat, the system administrator must plan system architecture and service management with the same sort of context that the software engineer does.
For example, fact 7 is :
"Software developers talk a lot about tools. They evaluate quite a few, buy a fair number, and use practically none." (pg 25)
The gist of this fact is that as new tools for software engineering emerge, engineers rally to them, possibly purchase them, and then fall back to the well known tools they are comfortable with. The learning curve is too steep to make using the new tools productive in the short term. Similarly system administrators may find themselves talking about new tools available to better administer or monitor systems, but the learning curve to implementing these new tools is greater than writing in house solutions that are comfortable and well known. For example,a bunch of shell scripts that email information for flagged occurrences is much easier and quicker to write than understanding, instituting, and managing a more comprehensive monitoring solution with Nagios and rrdtool.
Most of the 55 statements are common sense but information that is rarely remembered at times that it should be implemented in software project design. Overall, I initially found this book to be interesting as it states some well known methodologies in one book with a number of references for additional information. For software engineers, this book is an important resource either for providing references to management in order to validate or fund decisions made on choices in software design, or for instilling good software engineering practices in the less educated engineer.