First, let me give you a tongue-in-cheek response. If you are thinking this question often, probably it’s time :)
The average tenure of software engineers in the company is between 2 and 3 years. If you think about it, it’s an incredibly short period. The company spends a lot of resources to find good candidates, interview them, hire and train them, and get them up to speed. And all of this to repeat this process in two years. It’s immensely valuable (for the company) to have people who know the code, know the process, know the context, and deliver based on that. So the obvious question is, why do people leave companies?
There are apparently several broad categories (Here are just a couple of article which talk about it first and second):
- Bad office politics
- Bad fit within a company or team culture
- Bad managers
- Lack of motivation
- No career advancement
My second answer would be, if you check off more than one of these items, I think it’s a good idea to look around.
Several notes before you decided to pull the plug.
A couple of standard recommendations (especially for less experienced software engineers):
- Don’t burn bridges (if you leave, do it nicely and gracefully)
- Don’t change jobs too often (2–3 years tenure is average, but if you switch jobs each year, that it’s a red flag)
And multiple comments about the list above (with the list of reasons to leave). A couple of these items mentioned above are truly intractable. If you work in a company with bad politics or you are not a good fit for company culture, you can’t do anything about it. It’s much cheaper to cut losses early vs. trying to grind it out for questionable benefits.
People don’t leave bad companies they leave bad bosses.
The next couple of things on the list (bad managers, lack of motivation, and overwork) could still be hard to solve, but at least you have some tools. (BTW. Often these three come hand-in-hand). Having a bad manager is one of the leading causes of people leaving, and it’s very emotionally charged. If you can rationally handle that, I would recommend trying to switch teams first. This is often not trivial to do but gives you (and a company another chance).
And finally, the last on this list is no career advancement and money. These two are the most tractable problems.
I truly believe that you should strive to create so much value for a company that you are in a position to twist the company’s arm. To give you an example. I moved to the US about fifteen years ago and had a work visa back then. I was able to negotiate over the next 1.5 years to increase my salary by 60%. I did that from a perceivably weak position of being on a temporary work visa. However, taking into account the amount of value I created, there were happy to accommodate my ask. BTW. You don’t have “exchange” created value for a higher salary. You can choose to get into interesting projects, better work-life balance, and so on.
And summarizing all of that. First, it’s definitely a good idea to change jobs when problematic things are absolutely intractable. Second, try to move within the company if you just hit some roadblock. And finally, produce a lot of value and negotiate everything else.
P.S. You probably noticed that I left behind questions about “I want to work on this new shiny technology.” If you are really junior, yeah, this is a factor for your employability, and you should probably take it into account. However, if you are a bit more senior, I hope you realize that new shiny technology doesn’t always convert to better work experience or even better technical results.