A | B | C | D | E | F | G | H | |
---|---|---|---|---|---|---|---|---|
1 | Technical Track | |||||||
2 | IC1 Software Engineer | IC2 Software Engineer | IC3 Software Engineer | IC4 Software Engineer | IC5 Lead Software Engineer | IC6 Staff Software Engineer | IC7 Principal Software Engineer | |
3 | Impact | Impact via code I deliver production ready code with direction and support from my team. I work with my Product Manager & Designer to prioritise tasks that have the greatest impact for our customers. I ask questions and raise concerns. I make good mistakes and learn from them. I'm focused on learning as much as possible to grow my impact. | Impact via reliable and maintainable software I can execute on projects and help my squad achieve our goals. I can independently plan work for a ticket, clarify acceptance criteria, subtask work, and deliver functionally complete tickets. I can identify work that delivers the most value for our customers and business within a project and prioritise my time appropriately I can identify delivery risks and raise them with PM/EM/Project lead as appropriate | Impact via leading projects I can plan a project, working with Product & Design to maximise value for our customers and the business I can identify when a solution may not provide value for our customers, and will work with Product on an alternative solution. I keep things simple, reliable, and maintainable, reducing cost and complexity for the business and my team. I raise timeline risks for my projects as early as possible, ensuring there are no surprises | Impact via squad I work with Product & Design to ensure my squad is solving the most valuable problems for our customers. I find technical solutions or process improvements that increases the impact of others in my squad. I find solutions or improvements that increase the impact of others beyond engineering. I have a deep understanding of our customer and our business context, enabling me to find the most valuable solution to open ended or ambiguous problems. | Impact across squads, within a vertical I can work with squad leads to maximise the impact of multiple squads, on behalf of our customers and the business. I lead multi-squad product or platform goals by looking at the bigger picture and then gaining alignment. I mentor squad leads, increasing their impact within their squads. I proactively detect and correct when teams or projects are going off course. | Impact across verticals I can leverage relationships and context across the business to find and execute new opportunities for customer/business value. I can deliver a strategic business objective across multiple verticals. I can increase the impact of entire disciplines, e.g. improving the efficiency of all engineers working on frontend. | Impact across verticals, multiple objectives I can deliver against multiple strategic business objectives across multiple product verticals. I can lead multiple teams in tackling the most complicated problems in the business. I can create new organisation-wide innovations and capabilities that significantly increase our ability to deliver customer value. |
4 | Growth | Coachable and curious I frequently ask questions to maximise my rate of learning I embrace and act on feedback from my manager and peers I proactively seek to understand my strengths, weaknesses and blindspots I drive discussions with my manager about my professional development | Grows others (individuals) I proactively ask for feedback from my manager, team, and cross-functional stakeholders. I can support others on my team through effective and empathic mentoring. Instead of introducing code others cannot understand, I level up my team through teaching and coaching. I have an awareness of other people's skills, strengths, and working styles. I use this to work effectively with other engineers. | Grows others (team) I hold a high standard for excellence amongst my team. I identify areas of improvement for my squad and work with my Engineering Manager to close those gaps. I offer honest, constructive, direct, and actionable feedback that is delivered with empathy to help others learn and grow. | Contributes to systems of organisational growth I invest time into coaching and mentoring other engineers, especially IC3s and IC4s. I make time to spread my knowledge via talks, blog posts, L&D exercises, and written documentation. I help steer the growth of the company by participating in the hiring process for senior candidates. | I help the company attract engineering/product/design talent | ||
5 | Culture | I write and speak with clarity and focus I listen to understand others and ask clarifying questions I proactively share relevant information, including difficult task-level tradeoffs that impact customer experience, with my manager and team I work with my manager to engage in productive conflict with thoughtful questioning and have the courage to state my point of view I listen to different perspectives and I remove biases from my words and actions I contribute to a positive sense of community on my team | I avoid blaming others, I clarify problems to focus on solutions, and "disagree and commit" when necessary to move decisions forward I champion remote working practices that help my team collaborate effectively. I present demoes showcasing the impact of engineering work to cross-functional stakeholders. | I build relationships across teams and help achieve positive outcomes. I proactively communicate and coordinate my team's requirements with other squads and teams. I can work with cross-functional stakeholders to identify technical blindspots and clarify ambiguity in their ideas I help foster effective communication across the team I tailor my message to my audience, presenting it clearly and concisely and at the right level of technical detail I proactively share information so my manager, team, and stakeholders are aligned. If there is a significant issue not being addressed, I initiative a crucial conversation, even when uncomfortable. | I build relationships and drive coordination across teams & disciplines, to achieve positive outcomes. I effectively work with cross-functional stakeholders to identify technical blindspots and clarify ambiguity in their ideas. I enable others to bring their authentic selves to work, and contribute to building community at SKUTOPIA. I influence stakeholders across a variety of audiences, including outside of my squad and outside of tech. I act as a partner to my manager in setting the cultural tone for the team. I support an environment of psychological safety where all skutopians are included, and dissenting opinions are heard, valued, and addressed. I help my team develop relationships across SKUTOPIA. I proactively raise concerns with my Product and Design counterparts, and with relevant stakeholders throughout the business. | I break down silos within and across the business, helping others align on the best outcome for SKUTOPIA. I build deep relationships across the entirety of SKUTOPIA. I help squads build relationships beyond their squad. I point out when actions or decisions contradict our company values and suggest alternatives. I leverage my fluency in SKUTOPIA's business, products, customers, and strategy to identify opportunities where my team can help SKUTOPIA meet its business objectives. I can explain how SKUTOPIA's strategy and business priorities inform and guide my/team's priorities. | I develop compelling, clear, and focused messages; effectively presenting them at the executive level. I can effectively communicate SKUTOPIA's company wide vision, strategy, and objectives, connecting my/team's work to them. | |
6 | Craft | I translate ideas into clear code, written to be read as well as executed. I participate in code reviews and raise questions to help me learn the codebases and technologies relevant to my work. My code is free of glaring errors; bugs are in edge cases or solution design, rather than happy paths. My code is well documented, has automated test coverage, and has been thoroughly manually tested by me. I can read and navigate a large codebase that I didn't write. I am learning to use the tools to improve my efficiency, including debuggers, IDE features such as automated linting, inline testing, code refactoring macros, etc. | I actively engage and reconcile different opinions in code reviews, and follow best practices established by others. I can effectively debug others' code. I ship high quality code to production on a consistent basis. I can understand existing software design and technology choices within my area, and I make appropriate adjustments when necessary. My code exhibits good separation of concerns, functions operate at a single level of abstraction, and all of my variables and functions have intention revealing names making my code self documenting. | I write code that captures the essential nature of the solution and is appropriately flexible, reusable, efficient, and adaptable to changing requirements. I ensure high code quality in code reviews. I set up best practices, coding standards, and help resolve differences of opinion to foster an effective and collaborative code review culture. I have a strong awareness of the ecosystem of tools and libraries supporting Nodejs/React/Typescript, it's development environment, and a strong grasp of the idioms and patterns. I build/improve tooling and produce technical documentation to improve developer efficiency and drive alignment within my team. I look for ways to reduce future toil and tech debt. I proactively identify technical dependencies my project has on other teams and surface them. I can communicate how system operation metrics -- e.g. response time, apdex, error rates, throughput, latency, and queue depth -- affect business outcomes. I use this knowledge to help stakeholders set appropriate non-functional requirements for my projects and ensure my projects deliver on these non-functional requirements. I write clear and crisp ADRs using technical writing techniques to communicate the decisions, trade offs, context, and outcomes/consequences considered. | I look for ways to simplify code and infrastructure. I prioritise tasks that lower system and infrastructure maintenance costs with meaningful and measurable impact. I find ways to improve developer efficiency, e.g. speeding up feedback loops, lowering friction, or reducing cognitive load. I preemptively identify and resolve technical risks before they jeopardise a project. I resolve cross-team dependencies earlier to ensure project success. I am responsible for the overall design of software systems in my squad and ensure they meet their design objectives. I give quality feedback on designs created by members of my squad, asking probing, insightful questions that solidify choices and surface assumptions. I'm able to create coherent designs with multiple components interacting across system boundaries. I'm capable of rolling out a component or major feature or deprecation, including appropriate monitoring and alerting are in place, and the failure modes are understood before rollout to the STABLE release channel. I work with my Quality peers to ensure major releases have been appropriately tested. I partner with cross-functional stakeholders to ensure my squad's SLOs are clear and coherent. These SLOs give my stakeholders confidence in the system's capability to serve our customers. I'm responsible for alignment of my squad's software to overall technical strategy, making tradeoffs where appropriate after consulting staff engineers. | I design software components that are difficult to misuse yet flexibly support additional use cases as appropriate (not under nor over-designed). I reduce complex designs and concepts to simple foundational components through correct choices of data structures, applications of algorithms, or other deep insights into the problem space. I'm able to review designs and ADRs in related areas with high quality and ensure quality for cross-squad, cross-vertical design issues. I make correct technology choices for components needed as part of a larger architecture, including making build vs buy choices for specific components and choosing frameworks. I'm capable of owning the overall health and engineering quality of a system or collection of features, and ensuring that the health and maintenance of my systems do not depend on the maintainers having my expertise. I work with my Quality peer to drive overall testing strategy across the vertical with high reliability and quality requirements. I work with squads to ensure their SLOs paint a coherent picture of overall system reliability for my vertical. I'm accountable for aligning squads in my vertical with overall technical strategy. | I can design systems that require research on what is possible rather than relying on past experience, and where a significant portion of the challenge is designing an appropriately staged validation plan. I define the high level systems we need to build to meet strategic objectives. I am responsible for making technical choices that have no single clearly correct answer and whose consequences have a sweeping effect across the organisation. I rally people around those choices by providing a clear rationale and technical vision backing them. | |
7 | Engineering Management Track | |||||||
8 | Optional IC5+ Management Responsibilities | Engineering Manager | Senior Engineering Manager | Head of Engineering | ||||
10 | Growth | Any IC5 and above may choose to adopt management responsibilities for up to two IC1s. They must then devise and execute a plan to help these engineers progress to IC2. This provides a way for engineers on the technical track to try their hand at management. | Facilitates learning Can plan and organise conference attendance, training, brings in experts to run workshops, ensures teams have time and support to work through the L&D program | Coaches Managers Can provide coaching, advice, and resources to other managers Especially helps new managers develop the systems, habits, and practices they need to manage effectively | Manages execution of learning & development programs Ensures L&D programs are being worked on, that engineering managers are ensuring their engineers have time to work on their professional devellopment. | |||
11 | Management | Manages 7 - 14 engineers Can run effective 1 on 1s, tracks career growth, puts together career development plans, clearly articulates requirements for promotion and provides opportunities to meet those requirements, runs skills radars to identify skills gaps in teams and feeds that information to tech leads for training support and head of engineering for hiring to fill skills gaps. Runs remuneration reviews, performance manages when needed, expectations management | Manages managers Can coach other managers, identify skills gaps, create systems for aligning teams, and ensure that the engineering department is working effectively Can setup the resources, systems, and processes managers need, for example creating career roadmap templates and a collection of resources for managers to develop these career roadmaps with their direct reports | |||||
12 | Craft | Deeply competent, low - moderately hands-on 80% management, 20% coding An engineering manager's primary concern is management. They wont pick up tickets in a sprint, because their focus must be the needs of the team, however they must be very technically competent in order to effectively manage, grow team members, and earn their respect. The engineering manager's primary means of getting hands-on should be via pair programming, such that every time they touch the code, they're teaching. Occasionally, an Engineering Manager should submit a pull request with some refactoring or minor improvements, so that they have first hand experience of the code base and deployment process. | Deeply competent, occasionally hands on 95% management, 5% coding Head of engineering will rarely get to touch the code, but they should get their hands dirty from time to time to stay in touch with their teams A challenge in this role is staying up to speed technically while having little time to write code. Professional development time will need to address this | |||||
13 | Financial | Monitors expenditure, learning budgets Can approve expenses Can track team expenses Can execute on an L&D program within a budget, i.e. training, shared resources, conferences, etc | Manages engineering budgets Can track expenses for engineering team, including setting budgets for engineering managers, approving procurement of new services, etc Can assist in vendor management and price negotiations |