A mini-project every month
Once you’ve accomplish something, you feel comfortable doing it again. And why shouldn’t you? After all, you’ve already done it. And that’s exactly my problem. When it comes to programming I often feel so comfortable with something I’ve done already, I’ll do it again. And again. I’m not the best at exploring new alternatives; it can be hard to do something away from what you know already works. But the last thing I want to become is a developer who relies on the specifics of past experiences.
I think it’s safe to say my favorite language/framework (at this point) for the web is Ruby/Rails. So I naturally want to learn more about it, and how to master “the Rails way.” In an ideal state, along with the fact that I would have to be someone other than me, here’s what I would propose: develop a new mini-webapp every month. And if I were indeed someone other than myself, here are the requirements I would have:
- It can’t be anything done previously (unless it’s a reasonable expansion, such as adding an API)
- Each application would only contain one controller (hence, the mini).
- The interface would remain simple, but fully styled to keep me sharp on my CSS
- The level of difficulty would be such that I could not complete it in one week
- The wonderful Rails scaffolding would not be allowed
- Each application would have a due date of the last day of the month
- No direct help from anyone else (with the exception of forums)
Now, all I have to do is figure out how to become someone other than me, so I could actually do something like this. Really, I probably would do it if I had more time. And just in case I do, any suggestions for the first one?

Chris Wednesday, 15 Nov, 2006 Posted at 06:48PM
What I like to do is pick out Rails plugins or programming methodologies I’ve never used before, and create a new project to try them out.
Some random, possible starting points:The key is to use a library/plugin/programming feature that you’ve never used before, because that is how to will learn the best. Especially diving into things like meta-programming. Just as a simple excercise, try building a module that you can use to reproduce the functionality of
attr_reader,attr_writer, andattr_accessor.One more good place to look for ideas – the Ruby standard reference and the standard library reference. Just browsing through the methods for Object and Kernel can be interesting – I do this sometimes, writing small apps just to try out a method I’ve never used before.