an acceptable Junior Software Engineer... uses tools to make properly formatted code
produces readable code, mostly self-documenting
becomes a 'goto person' on code after spending 2 total weeks in it.
rarely goes 3 days without obvious progress or output to the sprint team
is comfortable making estimates about new work
is comfortable re-using existing patterns for new work, even in unfamiliar code
can explain the 'why' of processes and rules, and be able to see situations where they may not apply
understands agile development and participates effectively
----------------
a Senior Software Engineer... is also a Software Engineer with everything that comes with it
is a team representative of code, projects, and end-users
has a running list of 5 things the team or the team's code is weak in, and could be doing better
considers edge cases well, writes bulletproof code
understands integration points with other teams and projects
reliably resolves tickets in team's estimated timeframe.
does code reviews and design reviews that are kind and instructive
is able to refactor code to improve maintainability without being too aggressive and causing additional problems
is able to help any other dev with problems in any of the team's code
is capable of teaching a new employee about all of the team's code, projects, and end-users
brings innovative ideas back to the team from reading, experimentation, and conversations in addition to normal work
is a student of agile development and can effectively coach and mentor others in agile development
maintains good relationships among cross-functional team members
can boldly estimate very low or very high for new work, keen prediction for the very easy and very hard
can sense CPU, memory, and computation time problems in code invents new patterns and solutions rather than always using existing patterns
sees the give and take in processes and rules, uses them as a tool for guidance not to be followed rigidly 100% if not best for the company
understands feelings and history about codebases and projects, not just the immediately apparent facts
is not just extremely knowledgeable, but also with passion and proper application and improvisation of concepts
an acceptable Junior Software Engineer... uses tools to make properly formatted code
produces readable code, mostly self-documenting
becomes a 'goto person' on code after spending 2 total weeks in it.
rarely goes 3 days without obvious progress or output to the sprint team
is comfortable making estimates about new work
is comfortable re-using existing patterns for new work, even in unfamiliar code
can explain the 'why' of processes and rules, and be able to see situations where they may not apply
understands agile development and participates effectively
----------------
a Senior Software Engineer... is also a Software Engineer with everything that comes with it
is a team representative of code, projects, and end-users
has a running list of 5 things the team or the team's code is weak in, and could be doing better
considers edge cases well, writes bulletproof code
understands integration points with other teams and projects
reliably resolves tickets in team's estimated timeframe.
does code reviews and design reviews that are kind and instructive
is able to refactor code to improve maintainability without being too aggressive and causing additional problems
is able to help any other dev with problems in any of the team's code
is capable of teaching a new employee about all of the team's code, projects, and end-users
brings innovative ideas back to the team from reading, experimentation, and conversations in addition to normal work
is a student of agile development and can effectively coach and mentor others in agile development
maintains good relationships among cross-functional team members
can boldly estimate very low or very high for new work, keen prediction for the very easy and very hard
can sense CPU, memory, and computation time problems in code invents new patterns and solutions rather than always using existing patterns
sees the give and take in processes and rules, uses them as a tool for guidance not to be followed rigidly 100% if not best for the company
understands feelings and history about codebases and projects, not just the immediately apparent facts
is not just extremely knowledgeable, but also with passion and proper application and improvisation of concepts