Programming with a purpose
Often times, I find myself dabbling at home on a new technology. I usually run into one of two situations: I have a hard time getting started or I quickly run out of desire after a few sessions. Recently, it finally dawned on me how to overcome both scenarios: program with a purpose.
I'm a big fan of the pragmatic philosophy. I don't want to get mired in needless effort, just for the sake of staying true to some methodology. I just want to get stuff done. That's not to say that methodology and structure are the wrong tools. They often are when used wisely.
When starting a new project, be it something for fun or learning, or something serious (for fun and profit!), set some goals. Where do you want this project to take you? What do you wish to gain by putting in the effort? Have an idea of where you want to be when the effort is complete. Don't be afraid to change course mid-stream. The best ideas can come while in the middle of something else. Flickr, a great website for sharing photos, started out as a game.
Goals don't have to be anything grandiose. They can be as simple as "see what this Ruby thing is about" to the much more complex "finish and publish this game". When you are done, you can look back and measure yourself against your goals. Failing to obtain a goal doesn't equate to a waste of your time. Each experience teaches you something new. Often times, successes are merely those who failed that kept trying.
Programming at home with a purpose is easy (for me) to understand. Your free time is limited. Personally, I'd like to make the most out of it. But what about work? There (usually) is a purpose in IT organizations already. How does this principle apply there? I see this analogous to the concept of Continuous Improvement. Feel free to define sub-purposes within your work organization or project. I am always looking for new patterns, principles, and processes that I can apply at work. I've been on a few teams that I felt were a well-oiled, efficient machine. None of those teams started out that way.
In closing, I have a secret to share. The purpose of this blog is to teach me how to write better. I'm an analytical thinker. The English language, with all of its "exceptions to the rules", is not something I easily grasp. I feel there is a lot of improvement to be had here. That is my purpose.