Software Engineer (SE)
Note: as one progresses along a career path, one should possess and show all qualities of levels below.
Years of Experience: 3-5
Knowledge & Technical Skill
Able to own small- to medium-sized features from technical design through completion, making well-reasoned design decisions and trade-offs
Is gaining knowledge of best practices in coding standards, core architecture, documentation, automated testing, debugging
Comfortable designing data structures and schemas
Experienced with automated testing (unit, integration) and contributes to test coverage for primary platform(s) managed by team
Able to debug and solve problems in own code or other's code, with support or guidance
Self-sufficient in at least one large area of the codebase with a high level understanding of other components in the system
Developing expertise in a core language and / or technology, and gaining awareness of others (eg, frontend, messaging, infrastructure, etc)
Impact & Output
Fully understands the business cases and functional / non-functional (e.g., performance, security, accessibility) requirements supported by team's owned features. Demonstrates awareness of business value by proposing new features or approaches
Is gaining experience in breaking down tasks, planning, and cutting unnecessary scope to maximize business value and minimize technical risk and debt within a reasonable timeframe
Able to effectively estimate work
Capable of prioritizing tasks and makes progress without significant feedback from more senior engineers
Requires detailed guidance to solve complex or new types of assignments
Communication
Clearly and effectively communicates with colleagues (across all mediums: PRs, Slack, email, in-person/video chat, etc)
Can clearly communicate technical information in a non-technical manner
Confidently lead conversations and meetings across teams to support the work as needed
Anticipates what might be needed by colleagues
Gives timely, helpful feedback to peers and offers guidance in PRs
Asks productive questions to thoroughly understand requirements / user stories
Can identify contradictory requirements and suggest resolutions
Creates clear and concise sets of documentation around projects worked on for technical and non-technical audiences
Knows when to ask for help in order to get themselves unblocked and avoids getting caught up in unimportant details
Resolves conflict effectively
Leadership
Comfortable with sharing knowledge with other engineers (for example, via blog posts, lunchtime brown-bag sessions, etc)
Can conceive of and implement significant improvements to the codebase
Proactively extracts insights and trends from day-to-day work, and communicates those trends in a clear and concise
Can manage and support software engineer intern(s)
Last updated