I think the marathon is a good metaphor for software development. Not in the sense of an enduring hardship (though that's often true), but in the sense that both represent very tough, but ultimately achievable goals. The analogy is not perfect though; in particular running a marathon is a solitary effort whereas software development usually is not.
I've run ten marathons in as many years, including Boston Marathon this past Easter monday. My first marathon was ten years ago, when I was working at Borland on Delphi. That was a tough project, but ultimately very successful. Delphi went on to generate around half a billion dollars in revenue and is still in use today, which is kind of remarkable.
- Write it down. It's amazing to me how galvinizing it can be to set a goal in writing. That's the first step. The opposite is also true. If you don't set goals, you won't achieve success.
- Follow a plan. You can no more show up at the starting line in Boston and expect to finish than you can work on the next big software application without an understanding of what you're building. Make a spec, a project plan, an architectural design and measure and monitor your progress.
- Make progress. If you make progress every single day towards your goals, you will get there. There will be days where little progress is made, but it is better than no progress. Want to play the piano? Stop talking about it and start playing.
- Care. It's easier to make progress towards goals that you care about personally. Don't live someone else's dream. Don't just go through the motions. Pick goals that are personally important.
- Believe. This is perhaps the toughest thing of all. Every software project I've been a part of and every marathon I've run, has had parts where you just want to give up. Someone quits. The code sucks. Your legs are dying. Your family resents you, whatever. Sometimes the only logical thing to do is quit. But the people who are ultimately successful defy that logic time and again. They have the tenacity and belief in themselves that keeps them going even beyond hope. If you do not believe you will succeed you will not. That's why athletes mentally rehears the events they compete in, to develop that faith that gives them strength when it is tempting to just give up.
Ok, this was not the usual open source discussion, but I hope it is interesting to a few people. For those interested, you can view some low-res photos I took from my Treo 650 while running the Boston marathon on Monday. The photo at the top is the Citgo sign, a famous Boston Marathon landmark which is first visible at mile 23, a full two miles on the horizon. There's a final uphill climb to get to the sign at mile 25 and even when you get there, there's still another 1.2 miles to go. That may not seem like much, but I can tell you, you need to believe in your goal to keep running at that point.