A Brief Explanation of Developer roles
2 min readOct 22, 2020
I was asked by my employer to give a quick synopsis of what constitutes a senior developer so we could provide a pathway for advancement. This was my first draft at such a thing, but I thought someone would find it useful.
Senior Developer
- Writes clean code that conveys intent.
- Has the ability to extract classical algorithmic problems from everyday business requirements.
- Inserts meaningful and clear comments when necessary.
- Communicates with project managers in a timely manner. Effectively communicates product statuses and strives to provide meaningful time estimates.
- Mentors junior developers to help them progress in their skill and knowledge.
- Has a solid understanding of design patterns, and uses them effectively.
- Has a solid understanding of algorithms and data structures. Applies this knowledge and helps others to understand these principles.
- Is acquainted with current technologies and practices. Understands where these ideas would be a good fit in their current problem space.
- Actively uses automated testing as a part of their development process.
- Actively strives to automate tedious day to day processes.
- Can architect and lead a mid-sized project effectively.
- Continuously strives to learn new skills and polish current skills.
- Has the ability to match technical solutions with business needs.
- Has expert level knowledge in their IDE/Text editor.
- Has intermediate-level knowledge of Linux.
- Has a solid grasp of the business requirements of the current project.
- Checks in only clean and well factored code.
- Can plan (create agendas) and execute meetings to aid project managers.
- Knows when to stop and ask for help, and who on the team to ask.
Junior Developer
- Has a good grasp of the syntax and conventions of the language/framework in which they are working.
- Is steadily working on mastering design patterns. Can explain a few of them.
- Has a good overview knowledge of databases and can use them in their daily work.
- Consistently works to improve their Linux skill-set.
- Is working to increase knowledge in algorithms and data structures.
- Is working on understanding the importance of meaningful tests. Understands how to use testing to save time and effort and produce a more reliable product.
- Efficiently uses IDEs and text editors.
- Can use source code management effectively.
- Can take guidance from a coworker to take a data design to fruition.
- Is actively learning how to write code “in the spirit of” the current language/framework.
Originally published at http://github.com.