Oh Ten
02 February 2011
A personal review of 2010
Changing Direction
In January of 2010, after five roller-coaster years, I resigned from the full time job that had brought me from London to Sydney via four continents. After working three months notice, I took three weeks of holiday, which I spent inert in bed accompanied by the worst flu I’ve ever had.
Then I started my new job at CampaignMonitor. It was a startling change of pace and a bit of culture shock as my working life went from 70-80 hour weeks, stuffed full of impossible high-pressure ‘just ship it’ deadlines to relaxed, 40 hour weeks with quality as the primary release driver.
I had been aware that a change of pace might affect me, like when you’re sick for the first few days of a holiday, but I never imagined the amount of sickness the first half of 2010 would bring. It truly was the worst year of my life for colds and flus. Every week I caught something new and eventually ended up in hospital for three days with suspected appendicitis, undergoing every kind of scan known to medical science1, narrowly avoiding a precautionary appendix removal operation and ending with the exasperated medical staff proclaiming that it was ‘some kind of infection’, after I eventually responded to antibiotics.
My physical reaction to this new work environment, combined with the amazing quality and lifestyle-focused culture at CampaignMonitor was an eye-opener. In my humble opinion and limited experience, this really is a model software company; founded on simple, honest principles of creating a useful product that delights its customers, creating an awesome place to work2 and being a sustainable and profitable business. There really is no bullshit here and that’s very liberating and inspiring.
Falling in Love
After reading the Pragmatic Programmer in 2009, I decided to ‘learn a new language every year’ and in 2010 that language was Ruby.
Learning Ruby has been an absolute joy. Instead of gushing for paragraphs about how wonderful Ruby is, here’s a few tips I wish I’d had before starting out.
- There are so many excellent books out there for learning Ruby, but I’d recommend at least buying Programming Ruby – The Pragmatic Programmer’s Guide (AKA The ‘Pickaxe’ book), by Dave Thomas, Andy Hunt and Chad Fowler. This book doubles as a nice introduction to the language and idioms of Ruby programming and a concise but useful guide to the Ruby standard library. Last year I bought both the 1.8 and 1.9 versions of the book and both live within arms reach of my keyboard. I also bought the Ebook versions to keep handy when I’m on the road. Worth every penny!
- Do the Edgecase Ruby Koans and keep doing them (`git reset —hard`) until you don’t have to think about it anymore. The lessons in these koans are fundamental and having them ingrained into your mental muscle memory has served me well.
- Find and attend your local Ruby or Rails (they tend to overlap) user-group. All of the Ruby community events I’ve attended (in Sydney at least) have been full of lovely, passionate people who are only too happy to talk and help out the newly uninitiated.
- Once you’ve picked a pet project, or breakable toy, to build, get to Github, fork the Gems you’re using and start reading the source code3. I read this tip somewhere and didn’t really believe it but it certainly did wonders for my learning. Seriously.
- Build and release a Ruby gem. You may not be solving a new problem but you’re likely solving a problem in a new way and you’ll learn a lot from the process. I released the almost completely useless CounterString gem and had fun translating the algorithm and figuring out how to package a gem.
- Contribute to a gem that you’re using by fixing a bug, or improving some documentation. The experience you’ll gain in understanding the project’s code and/or usage will be invaluable. I can whole-heartedly recommend getting involved in RSpec, which is a beautifully written testing framework maintained by a passionate and dedicated community.
- Have fun. If it’s not fun and exciting then stop and do something different. I attribute much of my enjoyment of learning Ruby to not having any professional pressure. I didn’t need to learn Ruby for my job4, which meant that I could focus on having fun. I think it made a huge difference.
Writing Notes
I’d never really blogged before this year and don’t feel that any of my writing has been particularly useful, however, it has helped to crystallise some thoughts and I hope to continue in that vein this year.
To help with my Ruby learning I used this website as a breakable toy, experimenting with new tools and techniques. As of this writing it’s powered by Ruby, Sinatra, Jekyll, Heroku and a few assorted gems. I’m planning to push the source publicly to Github at some point in case it ever does something novel that will be useful to others.
A satisfying moment this year was having an article published for the Software Testing Planet, with my Campaign-Monitor-co-consipirator, Trish. We wrote about our experience with the wonderful, flexible, creative world of low-tech reporting using dashboards. We also collaborated indirectly on a bunch of other writing; most of the other notes I wrote last year feature thoughts and ideas that were formed after lengthy debate and mental jousting with Trish5.
Rocking Out
In October I journeyed to London and spent four weeks jamming with my fellow Riverglide co-founders Antony Marcano and Andy Palmer. ‘Rocktober’, as we dubbed it, was a month-long product development ‘jam’. We hired a beautiful office in Central London, generated dozens of product ideas, built prototype applications for Android, iOS and the web, got involved with local user groups and charities, sponsored and attended a great conference and generally just had a blast.
I could, and should, dedicate more time to talking about Rocktober, which I plan to do in a separate note. Getting together without the pressure of producing something for a paying customer is extremely liberating. I highly recommend it!
Plying the Trade
On top of all the great personal development I did in 2010, I still managed to squeeze in some real work! At CampaignMonitor we released a bunch of exciting new features, which all provided their own challenges. From testing the dynamic functionality of Autoresponders, to the technical challenges of checking a new REST API and webhooks, while supporting an aging legacy Soap API with automation coverage, it’s been an exciting and challenging year.
Making new Friends
On my travels this year I met some fantastic people from all over the industry and all walks of life. From the guys and gals at XTC in London, to the Sydney Testers, it’s been a blast getting to know everyone a little better, hearing their stories and chatting about our lives, loves and losses. Thank you all for being great!
Looking Forward
We’re already over a month into 2011, or ‘Oh-Eleven’ as I’m calling it and my next writing task will be a belated plan for the year. I foresee more Ruby, a new programming language (functional this year) and more travels, trials and tribulations. Here’s to a fun 2011!
1 OK, OK, there were probably a few scans I didn’t have.
2 We’re currently hiring designers right now, if you’re interested.
3 If you’re interested in metaprogramming, check out the Sinatra gem; it’s a quirky but fun example of idiomatic Ruby code.
4 Actually, I learned ‘just enough’ C# and ASP.NET MVC for work purposes
5 I encourage you to check out Trish’s blog, which she updates far more frequently than this one.