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