I work as a software engineer at Stripe. Recently, my new manager and I had a discussion about the different “levels” of software engineers, and how one can use a coffee shop analogy to understand the responsibilities of the different levels. I thought the analogy was pretty good, so I’m sharing the sketch of it here.
An entry-level software engineer’s responsibility is to complete pre-defined tasks.
In the coffee shop analogy, this would look like:
In the next level, an engineer begins to manage entire projects and systems, instead of individual tasks. In the analogy:
The tasks begin to become more ambiguous, requiring the engineer to think more about what specific things need to be done. This is a trend that generally holds: higher levels, more ambiguity.
At this level, an engineer begins to think more on the level of the entire team, rather than one specific project. Projects often are of such large scope that multiple engineers work on them. Thus, a senior engineer’s responsibilities often take on more of a managerial flavor.
In the analogy, this is like managing an entire coffee shop:
The jump from senior to staff is a big one. In the analogy, it’s like going from one coffee shop to an entire chain of coffee shops.
Now you have to think about relationships that are even larger and vaguer.
The analogy starts to break down as the levels keep growing. Or rather, the higher levels begin to get less and less well-defined. This is probably because there are fewer and fewer people at these higher levels. Sometimes entire levels are invented for particular people.