Here are my thoughts on programmer career planning. You should always stay employable, mostly by changing jobs regularly (every five years or so). When changing, don’t wait until you have to. Your negotiating position is much better when you can turn down a potential new job.
Every year you need to ask yourself: If I lost my job today, how hard would it be to find another one? I know people who have remained at the same company, even in the same position, for 10, 15 or even 20 years. If you stay at a job for that long, your chances of finding another job are drastically lower than if you have changed jobs every five years or so.
There are many reasons why you become more employable if you change jobs. Changing jobs exposes you to a new and different technology stack. If the system you are working on is written in Java, chances are that it is going to stay that way. It is quite rare that the platform of a product is changed. By changing jobs, you have the chance to work with other and newer languages and platforms, thus broadening your skills.
The same reasoning applies more broadly: at a new company, you will be exposed not only to other programming languages, but also to other tools and ways of working, and other people. Working with new people will invariably teach you new things. Also, your network will grow, which is always helpful if you suddenly have to find another job.
Some people think that the longer they stay in a company, the safer they are. Thus, there is no need to change jobs. On the contrary, they argue that it is better to stay, become more senior and therefore be more valuable to the company. However, any company can run into trouble, or even go bankrupt, which means that many (or all) employees will be let go. Or, the company can decide that all development should be outsourced someplace cheaper. Or a new manager may come in that really doesn’t get along with you, and decides that you will be let go. All of these scenarios mean that you need to stay employable as a form of insurance against these unpredictable events.
Yet another reason for changing jobs is to avoid getting bored. If you have been doing the same things for five years, you are maybe not learning as much anymore. You can do the job comfortably, but there is a risk that you will soon become bored. By changing, you will learn new things and get new challenges. At the same time you will increase your employability.
What about learning new languages and tools on your own, in your spare time. Yes, absolutely. But you will get much better at them if you work with them every day than if you use them for projects in your spare time.
Also, remember that you can change to another role within the same company. For example, a tester that becomes a developer, or a developer that becomes a product manager. Many of the best product managers I have worked with are former developers. Because they know the product well, they are able to steer the development better than somebody from the outside.
In my experience, this is not as common as it should be. It is a great way to broaden your skills. Having people move within the company also benefits the company by sharing knowledge and connections.
In any case, make a conscious decision about what you want to do. Too many people simply stay where they are until they are forced to change. Sometimes when I get in touch with former colleagues, they still work in exactly the same group, doing the same things as they did years ago when we worked together. Not changing is also a choice you make, but in the long run it is bad for your employability.
A traditional way of looking at careers is that you start out as a programmer, but you eventually become a manager, or project leader, or move into sales. For many people, this is exactly what they want, and in all those positions it is beneficial to have been working as a programmer before changing roles. But it doesn’t have to be that way. I have always loved working as a programmer, and I have made an effort to find jobs where I have been able to keep programming, as opposed to moving into other roles. Furthermore, in terms of employability, there are usually a lot more positions for developers than for managers, project leaders etc.
In terms of when to change jobs, I like to think of where you are at a job in four phases:
- Up to speed and enjoying it.
- Wanting to leave.
In phase one and two, you don’t want to change. In phase three it is time to start thinking about changing, and in phase four you are actively looking for something else.
If you get contacted by a recruiter in phase one or two, you will say ‘no’ immediately. But in phase three, you can check what they are proposing. If it looks good it can be worth checking out. There is virtually no down-side here: you already have a job that you still like, so if the job isn’t good, you can just say no. Since they came to you, you have a great negotiating position too.
If you are not contacted by recruiters, phase three is the time to start looking for something else. It is always better to look for a new job before you get desperate. That way, you are not forced to take something that is worse than what you have. Looking for something else doesn’t only mean to look at job ads. If there are companies where you would like to work next, contact them even if they are not advertising. This is where a large network can come in handy too. Check LinkedIn if you know someone working there, and try to go via them.
Besides changing jobs to stay employable and to avoid getting bored, there is also an economic advantage to switching. Studies show that you are more likely to increase your salary if you change jobs than if you stay put. The reason is simple – you have a much better negotiation position if you are changing. If you don’t get the salary you want, you simply won’t take the new job.
Sometimes it may be worth it to change jobs even if the pay isn’t better, if it means that you get to use some new interesting technology, or work on cool projects, or with great people (or all three at the same time). But ideally you should be changing to something “better” (both in terms of pay and tasks) each time you change. This leads to a bit of a dilemma. Every time you change to something better, there are fewer choices to go to from there.
There may be plenty of jobs you could change to, but most will be worse than your current job in some respects. As long as you stay employable, that’s not so bad though. It just means that it may take longer to find your next job.