Can You Lose Your Coding Skills?
This guide discusses the the concept of if it’s possible to lose your coding skills.
Guide Tasks
  • Read Tutorial
  • Watch Guide Video
Video locked
This video is viewable to users with a free Dev Camp account

large

Today’s topic was inspired by the BoingBoing article that tells the story of a QA developer who spent 6 years working for a company and literally did nothing besides play computer games, browse Reddit and waste time.

The Reddit user, FiletOfFish1066, posted his story to the site last week and has instantly become a supreme case study for what happens when you don’t continue to develop your coding skills. After not working for 6 years he says that he has completely forgotten how to develop and now he’s out of a job. The story goes that he started working as a software tester and realized that, by writing some scripts, he could fully automate his job. So he worked for about 8 months building testing scripts and after that he simply let the tests run. He didn’t have to do anything besides kick back and play video games all day.

There are a number of lessons that developers can learn from this story and that’s what I want to cover:

large

I don’t really blame the employee in this case. Apparently there was such little oversight in his organization that he was able to get away with not working for 6 years. That tells me that the company he worked for has serious structural problems in order to let that go on for so long.

It should be noted that many organizations are employing people to do work that software can do, but instead are choosing to waste money with archaic manual processes.

This developer started his job doing exactly what he should have done. He recognized that there was a way to automate his job, which was a great first step. If he would have went to management and shown what his automated script did he would have most likely been promoted for his expertise and would have a great career right now.

medium

It’s possible to lose your coding skills. If a world class bodybuilder would stop going to the gym, eventually he’d lose his muscles. In the same way if you stop honing your craft as a developer you’ll eventually lose your programming skills.

A few years ago I met with a gentleman who was the vice president of software development at a large energy services company. He got the position by selling software that he had built himself, which has become the industry standard and currently processes billions of dollars in transactions each month. Even though this individual used to be at the top of his field as a developer, since he became an executive, he got further and further away from coding the application and he admitted to me that he wouldn’t even be able to build a simple program nowadays.

medium

I just finished reading the book Peak by Anders Ericsson and Robert Pool and it gives case studies from the medical field, that show that the most experienced general practice doctors are not always the best in their field compared with less experienced physicians. The book explains that, on average, the longer a general practice doctor has been working in industry, the less they focus on learning and therefore they start to lose some of their expertise. Surprisingly it’s actually doctors who have recently finished fellowships and gone through extensive training that perform the best. The authors did note exceptions when it came to specialists. For example, cancer specialists that perform surgeries daily and are constantly working on their craft perform better than less experienced surgeons.

I thought that was a great example for developers because I know, from my own experience, that if I’m not daily using my development skills they will atrophy. There really is no middle ground, when it comes to development you’re either getting better or worse, you won’t stay the same.

So how can you ensure that you’re always improving and that you won’t lose your coding skills? Here are a few practical tips that I use:

large

Learn something new about development each day and be intentional with how you learn. In fact, just yesterday I taught myself how to integrate growl notifications into a Rails application, which was something I hadn’t done before.

If you simply repeat the work you’ve done in the past you won’t improve. Thinking back to our case study of the general practice doctors, the research showed that the reason why the older physicians skills decreased was because they performed the same work day after day and eventually the only tasks they could perform properly were the things that they had repeated each day. To be 100% honest, this part isn’t very fun, which is why so few people do it. Learning new and challenging skills can be intimidating and stressful. In the same Peak book the authors said that a common trait among all top performers, in every field they researched, was that they were willing to deliberately practice skills that they found difficult, because it was only by mastering those skills that they were able to grow in their profession.

A practical way for developers to implement this method of deliberate practice is to write down a list of features that you have never built into an application before. Then spend time each day until you have successfully built each component. After you’re done with that list of features, create another list. I personally have a list that I work and study from and it’s helped me to feel confident that I’m learning something new each day and that I’m constantly improving as a coder.

On a final side note, I’ve had multiple people message me about the story from BoingBoing asking how it was possible that the developer created a script for automating his work. Without further details it’s impossible to know for sure, however since he was in the testing department my guess is that he built a test suite, using tools such as Capybara to run through the software and generate reports on features. So that would be my guess.

I hope that this guide has helped to inspire you to be deliberate with your practice and that you will continually improve as a developer.