[This is part 2 of an ongoing series of discussions on aspects of computer programming that transcend the software industry. Part one can be found here.]
In many ways, software projects are like ancient civilizations. They live, breathe, thrive for a brief period of time and then their members are thrown to the four winds, lost to the ages. The only evidence of their passing, the digital papyrus on which the code was written.
On numerous occasions I have had to enter into a project whose original developers have moved on. Usually, nearly always, there is a paucity of information about how things work, making this a painstaking process. But projects are pressed for time, and only rarely does the odd developer have the diligence to carve out some egyptian hieroglyphs instead of merely leaving a few cro-magnon cave paintings on the cubicle walls.
For the people in charge, documentation is often treated as something to do after the fact, once a project is over and done with. This is, I suppose, a way of ignoring the time and effort involved, keeping costs down. But those who take this approach are missing a critical piece of the development puzzle, because describing something is a sublime way of making sure you understand it and that it makes sense. Developers who fail to do this risk creating a system evolved in organic and inexplicable ways.
Design influences documentation, documentation influences design.
I have known this for years, and subscribe to it completely; I frequently start programming by writing my comments first, then filling in the implementation. Yet it wasn’t until recently that I realized this process applies not just to software, but to our lives as well. As I write these blog entries on travel, dogs, bike riding and, yes, even software, I’ve discovered that the way I view the world is changing subtly. Instead of just letting my daily experiences flow over me, I am more aware of them and of the impression they make upon me. I am, implicitely, analyzing the design of my life.
It is sobering to realize that writing about my life is a good thing, something that I should have been doing all along, rather than starting now at age 38. Would my life be different? Would I be a better person? Who knows. But I do know that my blog has made me more critical of myself, my actions, and my perceptions. After all, I just might want to write about them.
One response to “Wisdom in Algorithms, Part II – The Documentation of Life”
Oh yeah. This is the reason to blog!