One of my favorite things to do is looking round churches. I'm not a religious man, but whenever I visit a new city invariably the first thing I explore are the local churches or cathedral. To me, they represent timelessness and stability. They also represent a legacy. Somewhere there's an architect whose life work was poured into that building. And here it is, standing hundreds of years after its designer has long gone, for all to see.
Legacy is something we programmers struggle with. It's rarely discussed, and when it is it carries a negative connotation. Legacy code is a term that runs shivers down our spines. We rarely think of legacy in terms of making a mark.
I think we all have an urge to mark our stamp on this world, to graffiti 'I was here--don't forget me'. Yet, as a programmer, where is my legacy? Practically every program I've ever written has either been re-written by someone else, or discarded entirely. In another decade, there will hardly be a trace of my existence at all.
Perhaps a programmer's only way to achieve any kind of meaningful legacy is by contributing to some lower abstraction that others build upon, like TCP or Linux. I'm beginning to think, though, that the best legacies are companies. They're a living distillation of the original founders principles, and the best ones long outlive their creators.
The world's oldest company was Kongō Gumi, a Japanese construction company specializing in building Buddhist temples which operated for over 1,400 years.