Adam Gordon Bell has an interesting blog post that explores the differences between what he calls line position versus staff position in software engineering.
The division of employees into line and staff comes from the military. A line officer can fight on the front line, and in doing so, they directly contribute to the core mission. On the other hand, a staff officer contributes only support. They are the doctors, IT people, and administrators.
Basically you are in a line position if your work as a software engineer advances the companies core mission, for example you are working on iOS at Apple or OIDC at Auth0. You are in a staff position if your work supports the organization, for example you are customizing ERP for Walmart. This should not be confused with the staff software engineer title.
In one of my earlier jobs, I was developing software for a university library. A staff position in what was itself a staff department of the university. I have also spent a few years at Google as as a software engineer. So I have first hand experience from both types of positions.
The article covers some of the advantages of each type of role but it’s missing at least one: The organization’s attitude toward productivity for your function. A healthy organization spares no effort or cost to make its line positions' function more efficient and make the most out of each of its workers in those positions. Every improvement in their productivity can directly be translated to delivering the core mission. On the other hand, the productivity of the staff position work is usually a second order concern. It matters but at a much lower priority.
The first time I experienced Google Tech Stop it was a revelation. What do you mean I can just grab any equipment from here? 24/7 IT support!? Also our management at Google would often remind us that if we needed something for work we should just purchase it without asking for permission first. Now contrast this with my position at the library where core functions of our work were wrapped up in an unholy amount of red tape. What do you mean you need a server to deploy? Access to what? Need a new keyboard… fill this paper form to be reviewed at next month’s planning? Not only that, but also attempts improving the processes was rarely seen as valuable or worthwhile.
Not all organizations treat their staff positions this way but if you are someone who cares deeply about your productivity and effectiveness at work this is something to pay close attention when evaluating an organization culture before accepting a staff position there.