|Throughout my 20+ year career within the software development industry, I have moved jobs for a whole variety of reasons. Often I have moved jobs for several reasons at once. There are many reasons why I have moved, and these will be different from one person to the next. This article will describe a few of the reasons that have played a part in my own personal decisions to move during those 20+ years.
To protect the identity of the companies in question, I will not mention any company names or people. That would be unprofessional and is not the point of this article. I want the article to focus on the reasons why I have felt the need to move on in my career, and is in no way intended to finger point or to pass blame or judgement.
So with that out of the way, let's get on with the list.
- Job security. Surely one of the most important factors is how confident you feel in your role within the business. This confidence (or lack thereof) may stem from a multitude of factors. Do you feel your role is somehow threatened by senior management decisions (cutbacks, downsizing etc). Do you feel the industry or company is threatened by external forces that could lead to your role / department being threatened? Maybe the company has been the target of an acquisition, and the parent company wants to make savings on their investment. Maybe the company has lost one or more key customers. Maybe the company is vulnerable to market forces that have led to a fall in customer demand. Many companies / industries have been highly affected by COVID, and have shown vulnerability to its devastating effects. All of these are perfectly valid reasons for feeling that your job is less than secure.
- Poor management. We've all seen poor management in action. Perhaps we've worked with poor managers, or managers who have made poor decisions. Maybe a manager who has not had the backs of their team and / or been coerced to make a politically expedient decision that didn't go down well with the team. I have worked with all of the previous managers, but only once have I worked at a company where the management structure was so bad that I have felt the need to leave that particular company. From the CEO, to the CTO to the senior management team, this particular company made bad decision after bad decision. This culminated in the entire development team leaving over the course of 12 months. The effects of these decisions had a catastrophic effect on the morale and wellbeing of everyone, and the development team in particular. Promising customers functionality that simply could not be delivered in the timescales that were agreed led to huge stress within those who were tasked with delivering that functionality. In the end, even financial enticements weren't enough to alleviate the pressure, and the team all eventually walked away.
There is an adage that says "People don't leave bad companies, they leave bad managers". There is certainly a lot of truth in that.
- Career progression. We all want to make sure we progress within our chosen profession. That we acquire new knowledge, learn new skills etc. What we don't want is to become stagnant. This is particularly a killer within software development, where if you're not moving forwards you're effectively going backwards. You cannot become stagnant or get complacement within this industry. I have seen many people thrown on the scapheap when their skills were no longer needed. Career progression is absolutely vital within the software development industry. You may feel comfortable in your current company using that legacy technology, but it only takes small ripple to topple you out of the boat and into turbulent waters. All of a sudden you have to try to find a new job when you lack the latest skills the industry demands. Career progression is also about ensuring your own longevity within a fast moving industry.
Future employers may not look very favourably on a software developer who has used the same technology and made little progress in their skill set. I happen to be someone who enjoys learning new skills and technologies and keeping myself abreast of current trends. If you don't have that same drive to be constantly on the cutting edge and learning what is new and emerging, then you may fall by the way side should the unexpected happen. You just don't know what's around the next corner. Always keep learning and trying out new skills. It might save your skin one day.
There are many reasons why I or anyone may decide to move on from a particular company. Ultimately the decision to do so is personal, and there are no wrong or right reasons for doing so. We all need to do what we feel is right at the time. I have never made such a decision lightly, and always reflect on the pros and cons of such a decision, as well as relying on gut instinct. Moving to a new company can breathe new life into your career and give you the opportunity to face new challenges, meet new people, learn new ways of solving problems and new ways of creating software applications. As long as you feel you are moving for the right reasons, then that's what really matters.
"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare