Technical Book Club: Code Complete – Software Metaphors

My husband was a philosopher before becoming a computer scientist and uses the following metaphor to describe his work in failure locality.

Think back to Christmas time prior to the 80s.  Remember decorating the tree or the house with long strands of Christmas lights.  When one of the lights went out the whole string would go dark, to determine which light was bad you had to test the lights one by one to find the bad bulb.  (If this is before your time, check out Chevy Chase in National Lampoon’s Christmas Vacation.)  Soon companies provided strands that wired lights in parallel, so only the local neighborhood of lights would go dark when a bulb went dead.  This improvement helped localize the failure of a Christmas light.  My husband works on improvements in software that take the same approach.

This is a great metaphor, because it delivers a message about the core of what he studies to any Average Joe who has worked with holiday lights.  Although the downfall has been that our grandparents think he works at Radio Shack.

Chapter 2 discusses the importance of the metaphor in exploring software engineering concepts.  Similar to the example above,

  • metaphors are meant to illustrate a core concept and tend to be inaccurate if explored too deeply

Steve emphasizes that Software Construction and an Intellectual Toolbox provide useful metaphors for software projects and effective programming.

Questions for discussion:

  • What metaphors do you recall from classes or projects you’ve worked on?
  • What illumination or confusion did these metaphors cause?