Job Levels in Software Engineering
Engineering managers need a simple definition of responsibilities of software engineers for every job level. They need this for their own understanding when hiring, promoting, and even coaching engineers in their team. This also helps them articulate high level expectations to engineers during goal setting and performance evaluation.
I found this definition on Twitter by Zain Rizvi as the most concise and comprehensible articulation by far:
- Junior engineer: Take this tightly defined feature & build it.
- Mid-level engineer: Take this vaguely defined feature & build it.
- Senior engineer: Take this known problem & figure out how to solve it.
- Staff engineer: Take this goal & find the problems we should be solving.