I answered this question on Quora back in December and it proved very popular, so I hope this provides some inspiration to those that feel like they are struggling. It’s based on my own experience, so it’s practical and not theoretical – at least I hope people find that to be the case.
The original question was this:
I have been working as a software developer for 10 years but my programming skills is still weaker than junior developers, I don’t want to lose hope and still want to work as a developer, what should I do to improve?
I’ll set out how I answered:
Desperation or inspiration starts you off
Sounds like you’ve hit your point of action, it’s either desperation or inspiration for most of us.
Cricket legend Shane Warne once famously said: “Monty Panesar hasn’t played 33 Tests, he has played one Test, 33 times”. If you felt anything like me at that stage of my career, it’s like you’d done 1 year 10 times.
I can tell you from first hand experience there are definitely things you can do. And you can definitely skill up.
People over-estimate what they can do in a week, and underestimate what they can do in a year. So little and often is the key.
Step 1 Identify root cause(s)
Firstly go nuts with a mind-map tool or list if you’d prefer. Get what’s bothering you out on paper. Why is that your skills are weaker? Is your stuff getting re-worked? Are you delivering slower? Trouble estimating? Don’t know what’s going on with the project?
This pic is one of my mind-maps from a few years back to give you an idea. I was in a dark place back then. I used the mind-map to get a ‘theme’ – apologies for the handwriting!
Step 2 – prioritise
Work out which you need to focus on first.
Is one of them going to get you fired? Is one of them something you obviously need to focus on before all the others? It doesn’t necessarily have to be technical.
In my case for a job I thought I was going to lose, I really had to understand Domain Driven Design pretty quickly but at least I had code at work as a starting point. What I worked out I really needed was to get better at understanding what was going on, why and when – my own general ‘self-project’ management and analysis.
In short my biggest single weakness at the time was not asking the right questions at the right time.
After that, I needed to learn Domain Driven Design to keep up with the specific project I was on at work. DDD isn’t on that mind-map in fact, but I knew I had to tread water whilst I fixed my longer term problems.
Step 3 – realise there’s no substitute for hard work
Accept you’re going to have to do overtime, although that doesn’t mean longer hours in the office necessarily (at least long-term). There’s no substitute for hard work I’m afraid, but you can work a little smarter. I had to learn during my commute and put in some hours before and after work (sometimes in the same day, less often as I improved).
Step 4 – get suitable training materials
Ignore anyone who says you won’t learn from a book. I needed to be in the office to see ‘specific work related’ examples of DDD and to get the big picture of what was going on (i.e. the two above bullet points). But during my commute to work, I read text books and watched tutorial videos etc. Books away from the office gave me a ‘safe’ way to understand the overarching principles and then I could apply them straight away from the office.
Once you have your training materials (book on DDD in my case), I could work on a training plan. Initially this was as simple as getting through the fundamentals of DDD outside of work and then keeping a diary of questions that the ‘more able’ developers were asking. Why were they asking that? From that over time, my analysis skills started to improve.
Step 5 – Chip away little and often for huge compound gains
The most important points that made this work though were planning and consistency. In my case, my employer at the time had a culture of fear, so I didn’t need any training diary!
At the start I mentioned inspiration as well as desperation. Maybe rather than thinking you’re going to get fired, you’re just feeling like you’re drifting, for example. In that case a realistic daily plan of what to do to improve you will really help. If you can string together a series of small improvements – you’ll be amazed at your progress in a month. That will get you going for next month.
Sign up for more career pointers
Find this interesting? Why not sign up for the newsletter below on career improvements and pointers. And if you have any feedback, feel free to contact me too.