I meant to share this a couple months ago when I first read it. It's an excellent breakdown of some of the differences between software engineer levels and the type of work expected.
As a tangent, Bonnie Eisenman uses the following roles for the various different levels:
I like that Bonnie chose to label the various levels numerically. I prefer to use numeric levels when possible, as it helps to avoid some bias when someone switches to tech late in their career and takes on a "junior" role. Unfortunately there's no real standard for numeric levels.
My preferred labels are along the lines of:
- level 0: intern/co-op
- level 1: junior
- level 2: midlevel
- level 3: senior
- level 4: staff
Anyway, go read Bonnie's post.