Developers must keep learning, to stay on top of trends. But this comes at a cost: Each new area of expertise you develop leaves you less time to maintain your core competencies. Here's how you can keep your skills relevant…particularly when your job requires you to work on a language or system that is no longer on trend.
It's time to polish those technical skills until they gleam.
If you're a veteran programmer, you've probably forgotten more about coding than most people ever learned. It's as easy and quick to reach for the familiar tools of your trade as it is for you tell me to get off your lawn.
However, there's a reason to awaken the skills you buried along with your ex-girlfriend: In this crazy world of getting replaced by a 21-year-old who works for beer—or an 18-year-old who illegally works for beer—a polished resume can be your lifeline. But only if it's up to date.
Luckily, it's easier than ever to keep your technical skills sharp enough to decapitate even the most sober young coder. And if you apply yourself, you may even be able to pick up a few extra bullet points on your resume.
Online tutorial sites
When it comes to delving into an established subject, the bar to re-entry has never been easier to vault. You can access a plethora of online courses, many of them free, many of them high quality.
A great way to remember the college knowledge you left behind along with your Klimt posters is to, well, go back to school—virtually. Coursera, EdX, and Udacity offer free classes from top-notch universities. So does iTunes U, the fabulous and painfully-underrated service provided by iTunes. Now you can take classes from Harvard or Stamford without having to submit your blackened high school record. (iTunes also has IT-related podcasts, which tend to be more interesting and less dry than a university lecture.)
CodeCademy's purpose is to teach new skills from scratch, but with its examples and exercises that check your answers as you go, it's a wonderful way to brush up your dusty expertise. Warning: My foray into CodeCademy came to a halt when one page of one course was bugged, and I couldn't progress further.
One of the simplest ways to keep yourself in fine coding form is through Code Kata, a series of code challenges that should take most programmers 45 minutes to an hour to complete. Similarly, there's CyberDojo, CodingDojo, as well as others you can find by Googling "code" and "kata."
Lynda.com, a repository of online tutorials, also teaches new tricks that can be used by old dogs to keep themselves perfectly trained. The only downside is that Lynda.com isn't cheap. But if you're determined, at $25/month (or $37.50/month, which comes with exercises for you to do), you can easily get your money's worth.
The upshot: if you stumble in a technical interview, it's nobody's fault but your own.
Meetup.com and local user's groups
If you live in a town with more people than sheep, chances are you can find a user's group for a subject of your choice. Some commercial products with development communities even actively support their user groups with official gatherings and events. You can locate them by Googling [insert name of language/skill you want to develop] along with "user's group" (for example, the New York area Linux User's Group).
Then there's Meetup.com and the more-specific Programming Meetup, which offer gatherings in interests as quotidian as computer security and as esoteric as quantum finite state machines. Best of all, these meet-ups give you the opportunity to network with your colleagues, some of whom may be on the lookout for new hires.
Want to take your skills further? Take them out of town. There are conferences for programmers and developers in every aspect of information technology.
There's no shortage of open-source projects that could use help. Finding an existing project and contributing a useful patch or bug fix is a great way to ease into larger projects without biting off so much code that you choke on it.
But how do you find a group of technical superstars who are willing to accept someone whose work is as painfully shabby as yours?
Although there are multiple directories for open source projects, SourceForge has a wealth of projects to pique your interest, from mind-mapping software to project lifecycle management tools. While many open source projects host themselves at SourceForge, others maintain their own sites, plus have SourceForge pages.
GitHub is another popular open-source hosting site. On GitHub, if you find a project you'd like to contribute to, you can make a copy (or "clone") a project's source code repository and implement a few tweaks there. If your tweaks take, you can submit the changes for the project owners' review. It's that easy.
(Pro Tip: If you don't know the "git" source control system yet, then that's very close to the number one skill you should teach yourself to get back up to speed.)
Another go-to site you can go to is Ohloh. As you surf for open-source projects, you'll note that many of them accept people of all mastery levels—even the middling ones, like you. They even list beta projects, so you can get the jump on skills that technically don't exist yet. I can hear the headhunters dialing you right now.
Hackathons are marathon programming sessions, which can take several hours or an entire weekend to complete the assigned task (such as developing a simple iPhone app). But at the end of it, you walk away with a sense of accomplishment (as well as a need for a shower).
According to front-end developer Linda Peng, "Going to hackathons has been pretty useful in helping me figure out what other developers are working on, what tech folks are using, what resources people are following." Better yet, hackathons are "great motivation for me to work more on my personal coding projects," she says.
If you don't have time to code, but you do have a few moments to spread some wisdom to those whippersnapin' young-uns, you could answer a few questions on forums of your area of expertise (say, Apple.com) or better yet, Stack Overflow.
Stack Overflow is a technical Q&A site that might be what you need to dam your decaying memory. The best answers get voted up, so you can establish a credible online rep in your areas of expertise… not to mention a few bonus points proving you're an effective communicator. That’s handy if you want to prove you know what your resume claims you do.
And while you're there, browse through a knowledge base of diverse subjects as you spruce up your own understanding of your next area of expertise. It's a virtuous circle.
Your current job
Why spend your own time trying to learn a new skill when you can spend your boss' time? Tell your higher-up that you need to brush up on your skills. You know. To make yourself more valuable to, um, your employers.
Web systems administrator Richard Huffman just asks for what he needs. "I use the language I've used least. Often I can say 'Hey, I'm doing it in Python because I need to get better with it,' and I'll get the additional time."
Depending on the sensitivity of your deadline, a good manager will find the extra time for you to write some code, curse heartily when your program fails to run, bug hunt, cry at the futility of it all, and rewrite. That's because many companies recognize that educated employees are a benefit. The better ones, anyway.
Remember: Just because your skills are atrophying along with your puny muscles, it doesn't mean they're doomed to remain shriveled.
Then there's the counterargument: Don't sweat it
According to Meredith L. Patterson, a productization engineer who does freelance computer security research, "I use C++ every day... but there are parts of C++ that I don't use as regularly as I once did." Patterson isn't concerned. "This is okay, because having learned [a programming language] once, I'm confident that if I need to, I can learn [it] again."
When it comes to code, Patterson suggests that knowledge of multiple languages is preferable to mastering any one of them.
Patterson said, "Good software engineering is about making good choices… We have so many different programming languages because people have had a lot of different ideas about how to [make choices]. The benefit of being exposed to lots of those ideas outweighs the risk of skill in any one language (or several languages) becoming rusty.
"It makes you a better systems thinker, and being a skilled systems thinker is part and parcel of being a skilled software engineer."
So if you don't remember every little nuance of a language, you could always look your interviewer in the eye and say, "I don't know that. But give me a few minutes, and I can figure it out."
Isn't that how you earn your living right now?
How do you keep yourself in fighting form? Let us know in the comments!