One aspect of engineering roles that in my opinion is underappreciated by newer recruiters is how different one type of company is from another.
For example - a "Senior Engineer" role at a startup will be a lot more heads down programming than a "Senior Engineer" role at a large fortune 500 company. And different things can be said for contracting, consulting, and agency work. The job of an engineer at all of these types of organizations can vary widely.
I'll also note why I think engineers can burn out at each of these types of companies.
Generally at a big company the day-to-day pace of life is slower for software engineers. You tend to be working on larger projects that need to integrate into the context of existing systems.
It can take a long time to fully understand a problem or get in the right room with the right people to ask the right question in order to get something done. These environments can end up being a lot more social and political in nature if you are trying to make changes.
Alternatively, what I've seen happen a lot at big companies is engineers will end up doing 100% maintenance work on a long running existing system. The job becomes more about monitoring systems, responding to alerts, staring at logs, analyzing graphs and tracking down strange error messages. This can be easy or it can be hard depending on how well run the company is.
There are a lot of reasons: politics, bad bosses, stagnant pay, lack of promotions, plain old boredom.
Working at a small startup is in many ways the opposite of a big company engineering role. You might be heads-down writing code a lot more, and building large features because you don't have to worry about how it will interact with legacy systems.
Or, if your application has launched to the public and your company is aggressively growing you are dealing with scaling issues, obsessively monitoring issues.
There is little room for politicking, if something is broken the CEO will be sending you DMs about it and the C-levels will probably be pitching in and fixing things themselves. This can be refreshing, but it's often exhausting to engineers unless they are very interested in what they are doing.
I like to advise new developers to work at a small startup for a little while early in their careers - they will learn a LOT very quickly and it's often the best way to level up when you are just starting out.
Note: I currently work at an early stage startup and it's a lot of fun, but I chose it because of the interesting space they are in. I knew it would be a ton of work.
Usually it's just plain old burnout from the exhausting pace of the work. It's also common to see small startups simply run out of money and fail to achieve product market fit.
Large startups feel more like a hybrid between a small startup and big fortune 500 company. You probably won't get as much facetime with the CEOs, (a lot of 1000 person companies are a few years old and considered "startups").
Once a startup gets really large a lot of the work will be focused on scaling up the infrastructure, cleaning up shortcuts that were taken as a smaller company. Dealing with technical debt. Expanding into new markets and launching new features.
The work runs the gamut and it can be anywhere from boring maintenance work to working on releasing the high profile new features customers really are asking for.
A lot of early people leave these large startups when the company culture changes to become more serious and corporate. That's pretty much unavoidable.
Another reason you will see people leave is if something happens related to IPO or a buyout. People will cash out and leave.
Otherwise a lot of the other same reasons can apply that people burn out of a big company.
There are a lot of companies that hire "employees" that simply go sit and work for another employer (the client) for 6 months to a year at a time. After about a year these companies will shuffle them around to another client so the client does not have to classify these people as proper employees.
A lot of these jobs are basically a regulatory arbitrage or trying to spread the employee relationship risk to someone else. Sometimes it's just a convenient way to quickly hire engineers. Usually the client will try to "poach" the people they like even if their contract says they can't.
As an engineer in these jobs you usually feel a bit like a second-class citizen but there are some benefits too. Sometimes the pay can better than actual employees get. A lot of times you get to avoid the whole "employee review" process charade. You also might be able to try out a few different places while maintaining job history and relationship with a single employer (the consulting company can just shuffle you to another client).
There are a lot of reasons. A lot of times it's hard to feel that the work is meaningful or you are really invested in the success of the outcome. People that need that will often not do well in these roles.
Sometimes the consulting company sticks an employee at a bad client and won't let them leave. Sometimes they get stuck on a project they hate. In my experience the turnover in these kinds of jobs is pretty high and everyone knows and expects that.
Agencies have a model that is usually project based. This kind of work is where a company is actually completing projects for a client but they are not leasing out their employees wholesale. It's not just a charade to not have to officially "hire" employees. This is usually piecemeal project contract work where there is a scope of work and the agency is trying to ship a specific contracted product to their client.
Agencies can be really fun and fast paced. They are also a great early career place to work because of how many different projects you can get to work on. In my experience, unless the agency is hyper-focused on a single niche, jack-of-all-trades types do best here.
You can have the same kind of dynamics as a small startup if the agency is small, but there is not the same huge growth upside potential. On the other hand, there is usually not the same downside potential as long as the agency can keep it's work pipeline full. Pay can be all over the map depending on what kind of agency it is and how well run it is.
Often times the work can be exhausting. There also may not be a lot of career growth potential depending on the goals of the agency's owners.
All of these types of companies can be very different work environments, it feel like night and day going from one to another for an engineer.
It's important to speak with candidates about the type of company the role you are filling is for. It's hard to predict if a given engineer wants a change or likes the kind of environment they are currently in.