To chime in with my own anecdotal opinion that is likely to anger some people... in my experience most developers do their best work after about 6-8 months of starting a job at a new company, and that comes to an end after about 24-36 months of working at the same company. After that the vast majority of people just stagnate, get complacent, the job stops being interesting to them and they move on. After observing th…
I think many people come into a job for a specific project(s) during which there is a ramp up period of understanding the requirements, limitations, team, how the company works, getting to know people (6-8 months).
Then after working on that project, delivering it, iterating on it, tuning it, working through potential production support issues and some scaling items...in many cases the vast majority of the work is done (2-3 years).
At that point, a few things happen because this developer is ready for a new project or new challenge, as are most of the people who were involved with that project.
Their options are:
- Find a new project at the company and restart the learning period as they transition in a potentially lateral move. If this happens, it's unlikely the company is going to give them a sudden compensation boost when in the eyes of management they're continuing to do their existing job.
- Seek training related to some advanced problem that they solved to become the company's expert on the subject, in which case the company will likely pay for the training but not a subsequent boost in compensation (because in their eyes...they just paid for the training)
- See how well they have marketed themselves to find out if the company has recognized their talent to promote them into a higher level position with an equivalent pay bump or potentially managing a team. The only problems is that you can only promote so many people, so this person will be the exception and not the rule.
- Update their resume with the newly acquired skills and have somebody else pay them market rates to start a new project at a different company, using their current job as leverage to get a significant bump in compensation. Meanwhile, you'll be paying new market rates to hire the replacement.
It's no secret why people often just jump jobs. You've finished one project and you're going to transition to a new one anyway, getting a fresh start can be a good choice. Additionally, no matter how much people like their situation in one job they will end up building up frustrations with certain people and/or management over time. As long as those people are still around, it will increase their likelyhood of leaving.
But ultimately, you're looking at the likely timing of concluding one project and then exploring options for what's next. IMO, that coincides with your timeline.