Posted by Evan at 5:25 pm on June 22nd, 2008
Projects are inseparable from hobbies. I believe they are one of the best ways to learn, apply, and solidify skills and knowledge. A project brings together skills from a variety of areas and teaches you how to use them together. Or, if you already know how to use them together, it helps you to cement that knowledge and it provides a spring board for going even deeper into the material.
As an example consider this web site. I began by reading about PHP, learning how to write PHP and, more importantly, debug it over the summer of 2008 while working for Rockwell Collins. But reading about a new language isn't as exciting as actually getting to do something with the language, so I decided to try coding a system for automatically gathering comics from the internet. The system, which I called COMICS, was inspired by my good friend Coandco and it helped me learn a lot! A lot more than I could have if I had only "learned" PHP and not applied it to a real situation.
After creating COMICS I was even more interested in what PHP could do and so I decided to try tackling a larger project: creating a backend for Unguku.com. But since just the backend content management would be rather boring, I reasoned that I should also create a frontend design and then interface with a database for storing data. The result was that I learned CSS and did a bit of relearning of HTML to make the frontend design before getting down and dirty with PHP for the backend. I also learned how to talk to a MySQL database through PHP so that I could store and retrieve information (such as posts and comments).
It took a while, certainly (and that was just to get it up and running; it's still being actively maintained and upgraded). There was a lot to learn, a lot to design and develop, and a lot of debugging to do! It was a process. But I learned more from working on that project than if I had just tried to learn CSS, HTML, PHP, MySQL, etc., independently of each other. By bringing the technologies together I learned how to build something useful, something I could show off and be proud of.
There are other projects which have had a similar effect by forcing me to apply my knowledge and learn through experience. The following is a (non-comprehensive) list of projects I've worked on or have been involved with and which I think have had a significant role in shaping my skills and in determining which subjects I find the most fascinating. Starting with the most recent, I have been involved with: