97 Things Every Programmer Should Know

(Chris Devlin) #1

(^112) 97 Things Every Programmer Should Know


Make the Invisible


More Visible


Jon Jagger


MSPECTSANY A OF iNViSiBiLiTY are rightly lauded as software principles to
uphold. Our terminology is rich in invisibility metaphors—mechanism trans-
parency and information hiding, to name but two. Software and the process of
developing it can be, to paraphrase Douglas Adams, mostly invisible:



  • Source code has no innate presence, no innate behavior, and doesn’t obey
    the laws of physics. It’s visible when you load it into an editor, but close
    the editor and it’s gone. Think about it too long and, like the tree falling
    down with no one to hear it, you start to wonder if it exists at all.

  • A running application has presence and behavior, but reveals nothing of
    the source code it was built from. Google’s home page is pleasingly minimal;
    the goings on behind it are surely substantial.

  • If you’re 90% done and endlessly stuck trying to debug your way through
    the last 10%, then you’re not 90% done, are you? Fixing bugs is not mak-
    ing progress. You aren’t paid to debug. Debugging is waste. It’s good to
    make waste more visible so you can see it for what it is and start thinking
    about trying not to create it in the first place.

  • If your project is apparently on track, and one week later it’s six months
    late, you have problems—the biggest of which is probably not that it’s six
    months late, but the invisibility force fields powerful enough to hide six
    months of lateness! Lack of visible progress is synonymous with lack of
    progress.

Free download pdf