In Defense of Casual Coding

Recently, the Stack Exchange blog posted a list of the 20 highest voted answers to the question “What’s your most controversial programming opinion?” While I agreed with some of the answers and disagreed with others, one answer in particular stuck out to me:

Programmers who don’t code in their spare time for fun will never become as good as those that do.

I think even the smartest and most talented people will never become truly good programmers unless they treat it as more than a job. Meaning that they do little projects on the side, or just mess with lots of different languages and ideas in their spare time.

I found this opinion particularly interesting for two main reasons: I get asked “Do you program when you’re not at work?” a lot (mostly by non-programmers [and often by executives]) and I agree with it wholeheartedly.

Before I continue, let me make it clear that I am a firm believer in the work-life balance; just because you love to code doesn’t mean you love to do it sixty hours a week. I’ve interviewed at many companies who try to spin the fact that their developers are in the office for sixty hours ore more because of the free soda and the fact that they “just love to code” like it’s some kind of happy accident. No matter how much you love what you do, if you’re forced to do it too often and for too long, you’ll start to hate it.

Now back to that quotation. Let me rephrase it:

Programmers who only focus on the skills and knowledge related to the specific technology stack of their employer will never become as good as the programmers who explore and gain new skills relevant to their careers and not just their continued employment.

For example, back in college, I worked at a tiny online retailer that sold home theater equipment. My job was to answer the phones, take orders, and maintain the website. This website was written in ASP classic and powered by 10 Microsoft access databases that had been haphazardly linked together to form the online ordering system. Most days, I was elbow-deep in table-based HTML and poorly designed database tables; at most I had to write one line of SQL a week. Needless to say, this place was far from the cutting edge of web technology.

However, when I went home at night – despite my exhaustion, I cracked open my PHP books and fired up my favorite IDE determined to make myself into an entry level PHP developer. Was learning PHP relevant to my job? No. Did learning PHP make me a better ASP classic programmer? Not really. However, I know for a fact that if I hadn’t sat down at night (unpaid and on my own time) and learned PHP, I would have never gotten my next job as an entry level PHP developer.

The truth is, no company is going to explore every new technology just to help their programmers keep their skill set sharp. In addition, very few companies are going to allow you the time to explore a new technology to the point where you become proficient. At most they expect you to do enough research to figure out whether or not the technology is profitable/beneficial and then get back to the work that pays the bills. That is why it is up to you as a developer to keep your skill set current on your own time. If you don’t, you’ll find yourself vastly outgunned when it comes time to find a new job.