It’s easy to say that many skills are like riding a bicycle; that you never forget them, and can just start using them again after a long period of disuse. It’s a lot harder to actually do it. This is especially true when you try to keep track of several closely related skills. For instance, I’ve learned so many computer programming languages, that when I need to learn a new one, it’s faster to see how it’s different than one I already know than to try to learn the language itself. I’m sure the same is true of other fields.
When “Jacks of all trades” (I hate the term “generalist”) like myself job hunt, there’s usually a list of possible technologies and environments we’re willing to work in, so we can’t afford to just keep up on Java, or Perl, or PHP, or .NET. We not only need to keep sharp on all of these, but we need to keep track in our heads which is which (after all many programming languages are very similar). No matter how long you’ve used a skill, a few months of unemployment can blur the details. In this post I plan to cover some helpful techniques for being ready for the technical interview or test without flipping through 300-page books each time. I will not be addressing mastering new skills, because that is an entirely different activity. Some of them may be specific to software development, but I hope there are parallels in other areas.
Like many job hunting activities, you shouldn’t wait until you’re job hunting to start doing them. After all, you want to keep marketable on skills you’re not currently using at your current job, right?
Before you begin studying, you need to develop your lesson plan. This is essential because you don’t have a lot of time. So start with the list of skills in the job you’re preparing for, figure out which ones you need a refresher on, and prioritize them. If time is really short (like preparing for an interview the next day), place a time limit on each subject. Also remember that overstudying can increase your stress levels, and that insufficient sleep will hurt your recall no matter how much you’ve studied.
Quick reference lists
Leading off with my strongest suggestion, is to build a collection of quick reference sheets, links to tutorials and references, PDF documents, and even notes you’ve taken yourself in the past, on all the skills and technologies you need to keep on top of. This can take your review time from several hours to less than an hour. Even if you feel you’re still strong in that area, reviewing that material will remind you of the little trips and traps you might have forgotten. I have a collection of about 160 such quick reference documents I keep both on my laptop and on my thumb drive, so I have them with me wherever I am, and a few physical sheets, too. In fact, I used one of them just yesterday at work, because I needed an ASCII chart (Yes, Virginia, even in Java, when you get an InputStream as a byte array, you may need to know your ASCII chart to work with it). Here are some sources of quick reference materials.
- DZone is a wonderful website family that has many wonderful articles for software developers, but they also have many quick reference PDF documents you can download for free. If you sign up with their mailing lists, you don’t get any spam or third-party emails, just announcements of new content.
- BarCharts and Visibone have high-quality laminated sheets with quick reference information. I like them so much I have a duplicate set of some of the cards; one for home and one for work.
- When studying a technology by reading books or online tutorials, I often take notes, forming my own quick reference materials from them. I tend to use straight text files so I can easily search them and view them on any platform, but normal people may use Word documents.
- Most of the time I’m near an internet connection, so some of my quick reference material is links to online content. I have links to the Java API JavaDoc, documentation for Ant, etc. I also have links to tutorials, articles, and blog posts.
When developing your collection of quick reference materials, please respect others’ copyrights on materials. There are a lot of illegal PDFs of books floating around. This is a hot issue for me.
Birds of a feather
Getting together with others, either physically or electronically, who are interested in the same skills is a great way to keep up on skills. This can range from getting together with a friend or two, to attending a monthly user group meeting. This can not only keep you up to date, but present opportunities to learn more. It has many advantages over studying by yourself, not the least of which being that you’re not sitting at home by yourself. An interactive environment also lets you fill in the gaps in your knowledge. Mailing lists and forums are great, but they’re less immediate.
When I was unemployed in the early 90’s (and in good company) I started a group with two friends called a whiteboard groups. We (and others we invited to join us) got together once a week, and one person would present a problem or situation that one might encounter in a technical interview, and the rest would present their solutions, or at least talk about the problem. It was a wonderful experience.
Online examples are the least interactive of the sources I’ve listed here, but they have one big advantage: they offer context. You can learn not just the how, but the why and the when by seeing how others handle the situations you’re studying. Examples are usually small and concise, which makes them perfect as review material, but not necessarily as learning material.
The good news is that for many skills, there are plenty of examples out there. The bad news is that an awful lot of them may be outdated, incomplete, or just plain wrong. Last year, I wanted to learn JBoss, but pretty much every example I found fell into one of those categories.
Just do it
A great way to learn a skill is by just trying to do it. Of course this is more practical with software development than surgery, but even there analogs and simulations can be used in place of victims test subjects. There are many fields of study where the tools of the trade are relatively inexpensive and available. One of the many reasons I support and favor open source and cross platform technologies is that if you want to learn one, you can just download the tools and start working. There’s no several hundred dollar investment barrier, or license seats to worry about. But if that’s your thing, there are often steep discounts for students. For more physical skills, like working with tools, one can often get them used cheaply.
The nice thing about just doing it is that you can start with the very simple case. In software, we call that “Hello World”, because one of the first things you do when you learn a new language is write a program to output that phrase, as a sign you’ve successfully created a working program that can produce detectable results. But then, you make it more complex, like reading in input and using it in the output. Or learning how to iterate or loop or branch by outputting the message several times. Each attempt builds on the next and gives you another part of the skill.
That can take a long time, though. So why am I mentioning it here, when I’m talking about refreshing yourself on a technology? Because if you do this when you’re learning it, and you hold onto your creations, you will then have your very own guaranteed-to-work trail of increasingly complex examples to revisit.