The nature of work in technology is that most of us will have multiple jobs in our careers. A few lucky ones might stick with one company for a long time, but I don't meet that many people who have worked for one employer for over a decade. I have, which is still surprising to me, and I hope I continue to do so for another decade, however, that's a rarity.
For employers, this means regular work to find, evaluate, and hire new staff. That's apart from the training time and resources required to ensure someone becomes productive in their new role. Employers find hiring to be expensive, and many would like to retain as much of their staff as they can. I know many don't really follow through on actions that retain staff, but most want to keep people.
How can you do that? And really, what percentage of people do you want to keep around? It's easy to say everyone, but is that what you want? This post talks about how to keep your best programmers, as well as some of the potential issues with long term employees. There's a link to this post, which discusses the dead-sea effect, or the tendency of very mediocre staff to remain at a job for a long time.
Most of us don't work for companies doing exciting and cutting edge work. Managing ride share data at scale, as Uber does, or dealing with the streaming data scales that can be exciting in some financial firms, or even building cool products that the world is talking about at Apple. That doesn't imply that we don't do useful or interesting work, but the first post about keeping engineers notes that they need to be excited and interested in the work. Sure, free coffee and perks matter, salary is important, but not being bored, and not being frustrated by others is key. I know I've left jobs when I wanted to be more stimulated.
That's not always the case, and certainly some people settle into jobs and continue to do great work for years. Some people are happy to do a job very well and get their stimulation, their drive and purpose, outside of work. Finding them, and keeping them is hard.
Retaining staff is hard, and I do think it takes some work. I also think it can be important to let some staff go over time. Paying superstars more and more, or letting them dictate their own work isn't a good long term solution. Keeping someone around because it's easy may not be good as well. There's a balance to be struck here.
We don't want the stacked ranking and constant competition some companies have used, and we don't want to just treat people as disposable, replaceable resources. Good management should work to retain people, develop programs to ensure we can hire and train people well, admit bad decisions and let people go if they aren't working out, and also allow superstars to move on when it's a good fit for them to do so.
My view of this is that we want a diverse set of people, looking at problems from different perspectives, but working well together to share knowledge, inspire each other, and hold each other accountable. We want a matrix more than a hierarchy, and we look to embrace their drive and keep them around as long as we feel there are lots of mutual benefits.