Sitemap

A Brief Explanation of Developer roles

sergio
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.

--

--

sergio
sergio

Written by sergio

rubyist, smalltalk dork, entrepreneur, music dork, cooking/food dork, travel dork. just plain dork!

No responses yet