Wednesday, September 10, 2014

Learn How to Punch Ducks

If you've come here by following the link at the bottom of today's comic, you might expect me to talk about duck punching. I'm going to mention it but not really discuss it at length. Sorry, maybe some other time. If you really want to read about it, I would recommend this Paul Irish blog post from 2010. It's getting quite old now but still a good introduction to the abuse of water fowl.

What I really want to talk about is the more subtle message in the comic. That is the constant need to keep your skills up to date by learning new things. If you want to be a software engineer who remains employed long-term, you need to be constantly learning. Education is a lifelong process. Where are the people today who refused to learn C++ because they would always need FORTRAN developers? Yeah, I'm sure there are still a few FORTRAN programmers out there but not nearly as many as there are Python programmers. And don't get me started on COBOL...

If you are still reading you might ask yourself, "how does one accomplish this?" I'll tell you how not to do it, and that's expect your employer to do it for you. Odds are, you are going to be employed to develop a system in a particular language and unless it is a totally new system you'll be expected to follow some already established design patterns. And by all means, you should do that. Gotta keep the people happy who sign your paychecks. So this lifelong commitment to learning thing has to be something you do on your own time.

But here's the real key:

You need to code outside of your comfort zone.

If you are a professional Java developer like I am, learn how to create an application in Python. If you only work on back-end data processing systems, learn how to make an iPhone app. Never heard of duck punching before today? Learn Ruby and get punching. If you've only ever processed text files and displayed data in ASCII tables with dashes and vertical pipes and octothorpes and whatnot, you need to learn OpenGL.

Even if you are a Java developer for your entire career, which seems unlikely but always possible, learning how to do things in a different language will make you a better Java developer. It will make you a better software developer in general. It will make you more confident when your boss tells you that you need to move to a new project that is totally different from your last project. It will even make you smarter and more popular.

I make no guarantees of any of these claims.

But I do adhere to this myself. I think it works. comic for September 10, 2014