I, like every other developer, have side projects. Why work on side projects? I think there are four primary reasons. 1) learn an existing language or tool better, 2) learn a new language or tool, 3) make some extra income, or 4) fill a need you have.
I have done (or am doing) side projects that cover all of these reasons, but I think the main reason I do a lot of my side projects is because of reason 2, learn a new language or tool.
Learn A New Language Or Tool
When I learn something new, I’ll generally read up on it, maybe buy a book, write a few code samples, but to really solidify what I’ve learned, I need to write something. For someone new to a language or tool this can be scary. That’s why I rely on existing open source projects. If I run into an issue, I can see a real world example of how that was solved.
When I started writing Tea-Fueled Does, I copied a lot of ideas from other open source frameworks. It helped me out when I was having issues and was able to see how others solved it (and even different ways to solve the same problem). After seeing how the code worked, I was able to refine my framework and it become it’s own thing.
The same thing with Playr. I was learning Ruby and things just weren’t clicking. So I decided I would try to write a clone of Play. When I ran into an issue, or didn’t know what to do next, I would look at Play’s source code and was able to figure it out.
In both these cases, I never copied and pasted the project. I would have learn nothing that way. I would attempt to get as far as I could without any help, and when I ran into an issue or wanted to see how someone else did it, I would look at the code. Even then did I rarely copied the code verbatim. I would try to do something similar until I found the best solution.
Open Source Rocks
That’s why I appreciate open source projects. They have helped me learn so much, and because of this I post a lot of my code to GitHub. At this moment I have 16 repos, two that are forks, and two that are private (but I intend on making public some day).
That’s the main reason I hack on side projects, to learn something new.