There is a joke among me and my friends that every programmer should try their skill with the following at least once in their life:
- a parser / parser-generator / programming language
- an MVC framework
- a text editor and/or a word processor
- a raytracer
- and just because it's a fetish of mine: a genetic algorithm
Last weekend, I was meddling around with Node.js, just to explore new territories, and I inadvertently treaded on the territory of MVC. And suddenly, a truism hit home that I had read a few times before but never quite grokked before:
You do not do a weekend project in order to get anything done.
An MVC, just as all the other examples above, has been done a trillion times, and most probably there are already thousands of excellent frameworks out there. I couldn't create something that's actually better than that. So why bother?
You do a weekend project because you will learn something, and because it's fun.
(If you're a professional coder, I sincerely hope that those two areas overlap for you. Otherwise you might consider switching jobs.)
I guess I had always had productivity and success somewhere in the back of my mind. "It isn't good if it doesn't sell", or at the very least if it doesn't solve some real-world problem.
Not true. I have fond memories of the time when programming was fundamentally fun and games and geek pride galore. Time to let go a little of the professional cynicism acquired in years of professional coding. Sure, at the job you have to, well, get the job done, and that's your top priority. But in your spare time, a little idealism can help you improve as a coder. I understand MVC better now, I have a little more insight into the nature of dynamically typed languages and DSLs, and I can happily put Node.js into my CV. What's not to love?
So, folks, have your weekend projects, hack away with pride, and DFTA!