Senior Software Engineer (SSE)
Note: as one progresses along a career path, one should possess and show all qualities of levels below.
Years of Experience: 5+
Knowledge & Technical Skill
Understands the broad architecture of the entire system
Designs and implements subsystems of the software architecture that can scale and be reliable with minimal technical oversight
Has knowledge of best practices: coding standards, architecture, testing, validation, data recovery; sets the standard for quality, scalability, and maintainability
Understands/Can setup, manage and monitor application and infrastructure/build (i.e., deployment pipeline, logging, application monitoring and alerts, rollbacks, code quality checks)
Able to help others in their debugging / problem solving, or debug complex problems on own
Familiar/Comfortable with more than one area of the codebase
Has a track record of improving stability, performance, monitoring, and scalability across services
Has mastered several technologies which allows for evaluation/selection from new and known approaches to successfully implement projects of moderate complexity
Impact & Output
Understands the tradeoffs between technical, analytical, and product needs and leads in solutions that take all of these needs into account. Uses this knowledge to influence task prioritization
Possesses empathy with the user of the software they are producing and uses that empathy to guide decision making
Shows initiative by identifying and suggesting areas of future work for themselves and their team. Seeks evidence to support ideas and builds cases for these ideas, coordinating with others on cross-cutting technical issues
Scopes and stages work into well-defined milestones to avoid a monolithic deliverable and regularly delivers software on time
Identifies and proactively tackles technical debt before it grows into debt that requires significant up-front work to resolve
Handles open-ended problems & ambiguity well
Provides technical advice and weighs in on technical decisions that impact other teams or the company at large
Consistently reduces the complexity of projects, services, and processes in order to get more done with less work
Communication
Tailors communications to audience and can comfortably explain our technology in layman’s terms
Clearly communicates timeline, scope and technical concerns
Serves as proactive and efficient conduit for knowledge sharing across Product & Engineering
Makes others better through code reviews, documentation, technical guidance, and mentoring
Regular consults with other developers on architecture, best practices, and documentation
Proactively identifies problems with requirements (lack of clarity, inconsistencies, technical limitations) for their own and adjacent work, and communicates these issues early to help course-correct
Solicits feedback from others and is eager to find ways to improve. This includes seeking out opposing opinions to one's own, and regularly challenging what one knows and understands
Leadership
Regularly contributes to DoSomething's presence in the technology community, through speaking engagements, blogging or industry meetups
Has a mentor relationship with other engineers. This is broadly defined as serving as an effective listener, giving constructive criticism often, and acting as a champion for others in order to facilitate growth. Knowledge sharing happens often via pairing, design review, code reviews, and presentations
Comfortable doing R&D in new technologies & techniques
Builds relationships with people both inside and outside of the organization
Contributes to a framework or development practice. Has enough experience here to have a point of view, can argue for systemic improvements, and influences how we work and what we work on
Drives decisions in meetings and situations where opinions may differ
Self-aware of strengths and weaknesses; Intentional about career and growth
Last updated