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