Sharpening out of date skills
Tags: training, skills, learning
Published: 2018-03-07 18:55:50

---
title: Sharpening out of date skills
published: true
description: As your career progresses within a company, working on a limited set of projects, so the products you're no longer using also progress. Time to catch up
tags: training,skills,learning
---

Following a set of unfortunate circumstances I found myself out of work for the first time in nearly 20 years. In itself this isn't a large concern however what I noticed when updating my CV, was more so - my core skills had been sorely neglected.

###What happened?
Working for a company generally gives you a limited set of projects to work on and if there's no business reason to upgrade/refactor code/rewrite tests to use the latest and greatest software or library versions, that learning may not be available in the work environment. 

How about outside work? I've always used my personal projects to teach myself new skills, technologies and techniques. Ah yes - but those funky libraries, niche techniques and third party services which I spent hours implementing in a made-up project which was never going to see the light of day aren't what gets you employed. It's the core skills that do that and they needed some polishing.

I guess that fun side projects aren't considered fun if you're using the same technologies that you use in the office every day.

###The knowledge gaps
I identified several areas which really concerned me as they were my headlines skills on my CV. For example:

* MongoDB was a two point releases ahead of any version I've used in projects
* While my PHP projects were running on PHP7, I hadn't upgraded any of the code to take advantage of any PHP7 functionality
* Most of my front end work has been built using Bootstrap 3. Bootstrap 4 has since moved through Alpha, Beta and now in release.
* My projects were being run in a Docker environment on EC2 however the "deployment" was still very manual

###Time for action
I've read plenty about PHP7, MongoDB 3.6 and Bootstrap 4 to have a good idea what was available and of the new functionality but I'd never used it. I knew for a fact that reading alone doesn't embed knowledge. I learnt that from reading a lot about Promises, await/async functions and generators in Javascript. When a came to use them for the first time, I was floundering.

I considered how to approach this knowledge upgrade and decided I needed to structure my actions in order that there was value beyond just learning for the sake of it. It was also very important to try to make this process assist my job searching. 

I considered the following approach:
1. Identify areas for concern and improvement
2. Prioritise these areas
3. Read and understand each area
4. Identify a use case for each area 
5. Action

I won't go in to my findings and discoveries for each step as they're very specific to me but generally the process started to fall in to place quite well with some nice discoveries along the way. 
* I found a course on MongoDB University about the new features in MongoDB 3.6 ([https://university.mongodb.com/courses/M036/about](https://university.mongodb.com/courses/M036/about)).
* A couple of the 3.6 features made complete sense to implement in a one of my personal projects
* I discovered Bitbucket pipelines which allowed me to build and deploy my Docker containers straight to my server on `git tag`

Within a couple of weeks, I felt my core skills were back in good shape and I could speak with confidence about new features, not just having read about them, but having implemented solutions using many of them.

###Lessons learnt
What's become clear to me as a developer is that I can't neglect my core skills again. Development is a fast moving area and as a developer, I owe it to keep up to speed. 

Obviously, a work life balance is important so we can't get home from work each night and spend hours on training therefore I think it's important to push harder in a work environment to enable learning. This obviously needs to be "sold" to the company. As I mentioned right at the start, often if there's no business requirement or value to upgrade your internal products/software, it doesn't get done.

I believe there **is** value to most companies to allow developers to keep up to date though:
* Developers will generally be happier that they are using newer versions of products and that they are being allowed to learn on the job.
* The company is likely to be more attractive when hiring developers.
* New features in upgraded software/libraries may enable the possibility of increasing the feature set of the company product in which it's being used.
* ...and obviously newer versions of products often have security and speed improvements.

A lot of this is "hidden" value which will rely the developer selling the idea to the company and for the company to be forward thinking enough to see the value.

They are the kind of companies I'll be looking at as the job search continues.