Around "Hello World" in 30 Days
I’ll say this up front: I love my job. I love the web. I love Rails. And I love working here at Viget. But lately, I’ve gone through periods where web development feels a bit stale. Hugh Macleod has a great post called Beware of Turning Hobbies into Jobs that sheds a bit of light on this problem: once you make a career out of doing what you love, it’s not solely yours anymore. There are clearly bigger problems one could have, but I think this is something all developers struggle with at some point in their careers.
This problem was weighing on my mind one morning, combined with a looming speaking engagement I’d committed to for DevNation Chicago, when it hit me: I would spend a month trying a new technology every day, and then share my experiences in Chicago. Learning is a core value here at Viget, and my coworkers were incredibly supportive, adding to the list of technologies and asking to join me in learning several of them. With their help, coming up with the list was no problem — it was actually harder to get the list down to 30. Here’s what I finally committed to:
- Cassandra
- Chrome Extensions
- Clojure
- CoffeeScript
- CouchDB
- CSS3
- Django
- Erlang
- Go
- Haskell
- HTML5
- Io
- Jekyll
- jQTouch
- Lua
- MacRuby
- Mercurial
- MongoDB
- Node.js
- OCaml
- ooc
- Redis
- Riak
- Scala
- Scheme
- Sinatra
- Squeak
- Treetop
- VIM
- ZSH
Thirteen languages, most of them functional. Five datastores of various NoSQL flavors. Five web frameworks, and seven “others,” including a new version control system, text editor, and shell.
Once I’d committed myself to this project, an hour a day for 30 days, it was surprisingly easy to stick with it. The hour time slot was critical, both as a minimum (no giving up when things get too hard or too easy) and as a maximum (it’s easier to sit down with an intimidating piece of technology at 7 p.m. when you know you’ll be done by 8). I did have some ups and downs, though. High points included Redis, Scheme, Erlang, and CoffeeScript. Lows included Cassandra and CouchDB, which I couldn’t even get running in the allotted hour.
I created a simple Tumblr blog
and posted to it after every new tech, which kept me accountable and spurred discussion on Twitter and at the office. My talk went over surprisingly well at DevNation (here are my slides), and I hope to give it again at future events.All in all, it was a great experience and proved that projects that are intimidating when considered all at once are easily manageable when broken down into small pieces. The biggest lesson I took away from the whole thing was that it’s fundamental to find a way to make programming fun. Working my way through The Little Schemer or building a simple webapp with Node.js, I felt like a kid again, pecking out my first QBasic programs. Learning how to keep programming exciting is far more beneficial than any concrete technical knowhow I gained.