First of all, if you haven't yet played with my Doogie Howser Journal Generator, you should probably check that out first before continuing to read this post. After playing around with that, your reaction probably ranges somewhere between "that was completely pointless" and "huh, that's neat." Not exactly life changing stuff but fun.
The idea for this particular project was born out of conversation with a collegue that centered around 90's nostalgia. I made the comment that Doogie Howser was basically a blogging pioneer and wondered if I could make my own Doogie style journal generator using HTML5 canvas (I knew it was supposed to be a Flash killer but nothing else really).
The work for this started late last year and I had absolutely no plan or structure for anything. This was nothing more but an excuse to play around with some frameworks that seemed interesting to me. So basically I did exactly what I shouldn't do in normal circumstances; I would learn about a technology and then look for a way to shoehorn it into my project.
I would go weeks or months without touching the code. I would stop coding when it wasn't fun. Often though, I would read about something new or think of an idea and find an excuse to add something new to the project. Instead of having to justifying the inclusion of a technology, I had more of a "why not?" attitude. This is about as tough as those debates got for me:
Should I pull AngularJS into this project? Yeah, I want to play with AngularJS more, so let's add that.
How about MongoDB? That seems really cool, and I haven't messed around with it much so why not?
KineticJS? Yeah, the canvas stuff is a little tedious and this looks more fun.
How about Ratpack for the server stuff? Yeah, awesome! I've wanted to dig into that and see what it's like.
With a play project like this, my choices were a lot less conservative than they would have been normally. Unlike a real world project, I'm inclined to add something here just because.
That makes sense though, since there aren't any real consequences for getting it wrong. There's no deadline to slip, no emergency production fixes, no need to apologize or to justify any decisions. If the application server for the Doogie journal generator were to burst into flames because of a poor decision it wouldn't matter. I could look at that situation with a more detached, "hmmm... I wonder what's wrong." instead of an "oh crap, I better fix this."
It's useful to have a project to try to incorporate new ideas or techniques into. As I've read through AngularJS books, for example I found a lot of opportunity to refactor or add to this project. I find it much preferable to incorporate a technique into an ongoing project rather than following a contrived example in a book. The Doogie project improved my AngularJS skills especially and even led to a contribution to the Ratpack framework
I have plenty of ideas for projects just as ridiculous as this one, and I'm going to try to always have at least one in active development. I won't always be able to produce something, but that's not really the point of it. For me, an absurd coding project should be first and foremost fun, but also a way to learn new things and get a chance to practice them all while amusing myself (and hopefully others).