Keywords: distributed system architectures, networked services, technical analysis, prototyping(?), high-quality functional specifications, consensus, short-term solutions and long-term implications, and pragmatic solutions.
You have industry-leading technical abilities. You demonstrate a breadth and depth of knowledge in the following disciplines:
- You recognize and adopt best practices in software engineering: design, testing, version control, documentation, build, deployment, and operations.
- You write high quality, maintainable, and robust code, often in Java or C++.
- You solve problems at their root, stepping back to understand the broader context.
- You develop pragmatic solutions. You build flexible systems without over-engineering and choose simple, straightforward solutions over more complex ones.
- You understand a broad range of data structures and algorithms and know how, when and when not to use them.
- You recognize and use design patterns to solve business problems.
- You understand how operating systems work, perform and scale.
You build software for the business' sake, not for the technology's sake. To this end, you have the following characteristics:
- You have an understanding and empathy for the company's customers and business objectives, particularly those aspects relevant to your team and your division (where "division" is however far up you need to go in your organization to include about 150 people).
- You continually align your work with the company's business objectives and seek to deliver business value.
You work in a team, driving things forward and exhibiting the following characteristics:
- You collaborate to ensure that decisions are based on the merit of the proposal, not the proposer. When none of the proposals is the obvious winner, you are still decisive and commit to the team’s decision.
- You continue to move forward in the face of ambiguity and imperfect knowledge. You do not suffer from “analysis paralysis”.
- You build good working relationships within the team and with others across the company
- You proactively support knowledge-sharing within the team and across your division.
- You communicate clearly both verbally and in writing with your team and with other groups. You listen effectively.
- You help recruit the very best people for the company through active participation in the overall recruiting process.
- You embrace the company's SDE and leadership principles
An SDE II exhibits all of the characteristics of the company's SDE. This role description summarizes what is expected of you as an SDE II, and outlines the capabilities that you must demonstrate to progress to the SDE III level.
You are a significant contributor to your team and to your department. You solve complex and broad business problems with simple and straightforward solutions, applying appropriate technologies and software engineering best practices. You build solutions that scale and perform. You do things properly and thoroughly the first time and you improve your systems with each iteration. Your team trusts your work. You are considered knowledgeable in certain key areas by others on your team, and they look to you for assistance in those areas. You participate fully and constructively in the planning of your team’s work. You help to evolve your team’s practices, constantly looking for improvements. You work with relevant personnel across the company on project issues, and you seek to share knowledge across the company's developer community. When confronted with discordant views, you foster constructive dialogue and seek resolutions in a professional way.
You will be considered for promotion if you have consistently demonstrated the following:
- Your technical knowledge is broad and deep, typically ranging from front-end UIs through to back-end systems and all points in between. You have deep hands-on expertise with many disparate technologies.
- Your knowledge of the company's business and infrastructure is sought out by others in your division.
- You have played a leading role in the implementation and deployment of a successful enterprise-level system.
- You have good knowledge of the work done by other teams within your department and proactively help other teams.
- You think in terms not just of code but of architecture, and you communicate your ideas effectively to others within your division.
- You influence and drive software engineering best practices within your division.
- You influence your team’s technical and business strategy by making insightful contributions to the team’s priorities and approach. You make a significant contribution to team planning.
- You get a lot done. You work very efficiently and routinely deliver the right things.
- You harmonize discordant views, find the best way forward and convince your team.
- You demonstrate resilience and navigate difficult situations with composure and tact.
- You actively mentor more junior members of the team, improving their skills, their knowledge of our systems, and their ability to get things done.