Nice write up.
I think it would be interesting to differentiate between junior, senior and lead roles and where they can be (like in a developer team), same for mobile, frontend and backend developers.
As well, QA could be split into manual testers, automation testers and QA management.
Another important roles could be agile coaches/scrum master,although seems more a specialization of PM.
In my experience the simpler the layering between dev roles the better. I currently work in a multi tiered environment where we have developers ranging from 1-3, Senior and Leads. The difference between the first 3 roles is tiny if any at all, it's really just a way to mark there experience levels. I find the lead roles have the biggest contrast in responsibilities because i have worked with very active leads, who commit a lot of code and leads who basically act as middle managers and spend most of there time planning and managing expectations.
We’re a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.