Jason Austin gave a great presentation at CodeWorks Raleigh recently about cultivating one's passion for software development through side projects -- safe spaces where we can play with new technologies and techniques.
The point's well taken: as developers, we're probably putting most of our energy towards the thing that must be solved, that keeps us employed, that pays our bills. The downside is that we become insular, deeply skilled in the few tools/techniques that we use every day, but shallow and uninformed about everything else. Three reasons:
- Fear. You're not going to try MongoDB if you're afraid that its Black Box Magic will someday fail you and your business will be at risk.
- Resource constraints. You have a million things to do, you know how to use MySQL already, so why bother figuring out PostgreSQL. Oh, and code freeze is in 12 hours.
- Inertia. The path of least resistance is almost always the one you've walked down before.
What Jason didn't mention as much, but which I think is equally relevant, is the importance of collaboration, and of community, in becoming a better developer. This is particularly important for those of us that work in non-technology-focused industries or in small shops, where the opportunities to cross paths with a new idea are fewer. Here in the Raleigh area we have a pretty robust community in the web application development space, and I'm fortunate to have heard some really awesome presentations in the last few months about some of the innovative things my colleagues are doing.
As Jason suggested, a side project is a wonderful place to learn new things and hone our skills without worrying too much about the blast radius of failures. I'm fortunate to work with a team whose members all have at least one side project going on at any particular time, and I'm inspired by the things they can get accomplished in their "spare time". I'd add that active participation in the local community is just as important though: the opportunities for exposure to new ideas outside your sphere are greater than your feed reader will probably provide, and the depth of information that you can get in a conversation may be better than any blog post or man page.
P.S. Josh Adell did a good rundown of Jason's talk and the rest of CodeWorks Raleigh 2011 on his blog -- check it out!