I had a conversation today where I expressed skepticism about working on a piece of software without knowing how any of it actually works. How can you possibly make changes to a code base if you don’t understand the behavior of its objects and classes? How can you refactor code with just knowledge of its dependency graph, divorced from its semantics, where everything is just a node or an edge?
The map is not the territory.
I often like to compare the world of software development to environmental development, and I plan on diving deeper into this analogy in coming pieces. For now though, I'll resolve my earlier skepticism with the idea that in order to know a land, you must live there— but living in a land is not always possible.
Imagine you are someone who has lived in a secluded rainforest for a couple of years. You get all your sustenance from the forest, have paved walking paths through the undergrowth, know how to predict the coming of a storm and how to protect yourself during one.
And then one day, someone arrives in a helicopter telling you their job is to make a map of this rainforest. They begin by scanning every inch of it, recording the depth of every crevice, the gradient of every hill, and the height of every tree. They weigh every little rock and take photos of all the flora and fauna. After a month, they present to you this map of spectacular detail, no coordinate or label amiss.
You have to admit—this map is pretty cool. It reveals things you didn’t know (like the temperature of the water in the stream!), sheds light onto the caves you had been too scared to venture into, and even inspires some ideas for future projects. It’s very nice to look at, so you hang it on the wall in your home.
And there it stays, a beautiful centerpiece. A pity, you think, since the mapmaker put so much effort into it. But then you realize this map is not meant for you, but for others. For the traveler who wants to tell others about his adventures, for visitors who want to know the best places to see, and for faraway beings who will never step foot on the land. It is a beautiful-looking tool for other people to learn about the place you call home.