The biggest regret in my software engineering career
4 min read
I have been a professional software developer for 12 years now, working my way up from Junior Developer to Engineering Manager.
Over my 12-year career, I do have one regret that I wish I could go back and change.
In my first job out of university, I was working on a unit testing tool for C and C++. It was interesting work, and I was learning something new every day. I got to work with embedded devices and understand how computers work and a lower level.
I was later moved on to a client site to help build their internet bank. The project was all in C# which at the time I didn’t actually know. However, I learnt quickly and was soon able to work on tickets and add features to the project.
Over the next 2 years, I carried on delivering new features sprint after sprint. I was then moved on to another client project with the same tech stack, which I worked on for another 2 years.
As time went on, I got more and more demotivated with the work that I was doing. I knew C# and SQL to a decent level, and that seemed to be sufficient to do everything that I was asked to do.
It wasn’t that there wasn’t more to learn, but I didn’t need to learn it to do my job, and my colleagues didn’t seem to know any more than I did.
For those last 2 years, I could probably count all the new technologies I had learnt on one hand.
I had basically stagnated, but it had taken me 2 years to realise this.
I changed jobs to an exciting startup in London, and suddenly I was learning something new every day. The work was challenging, but I was growing as a person and my salary was also growing as a result.
If only I had made that jump earlier, I wouldn’t have wasted a couple of years not learning anything new.
I am now a lot better at switching jobs, I never stay in one position for longer than 2 years. In some cases, I move internally, so I can learn something new. On other occasions, I need to change jobs.
Every year I ask myself this one question, “Am I still learning?”.
Are you still learning?
I have seen software developers fall into this trap time and time again. They like being the expert, the go-to person for a particular topic.
The problem is, once you know more than anyone else on a topic, then the chances are you aren’t learning anything new on a regular basis.
I have interviewed candidates before who have 10 years of experience, but when you look at their CVs, they have spent those 10 years in one company using exactly the same tech stack.
In the job I was interviewing people for, we were using .Net Core, AWS and no-SQL databases. Naturally, the candidates had no experience with any of these.
It is difficult to recommend hiring a candidate that is supposed to be a senior when they have less experience in your tech stack than the junior employees.
If they have used these technologies in personal projects, then that does go in their favour, but it doesn’t beat using the technology “in anger” in a real-world setting.
There is a quote in the book 6 months to 6 figures that always comes to mind.
You often hear people say "I have 20 years of experience, I should get paid more," but in actuality, that person has 1 year of experience repeated 20 times.
If after a year, you aren’t still learning something new at least weekly, then you should seriously consider looking for a new position.
What about job loyalty?
Those not used to changing jobs every few years are probably thinking:
“Doesn’t job loyalty count for anything? Isn’t it good to show that you have been at the same company for the last 10 years?”
Well, actually, no, it doesn’t count for diddly squat.
If you look at the recent lay-offs in software engineering from highly profitable companies such as Microsoft, you will see they did not care about loyalty.
Some of the developers let go had been at Microsoft for over 25 years and were instrumental in developing technology that you use every day.
Clearly, loyalty shouldn’t ever be a factor in your decision-making process.
Microsoft may have laid off people at random based on their salary and nothing else. It is a possibility, but the likelihood is there were other factors at play.
I suspect some of these developers got a little too comfortable in their positions. They were the go-to people, but they weren’t necessarily contributing or learning anything new. Of course, Microsoft could have just picked their names out of a hat.
Either way, loyalty didn’t come into Microsoft’s decision. Companies aren’t going to keep you around if you aren’t a good investment any more.
You need to make sure you are investing in yourself and your skill set if you still want to be relevant to the market when you come to change jobs. Which in most cases, as we have seen, should be sooner rather than later.