Over the past 13 years of my professional career, I’ve gone through several phases. I had a phase where I did little-to-no extra work or education. This would be the first couple years of my career, when I was recently married and then a little over a year later, had our first kid. There was the phase where I was going to seminary full-time and working 25-30 hours a week. Again, I didn’t do a lot of outside work because my free time was spent translating Greek or Hebrew, or reading a ridiculous amount of pages for class the next day. Another phase was when I was spending a lot of time outside of work writing code, or reading about code. This was the time I was working on the side trying to help launch a start-up. Finally, I’m in a phase now where I’ve replaced the bulk of my side-job hours training Brazilian Jiu Jitsu (about 8 hours a week.) I even run a blog about my experience going from couch potato to BJJ practitioner.
In all of these phases, whether I was only working a 40 hour week, or putting in 60 hours a week of development, I worked to make sure my skills didn’t grow stagnant. In fact, I am writing .Net code today in large part because of a single decision I made while working on an MFC C++ app. We had a VB6 app that would run through various pieces of data and validate that they met various business rules before we’d do a release. When I was working remotely, this little validation code would take over an hour to run. I was supposed to run it every time I made a slight data change. I wanted to figure out why it was taking so long, and all the profilers I could find at the time worked with .NET but not VB6. So I ported the app to VB.NET, ran the profiler, found some bottlenecks and got it down to 10 minutes for me. If you were on-site the entire program took less than 1 minute. I was a hero for a couple of days. The fact that I decided to try out .NET (which was only about 5 years old at that point) allowed me to land a job in a different city doing .NET. If I didn’t try it out then, I’d still be searching for Windows based C++ jobs.
Staying Up To Date
One theme that often comes up when I’ve done interviewing is the amount of technology people are familiar with. Some people live and breath code and technology. Those people are fairly rare, and I would not classify myself in that category. The other extreme, however, is much more common, the people who come to work, write code and go home and do something else. I’ve met numerous people that brew beer, photographers, cheese makers, gym rats, knitters, and just about everything in between.
However, within this group of people who don’t write a lot of (or any) code outside of work, there are again 2 groups of people. There are those who stay relatively up-to-date with technology that is out there, and there are those who use their hobbies as an excuse for not knowing current technologies.
The latter group I have almost no desire to work with. I’m all for people having hobbies. Even though for quite a while after seminary, I didn’t really have any, I see their value. I want my coworkers and the people I interview to have hobbies. I think it makes them a more rounded individual and more fun to work with. However, it is still possible to learn new technologies in the midst of your hobbies.
A quick example comes from someone I interviewed about a year ago. He made cheese in his spare time. Cheese making can be a rather low-tech hobby. After all, it’s been made long before the advent of computers. What impressed me about this particular candidate (and a large part of why we offered him a job) was that in his cheese making process, he wrote an application to help him track different recipes. Apparently, different cheeses need different amounts of time to “cure.” He wanted to be able to plan and track accordingly, and he chose a technology he didn’t have any experience in to write it. His goal with this app was to make it portable enough so that other cheesemakers could create their own recipes & guidelines and share them among their community.
Learning how to code better and being aware of new technologies (notice I didn’t say being an expert) can be accomplished with a few hours a week. In fact, something as simple as taking 30 minutes a day to read blogs can at least get you familiar enough to know what the new technology is, and when you should use it. For example, over 2 weeks you could at least know what client side templating is, when to use it, and what some of the popular options are. You obviously wouldn’t be an expert, you might not even be able to do a “hello world” but at least you’d know there are alternatives to the way you currently do things.
Have hobbies, enjoy them, love them. Don’t use them as an excuse to suck.