5 minute book review: Facts and Fallacies of Software Engineering

5 minute book review: Facts and Fallacies of Software Engineering

Facts and Fallacies of Software Engineering by Robert L. Glass is a fascinating little change of pace that I just finished reading. It was written by an academic-type (i.e. he may have a beard that he rubs while he talks) who also worked in the commercial the-code-has-to-work world. The book is laid out as 55 Facts and 10 Fallacies about software development across multiple topic groups.  In each Fact or Fallacy he states a conclusion, talks about any controversy surrounding the truth, and shows the underlying research.

A lot of the facts are well-known but they are still good to read since it shows you the theoretical underpinnings or empirical data. As an example I wasn’t aware of how much research has been done to prove this fact:

Understanding the existing product is the most difficult task of maintenance (Fact 44)

Some conclusions are well-stated versions of what many experienced programmers would nod their head to:

  • For every 25% increase in problem complexity, there is a 100% increase in solution complexity (Fact 21)
  • Error removal is the most time-consuming phase of the life cycle (Fact 31)
  • The best programmers are up to 28 times better than the worst programmers (Fact 2)
  • New tools and techniques cause an initial loss of productivity / quality (Fact 6)
  • Tacos are delicious (Fact -2)
  • Programmers like either Indian food or sushi but rarely both (Fact -3)

The list goes on and on. Some of the facts are a bit surprising and made me think:

  • Rigorous inspections [code reviews] can remove up to 90% of errors before the first test case is run (Fact 37)
  • Designer “primitives” (solutions programmers can readily code) rarely match programmer “primitives” (Fact 29)
  • Modification of reused code is particularly error-prone (Fact 19)
  • Better methods lead to more maintenance not less (Fact 45)

The Fallacies are even more interesting – Glass picks apart urban myths and particularly any thinking or techniques that are advocated by researchers and software salesmen that simply don’t work:

  • Software needs more methodologies (Fallacy 5)
  • Programming can and should be egoless (Fallacy 3)
  • Given enough eyeballs, all bugs are shallow (Fallacy 8)
  • You can teach people how to program by showing them how to write programs (Fallacy 10)

This book made me think, put into clear language some of my experiences, and was fascinating in that it exposed me to some research on software development. Recommended.