Monday, September 15, 2008

Work on open source and make your dreams come true

Chances are pretty good that you are not developing software at work that fulfills your most ambitious software development daydreams. Perhaps you are developing software for a huge insurance company when you would rather be working at Google, Apple, Microsoft, or your own start-up developing the next big thing. You’ll never get where you want to go developing software for systems you don’t care about for people you don’t respect.

Fortunately, there is an answer to your problem: Open source. There are literally thousands of open source projects out there, many of them quite active, which offer you any kind of software development experience you could want. If you love the idea of developing operating systems, go help with one of the dozen operating system projects. If you want to work on music software, animation software, cryptography, robotics, PC games, massive on-line player games, mobile phones, or whatever you’ll almost certainly find at least one open source project dedicated to that interest.

Of course there is no free lunch. You have to be willing to give up your free time because you probably cannot work on an open source video game at your day job – you still have a responsibility to your employer. In addition, very few people make money contributing to open source projects – some do but most don't. You should be willing to give up some of your free time (less time playing video games and watching TV won’t kill you). The harder you work on an open source project the faster you’ll realize your true ambitions as a programmer.

Open source provides enormous opportunities for the motivated programmer. First you get to see how someone else would implement a solution that interests you – you can learn a lot by reading other people’s source code. Second you get to contribute your own code and ideas to the project – not every brilliant idea you have will be accepted but some might and you’ll learn something new just by working on solutions and contributing code. Third, you’ll meet great people with the same passion for the type of software that you have – these open source friendships will last a lifetime. Fourth, assuming you are a competent contributor, you’ll be able to add real-world experience in the technology that actually interests you. That will help you get the job you really want.

Getting started with open source is pretty easy. There is a wealth of documentation out there on the tools you’ll need (e.g. source code management, editors, programming languages, build systems, etc.). Find the project you want to work on first and learn about the tools that project uses. The documentation on projects themselves will be light in most cases, but you learn better by investigating the code yourself anyway so who cares. If you want to get involved, start by volunteering to write test code. While that may not sound exciting the truth is you learn more faster writing test code for other people’s software than almost any other activity in software. Write test code, really good test code. Find bugs, suggest fixes, make friends, work on software you like, and get your dream job.

3 comments:

Anonymous said...

i dont get it, really. i dont want to code at home when i work full-time. its just like porn star having a boyfriend. the only real solution would be to do those open source stuff at work, many times that will be more fun that what you do at work.

Plus why join Hibernate or Spring? Why be boss around by people that dont pay you? i dont get that too. if i was about to do open source i would start my own project. why read other people code if you dont have to? i do that at work and i dont mind it, but i dont like it. If i would join exisiting open source project with some smartass boss(i dont get how you can reject some ideas/code) I do it only to use it in CV. However some people might think that i do open source, because i have too much free time and they might try to help me with that :P

Loc Nguyen said...

I know what you mean. Sometimes the code we write at work just isn't very interest. Or the problems we solve aren't that challenging. I've been looking for open source java or ruby projects to contribute to in my of hours.

philip said...

> Find bugs, suggest fixes, make friends, work on software you like, and get your dream job.

Um...

Find bugs sounds exciting and making friends with people I never see as they live in budapest sounds great as long as I don't want to go bowling with them.

I think your nuts. Here's an alternative, write software that makes a ton of $ then retire and relax or hire some poverty stricken programmers to write that open source for you.