Visualizing Consequences

By: Jeremy W. Sherman. Published: . Categories: sicp under-the-hood rahrah.

The ability to visualize the consequences of the actions under consideration is crucial to becoming an expert programmer, just as it is in any synthetic, creative activity. (SICP 1.2)

There’s a larval Big Nerd Ranch reading group, and it has me reading through Ye Olde Wizard Book, Structure and Interpretation of Computer Programs. I’m pretty early yet in the text, and just happened upon the quote you find up top there starting this post.

You could blow by this pretty fast on your way to some deep wizardry.


This ability to stare deep into and through a line of code and watch the clockwork wheels spin is key to mastering the craft of programming. It’s what separates those who understand what their code is doing from those who continue to view the operations of their compiler or interpreter as a mystery concealed behind a veil impenetrable by mortal eyne.

Let me give it to you straight: There ain’t no deep black magic here. There is in fact nothing more quotidian than the process that takes a line of code and translates through layer upon layer of lengthy and tedious documentation into something that ultimately can be executed by the materia technologica sitting there upon your desk. Or your lap. Or held in the palm of your hand. Form factor changes; number and names of layers change; ultimate lack of magic does not.

Don’t lie to yourself that all that happens between make and ./a.out is impenetrable. It’s all there, waiting for you. It’s a long and well-trod path. Don’t turn away from it: put one foot in front of the other, work your way down one more layer of abstraction, and start to see how the sausage is made.