Earlier this evening, after my wife and I got the kids to bed, I fired up my laptop, opened my twitter client of the day and started my Vista Dev VM to get working on my favorite open source project. As I often do, I read some of the past tweets while waited for Vista to get ready.
A number of twitter friends had just responded to question about finding time to contribute to open source which came from Sara Chipps and a blog post she had just made on the subject. I quickly read her post and read the conversation it generated and then my wife sent me to the neighbor’s farm to get a few gallons of milk leaving me a nice chunk of time to think about the open source question which is near and dear to my heart.
Can you really find the time?
I think we all make choices about what we are going to make time for. If I really want to do something, I usually find a why to get it into my schedule. It really depends on how bad I want it or feel I need it.
Everyone is different though and the amount of available time always seems to be less as I get older and my family grows. Unless, you are blessed with 50 hour days like some rock star developers seem to be, you just need to fit it in if it is important to you.
I’d bet you’d find you had a bit of filler time (TV, gaming, sleeping in, etc) that you could trim down. You’ll likely find that if you working on something you are excited about, most of the time you put into it will be as relaxing and enjoyable as some of your filler activities.
Is it really worth the effort?
It might seem like an incredible hassle to try to free up some of your valuable time to work on some open source project. Why would you even bother? There are actually a number of reasons, but one of the biggest is you grow as a developer through the process.
Most people who have read this far are likely interested in becoming a better developer. The experience you gain working with an open source project, on your own time and at your own pace, is very rewarding. This usually means working with existing code and learning from what someone else has done, but it can be creating something completely new and putting it out there for the world. Either way, you gain from the experience and you quickly learn better ways to do things either from feedback from others or from researching for better ways before you post your code to the world.
I think it helps to have another new problem set to think about. I have my main day job projects, but I like to have a number of different things to work on and think about. Being exposed to different ideas and other approaches to a problem will only help you improve.
There are lots of excuses that can be thrown out at this point and how to get started is another blog post, but I encourage you to give it a try. If you don’t think your code is good enough or fits into the project, or would even be accepted, it doesn’t matter. I spent a lot of time working with open source code that never became part of the overall project, but I still gained a lot from it. Sometimes the contribution you want to make is not part of the vision of the base project and you can just make it for yourself or share it on your blog or on the forums.
Last year, I spent a number of evenings putting together a online BlogEngine theme installer. (The type of thing where you browse available themes from inside the admin panel, download and install right from the interface.) I knew it was not likely to ever get used, but I wanted to see how I could do it and I had a great time doing it. It was one of the most fun things I’ve worked on in the BlogEngine project and other than my long suffering wife, no one has ever seen it. While it wasn’t an open source contribution, it was a great experience and I learned a bunch doing it. (And yes, who knows, maybe someday, that code may be useful to the project, but don’t count on it.)
I can honestly say that open source work is one of the most rewarding things I’ve done over the past few years in the development world. The experiences I’ve have had and the people I’ve had the chance to work with have challenged me to get better and continue to do so.