Rusty Skills
I have an embarassing confession that I have to make. But first, some background.
I’ve been an engineer professionally for about 10 years now. I have a masters’ degree, I got good grades and I used to code a LOT. I love coding. I think of it a lot like running: for some reason you feel sluggish, down and generally blah until you start getting up early and running every other day. And then? Then you feel energized, competent, capable and lifted. Everything gets better when you run.
I have the same feeling for coding. I always used to code professionaly and personally and I felt great about it. I love figuring out challenges, wrestling with compilers and having something to show at the end of the day. But then work took a turn away from technical skills and into ‘soft’ skills. I was doing more proposals, budgets, schedules and presentations than I was algorithms and unit tests. And then I bought a house and had a baby and got caught up in parenting, home improvement and gardening. Suddenly I had no opportunity to code at work or at home.
I didn’t think my skills got rusty: I was still the technical lead at work and was at least responsible for ensuring all of the coding happened. I read articles about programming and heck, I wrote some too. I thought I was still in the game. And then it happened: I had an interview with a hip young research company on the west coast and everything was going great - until the coding portion. I always thought that coding tests were an opportunity to show off my methodology for writing code to solve a problem. If I was logical, organized and explained what I was doing I’d be sure to pass the test, right?
I did not pass the test.
My only excuse is that I lost power during the test - twice. But that’s it. Otherwise, the failure was all mine. It turns out that west coast companies expect you to finish the challenge and arrive at the most efficient solution in that time. It wasn’t enough that I had a logical approach. It wasn’t enough that I asked the right questions and understood the context of the problem. They expected me to write code quickly, correctly and efficiently. And I couldn’t.
The reason I failed is that I didn’t practice coding. I realized I couldn’t rely on my job to give me the opportunities I needed to keep my skills fresh. So I had a choice: I could give up on coding and move from the still technical ‘team lead’ position into the decidedly not technical ‘project manager’ position. I don’t want to give up on my technical skills. I like them. For me, coding is like running: difficult, tiresome and annoying, but it fills me with a sense of accomplishment and tickles the pleasure centers in my brain. If I want to keep my body in good shape, I run. If I want to keep my mind in good shape, I code.
So in addition to my exercise habit I’m adding a coding habit: one code challenege every day, or maybe every other day depending on how I feel. Already I’ve gone through one and enjoyed it, but after having seen the solutions from others, I know that I’ve got a lot of ground to cover. Still, there’s nothing better than practice to learn new, good habits.