There's nothing quite as scary as feeling your skillset stagnate. In the tech world, especially in consulting, failing to keep up with the times can feel like the kiss of death.
This is one of the reasons Developers, and Web Developers especially, jump at the chance to use whatever the shiny new toy is whenever they can. It's not that we really believe it's going to change our lives dramatically for the better, but rather it's making sure that we keep ourselves abreast of the trends and movements in the technology sector and don't fade quickly into obsolescence.
In the fall 2009 I was becoming more and more worried that my skillset, if not obsolescing was at least growing some mold.
We'd moved to Ruby from PHP and C++ in 2006 and had been doing website projects fairly exclusively on our magnum opus Rails CMS Webiva for the previous two years. We were gearing up for the Open-source release and were putting in long hours trying to get our ducks in a row, turning down PHP, Flash and .NET consulting projects to focus on the startup side of our business.
Being a small consulting shop and me the only developer, there wasn't a lot of cross-pollination of new techniques and ideas, and working in one language and one platform didn't help. Worse yet, we were even falling behind the times in our primary development platform Rails, which evolves at a lightning clip, and failing to stay up with the latest best-practices and trends because we were operating in our own tiny bubble.
I worried that being a small company without a daily exchange of ideas there was no easy way to separate the wheat from the chaff of development trends keep up with everything that was going on. I feared in the next couple years we were going to face a crisis of obsolescence.
It turned out I was just being lazy.
While it's true we were floating around in our own bubble, the bubble had plenty of windows to let me get back in touch with what was going on outside. A few nights a month and a few weekend's here and there was all it took to get that mental excitement at learning new things back.
Over the past year I've gotten back up to speed and felt happily plugged in to what's going on in the development community, and I wanted to share the events that have helped immensely:
1. Boston.rb - the Boston Ruby Group - but you can substitute your primary language and your city and the results should be the same. The type of people who show up to these events tend to be the people most interested in the evolution of your favorite platform, and make it dead simple to get a pulse of what's new and interesting via osmosis just by showing up regularly.
2. Rails Camp - not sure if these exist in all languages/platforms, but they should. Simply going away for a weekend to hack on something non-work related got me back to learning for learning's sake. Again the type of people who show up to this are those most interested in learning, so just sucking up the discussion and atmosphere for a weekend is invaluable.
3. Startup Weekend - if you haven't been to one yet, you're doing yourself a disservice. The energy that pervades this event is amazing, and the focus on actually getting something done and out the door makes it necessary to pack an immense amount of knowledge into your brain into a short period of time. We launched Vidicul.us over the Boston weekend this past June.
4. Music Hack Day (or RailsRumble etc) Anything that gets you out of the house and interacting with other developers leads to learning and growth. Putting a deadline on it just makes it more likely you'll concentrate on the important things. You don't have to give up all your weekends, but the collaborative, timed-pressured, immersive environments that these events generate can't be substituted for anything else.
5. Meetup.com - The rise of Meetups and how easy they are to find and start on Meetup.com is the greatest boon to normally isolated professions to come about in the past decade. No longer are niche groups of developers invite-only and tough to find - just search for the technologies you are interested in and join up. (and if you're in Boston you should join the HTML5 Game Development meetup I just started - lot's of excellent brain-stuffing I promise)
These things, all of which encourage getting out of the building and actual face-to-face interaction with fellow developers has made this year a learning renaissance of sorts for me (hiring another developer at Cykod helped a lot too) and they all encouraged me to restart something else I'd gotten away from:
6. Learn new frameworks and languages early and often. When some new language or framework comes out, spend an evening hacking a small project together on it, just some simple itch you want to scratch. Don't worry about learning everything about it and don't make your company switch or do a production product on every new sparkly thing, but learning how to learn new languages and frameworks is the most important skill you can have. (Start with Seven Languages in Seven Weeks if you need a jump start)
The result, at least from a coding perspective has been my creating a number of pet projects in different frameworks and languages. Yes most of the time they are half-baked, half-executed hacks that don't get properly finished or tested, but serve as simple proofs of concepts for ideas.
I stopped doing this for a long time as I grew sad at at a wasteland of too many uncompleted projects, but I failed to realize that value was not in the end result, but rather in the proof-of-concept execution of some idea bubbling around in my brain. I'd put off starting a project if I didn't think I'd be able to put in the resources to complete it, not understanding that I was missing the whole point of the endeavor. I'm now happily in the middle of about 10 projects, most of which will never see the light of day but all of which have been fantastic learning experiences.
So that's the story of how, over the past year, I feel like I got my hack back -- I'd love to hear any stories about other developers going through the same trials and tribulations.
....and follow @cykod on twitter