I create (or at least start) a lot of microapplications – my “Ideas - Dev” list in Evernote is huge, and I try to pick off a new one every few weeks (at least), so I’m usually working on something newish. This fact on its own isn’t particularly interesting, but what this practice has done is allow me to experiment with new things regularly and on a real project. As an example, I’ve been using MongoDB as the persistence layer for several of these apps. Where before I’d have relied on MySQL (or, more rarely, SQLite), I’m now making Mongo the default – when I start up a new project, I yank out ActiveRecord and drop in MongoMapper. This has resulted in two important benefits:
- I’ve learned a lot more about how Mongo (and, by extension, other document-oriented database) work.
- I’m better at figuring out where a document-oriented database does and doesn’t work – I’ve had to replace Mongo on one application because it just wasn’t a good fit for the domain.
The exact same process happened when I started replacing Prototype and Scriptaculous with jQuery – I was able to dig down into the benefits and problems with it, and eventually make an informed decision about which library I wanted to use. If you’re starting a new project, give a thought to changing one of your default settings. At worst, you’ll have to revert that change later if you realize that the original worked better, but even then you’ll have learned something valuable – and the chance to discover something new that works better is a huge win.