Software is a very abstract thing. And it’s subtle. Code gets compiled into something, and then run by something else. Literally thousands of things happen each second, and there are a whole lot of other things — software and hardware — at work that might affect the code you wrote. Oh, and to top it off, add in quantities of data pouring through.
It’s no wonder we’ve evolved algorithms, patterns and other coping mechanisms!
And then we have to explain it all to others. So we make the abstractions concrete. We draw boxes and lines and UML diagrams and state flow diagrams.
Of course, concrete and examples can be used to explain. They can also be used to inspire. Vi Hart has a series of videos that explain mathematics concepts, including software engineering staples like binary trees, with doodles and sketches. After all, where else does a Hydra turn into a Sierpinski triangle?
Here’s one of her videos, but you should check out more.
Maybe I’m a geek, but that’s pretty darn cool.