Know When You Don't Know

Tuesday, September 30, 2014

From the annals of software development comes an interesting illustration of the difference between what one knows and what one doesn't. The below are lessons a coder learned from a bug report that bizarrely (but correctly) stated that attempting to print an example file would jam the printer:

  • Just because a bug seems impossible doesn't mean it is.
  • Abstractions are everywhere, and they can be broken. As a software guy, I believed that getting the paper into the output tray was a solved problem.
The author uses the term "abstraction" in a sense peculiar to his area of expertise, meaning an omission of "details which matter in practice, but are immaterial to the problem being solved".

The programmer reasonably thought -- but did not actually know -- that a step between the printing command and the physical document was solved. He did not know this because he did not know in detail how the printer worked. It clearly behooves us to be aware of what we really do know versus what we merely assume.

-- CAV

No comments: