How I view the roles and responsibilities of various software developer titles

January 20, 2017

Junior / Associate Developer:
1. Bang your head against the wall long enough to know what questions to ask
2. Take direction
3. Try things harder than you think you can take on, fail sometimes.
4. Know when you’ve failed
5. Move from team to team with considerable friction
6. Demo new features and bug fixes
7. Produce simple solutions to simple or complicated problems

1. Make decisions unsupervised
2. Understand code organization
3. Hunt down defects
4. Improve code quality
5. Break down stories into concrete and estimable tasks
6. Understand end user perspective for the product
7. Move from team to team with downtime
8. Present in-depth case studies on feature work within the team
9. Understand when complexity is necessary

Senior Developer:
1. Understand sections of the code in-depth
2. Refactor Aggressively
3. Make large scale design decisions
4. Break epics into valuable and testable stories
5. Understand long term vision
6. General understanding of business requirements driving product
7. Work with other teams to discover cross-product code reuse
8. Move from team to team with some downtime
9. Mentor Junior Developers
10. Prepare and present trainings to other teams
11. Understand when to simplify

Principal/Lead Developer:
1. Set long term vision
2. Understand entire code-base
3. Work with other teams to inform architecture
4. Mentor Senior Developers
5. General understanding of other code-bases in the organization
6. Understand business requirements driving product in depth and general understanding for other products
7. Move from team to team with little to no downtime
8. Prepare and present trainings to cross-team groups (guilds, interns, etc)
9. Understand and document areas of Technical Debt and propose solutions
10. Understand complexity budget for a single product and allocate accordingly

Senior Principal/Lead Developer:
1. Act at a Principal level across multiple products
2. Take part in deciding company-wide architectural vision
3. Move from team to team seamlessly
4. Prepare and present company-wide trainings
5. Understand business requirements for a given product vertical
6. Suggest the complexity budget for multiple products

Comments are closed.