Let me start with a couple of considerations: this article doesn't aim at any particular company. It is a collection of previous experiences and things I've heard (and seen) from friends and coworkers.
Also, the post focuses mainly on software development jobs and mid-to-large-sized tech companies (although they apply to others). Many of which —especially the big ones— don't seem to have adapted significantly to the "new normal" of the pandemic and remote working.
Here are some helpful tips if you want to kill morale and get rid of your most valuable employees.
Have a poor Return To Office (RTO) strategy
The COVID-19 pandemic has hit the world hard. Most people have been working remotely for the past two years. Still, most big companies are very much alive and kicking, and many of them with record results!
Companies have had two years to prepare an RTO strategy, but now that the time is coming to go back to the office, most seem to have done poorly planning it. Pushing through dates and delays and more delays without a clear plan or any health concerns for the employees is not good. And what's worse, many don't even offer a remote option as a possibility.
Remote work works, and most employees love it: even many people who used to hate it have embraced it now! Remote work gives them freedom and flexibility that they couldn't dream of before. And yet, it's not an option for many companies, mainly due to managers' and executives' need for control and micromanagement. The company may have many mediocre managers and just a few individual contributors.
Pay low salaries with record results
This point doesn't even have to do with the pandemic; it is something that applied before, applies now, and will apply in the future too. The pandemic just made it more "obvious."
Let me say it clearly: if your company has record-breaking benefits, but your base pay is below the market median, your company's economy may be excellent, but its soul is rotten to the core. Your company values and principles are a lie, your environment is toxic, and you deserve nothing but public scorn and reprimands.
These will result in losing your most talented developers to other companies that will care more for their people —even when they may not care that much more. Just a little bit will do. Because it's not about the pay, which may be a significant factor, it's about feeling appreciated as an employee and a person.
Reduce the number of internal promotions
Bring people from the outside for leadership positions without considering the talented pool of employees inside. Or give "fake promotions" to employees to keep them calm while other people go up. This behavior creates a toxic work environment driven by nepotism and office politics.
Talent, strong independent leadership communications, and appropriate recognition and staffing are, among other things, what should drive a healthy work environment. The only business where it is reasonable to see many family members and long-time friends together is a mom-and-pop family business. A multimillion-dollar company? Red flag.
If you are an employee and see a company where all the managers, senior leaders, etc., come from the outside instead of internal promotion or have many lateral moves sold as promotions (e.g., change between technical-management ladder). Then, run! You will not have a clear growth path in that company. Of course, there will be internal promotions, but soon you will notice that most promoted people are not who you expected to see going up. Or they are the stereotypical brown-nosed employees. Frustration will take over you sooner than later.
Become the Big Brother
A terrible thing that happened over the pandemic was the need of some companies to track that employees were working remotely (because it seems like delivering their commitments on time was not enough proof of that for some people.)
Many ended up adding (more) software to spy on the employees: what sites they browse, what keys they press, how much time the computer is idle... A side effect of these policies is the performance impact on the employees' machines. Slower computers, continuous VPN issues, laptops struggling to run simple commands... even on state-of-the-art machines.
I've seen the latest MacBook Pro struggling with a simple copy-paste because it had to go through numerous detections and filters before it happened. Now imagine running builds or tests on that computer. Work that could be done in seconds now takes minutes. Managers and executives will feel empowered with more information, but it costs the company time. And time is money (especially developers' time.)
Extend the time needed to replace computers
This claim may sound petty, but it is a reality: development machines get old fast. And with the measures taken on the previous point, they get old even faster. So what better announcement than saying that instead of waiting for 2-3 years to change laptop, now you'll have to wait 5-6 years?
Considering the current tenure among software developers (changing jobs seems the norm after 2-4 years), most employees will never see a second laptop at your company. And one of the reasons for leaving may be having a painfully slow machine.
A fast computer impacts productivity. And being productive makes employees feel better about their work and themselves. Delaying the proper tools for a person to do their job will only add frustration and drive people away.
Set unrealistic timelines
Being late for a project is not something out of the ordinary. It could happen for many reasons, and most of them are not a sign of something terrible. The problem is when it becomes a habit.
Continuous aggressive timelines that lead to always being late are a sign of poor planning and bad management. And they will impact negatively on the employees' morale: they create churn and burnout, and soon a negative feeling will possess the employees.
Developers may put up with it once, maybe twice. After that, they will start dropping like flies. The company will lose whole teams (and the corporate and product knowledge associated with them) when all it needs to do is to train or replace a single person in the group.
Many of these points apply to companies outside of tech and to positions other than software developers, but it feels like they are becoming more pervasive in the IT industry.
Unfortunately for employees (and luckily for companies), many of these points are only visible after you are inside the company. Candidates can ask questions during the interview that will shed some light on them, but it would be easy to dodge the questions (red flag) or just flat lie about them (again, not possible to determine until inside, but an even bigger flag once learned.)
If you are an employee, be on the lookout for this type of behavior. If you are a company... please, please, please: avoid them at all costs.