11 minute read
Updated:

Adam Gordon Bell
Let’s talk about a career in tech, but not the usual boring stuff about salary or how to pass the interview process at the place with the most oversized comp packages. Instead, let’s talk about how your relationship to how the company accomplishes its goals influences what your job is like and what skills and strengths you’ll develop there.
A Simplified World
Imagine a simplified world where there is only enterprise software and only two broad types of software jobs.
( What is enterprise software? It’s large, bland software for large corporations. My story will also apply to other areas but bear with me here. )
Ok, so only enterprise software exists, and so you can work at two types of companies. First, you could work at a large company, where you build and maintain their internal billing software. Second, you could work outside the large company selling software and development services to them.
You can either work at Duke Energy (a large utility company) or Thoughtworks (a consulting company). But in either case, by some coincidence of made-up-anecdotes, you’ll write billing software for a utility company.
These jobs may sound similar. Some even argue that an internal dev team and external dev team are the same:
If you are a dev team within a bigger, non-tech company, you are basically an in-house agency with one client.
The Coding Career Handbook
After all, at both Thoughtworks and Duke Energy, you’ll work for a utility company. You’ll work to understand the current system’s gaps and develop a solution for them. But there are significant differences between these jobs: One is a line position, and the other is a staff position.
Line and Staff Software Engineers
The division of employees into line and staff comes from the military1. 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.
The term spread from the military to business schools, where it became a helpful way to group employees into categories:
Staff and line are names given to different types of functions in organizations. A “line function” directly advances an organization in its core work. This always includes production and sales. A “staff function” supports the organization with specialized advisory and support functions. For example, human resources, accounting, public relations and the legal department are generally considered to be staff functions.
Wikipedia makes the roles sound innate to the profession: accountants are always staff. But it depends on where the accountant works. An accountant at an accounting firm is a line employee. And so it goes for software developers: you can be either, and which you are will determine a lot about the pace of your job and the career trajectories you are on.
Understand the difference, and it will help you structure your career.
Line Has Higher Stakes
Back to our example, the dev team members at Duke Electric are staff developers. The billing software supports Duke Electric. The electricity is the product, not the billing software. However, the stakes are different for the team at Thoughtworks, even if working on similar billing software at a similarly sized region utility company (Dominion Energy, maybe).
Someone at Thoughtworks sold Dominion Energy on the idea that Thoughtworks could do a great job on the billing software, and they are going to charge a lot for this work. If things go well, th