title | description |
---|---|
The Artsy Engineering Ladder |
Career development at Artsy |
This documents Artsy's Engineering Ladder. The Engineering Ladder is a framework to help evaluate performance, goals, and compensation for engineers at Artsy. Our ladder was first established and opened in 2015, which you can read more about on our blog.
Since then Artsy has synced up with the Artsy company-wide framework 🔑 for levels and titles and we have added Technical Lead levels to the framework.
This document is open and evolving. We encourage you to submit issues or pull requests to suggest changes and ensure our framework is doing the best it can to help Artsy fairly evaluate compensation and career growth for engineers.
The Engineering Ladder encapsulates two tracks—an individual contributor (IC0–IC5) and manager/executive track (M1–M4–E1–E2). The manager track is available to engineers who have achieved an "IC3 Senior Engineer" level on the individual contributor ladder.
IC0 > IC1 > IC2 > IC3 > IC4 > IC5
M1 > M2 > M3 > M4 > E1 > E2
Individual contributor engineers define a "maker" role at Artsy where a person is responsible for writing code on a regular basis and has no direct reports. As an individual contributor engineer grows at Artsy the scale and impact of the code they write and systems they maintain is expected to increase.
- Has some knowledge of CS concepts.
- Learns to complete well-defined and subdivided tasks.
- Focuses on learning tools and processes.
- Pushes code through the entire lifecycle from development to production.
- Develops individual contributor skills, including source control, editors or test-driven development.
- Has broad knowledge of CS concepts.
- Can complete well-defined and subdivided tasks.
- Focuses on learning tools and processes.
- Routinely pushes code through the entire lifecycle from development to production.
- Continues to develop individual contributor skills, including source control, editors or test-driven development.
- Consistently writes and delivers correct and clean quality code with guidance.
- Self-sufficient and makes steady progress on tasks.
- Knows when to ask for help and how to get unblocked.
- Makes steady, well-paced progress without the need for constant significant feedback from more senior engineers.
- Owns a small-to-medium feature from technical design through completion.
- Provides help and support outside of area under their responsibility.
- Participates in the interviewing process of new team members.
- Owns a service or large technology component.
- Requires minimal direction or oversight, delivers quickly.
- Understands elements of the business that their work supports.
- Understands and makes well-reasoned design decisions and tradeoffs in their area.
- Works in other areas of the codebase with guidance from owners of that system.
- Persistent in the face of roadblocks, dispatches them efficiently, pulling in others as necessary.
- Has end-to-end responsibility on projects of increasing complexity and contributes to code that is shared across projects.
- Mentors junior engineers.
- Demonstrates knowledge of industry trends, infrastructure and systems.
- Owns large scale and impact service or collection of services.
- Understands the Artsy business and makes decisions based on its direction.
- Sought out by other team members for technical guidance.
- Anticipates technical issues at the product level and makes architectural and design decisions to avoid them.
- Recognized as a prolific contributor.
- Multiplies the effectiveness of others by facilitating cross-team work.
- Has track record of creating sweeping improvements in stability, performance, and scalability across services.
- Consistently reduces the complexity of projects, services, and processes in order to get more done with less work.
- Has made an obvious positive impact on the entire company's technical trajectory.
- Sets short to medium-term strategic technical direction.
- Anticipates broad technical change and ensures Artsy is always ahead of the curve.
- Consistently delivers large systems involving one or more teams' contribution.
- Primarily acts as a multiplier by building systems, authoring tools, or introducing policies or patterns.
- Quickly breaks down complex problems into potential solutions, knowns, and unknowns.
- Creates architecture that enables many potential futures without knowing exactly what the future is.
- Leads the conversations internally about the direction of major areas of the technology.
- Identifies technology strategic growth opportunities that enable Artsy to grow as a business.
Every product team at Artsy needs a technical lead. A technical lead is the point person between business, product and engineering for that project. Their responsibilities are to help keep project management up to date, and to keep an eye on the larger picture of the project. This role is well suited to IC who has previous experience with the types of technical work involved. Being a technical lead on a project is a short term role as projects are launched, and wrapped up with some regularity, making a technical lead not a job title.
A manager’s role at Artsy balances few individual contributor responsibilities with more people management responsibilities. As an engineering manager grows at Artsy, any code they write is expected to shift from delivering direct value on project progress to having a multiplying effect by enabling their team to do better work. As such, an Engineering Manager has direct reports and their performance is evaluated by the scale and impact of their team considerably more than the direct impact of the code they write.
- People management is orthogonal to technical leadership.
- People management is a responsibility to develop and support people.
vs
- Technical Leadership is an official role in a project, not a title.
- Technical leadership is a recognition of technical ability.
- Technical leadership is a responsibility to ship software.
- Removes roadblocks by delegating tasks without micromanaging and minimizes the need for their own code.
- Triages bug fixes or distracting work to keep their teammates focused.
- Jumps into critical systems to debug and manage the resolution of timely issues.
- Ensures their team is consistently delivering high quality work with minimal bugs through use of automated testing and other software quality practices.
- Makes educated decisions to introduce new technology that better enables their team. Effectively builds consensus and spreads knowledge of new technologies.
- Team delivers projects in a timely manner and is effective at making tradeoffs to meet deadlines.
- Keeps team motivated with strong retention. Recognizes good work and minimizes tensions around mistakes or poor performance.
- Recruits and hires engineering talent that fills their team’s needs.
- Facilitates constructive collaboration between teammates, stakeholders, and peers in code review, meetings, etc.
- Encourages feedback for themselves and between teammates and peers.
- Makes time to focus team on technical debt and refactoring efforts.
- Sets clear goals with teammates that advance their career growth. Meets with team members regularly to advance them towards their career goals.
- Effectively aligns goals set by engineering directors with their team and makes consistent progress towards them.
- Effective at eliminating roadblocks by delegating ownership and expertise of large projects or codebases and does not make themselves a bottleneck.
- Solves and prevents future bugs or distracting work by managing vendor relationships, implementing support systems, automating processes, etc.—keeping their teammates highly focused.
- Instills confidence in their teammates’ ability to debug critical systems and resolve timely issues.
- Manages a wide range of skill-sets and optimizes for teammates' strengths.
- Innovates on software quality practices setting new standards for their team and impacting Engineering at large.
- Introduces new technology that results in a competitive advantage for, and used widely by, Engineering at large. Empowers teammates to contribute back to these technologies, as well as contributing themselves, through open source or otherwise.
- Team consistently delivers high impact projects in a timely manner which have lasting value.
- Has highly motivated team where successes are celebrated and failures are normalized, and learned from, through blameless post mortems, retrospectives, etc. Facilitates team bonding through team outings like lunches and conference visits.
- Attracts top talent via blog posts, conferences, networking, etc. Effective at building an optimally performing team through a diversity of backgrounds, experience and skillsets.
- Instills a culture of open collaboration and improvement. Leads meetings between stakeholders and peers, advocating for their teammates voice. Navigates tensions between teammates and their peers to maintain positive energy.
- Effectively works with stakeholders to ensure minimal technical debt while maintaining overall velocity on feature delivery.
- Regularly holds teammates accountable for falling behind goals. Provides help and constructive feedback to promptly set teammates back on course. Ensures their teammates meet their goals in a timely manner and always have opportunities to advance.
- Collaborates with engineering directors, CTO, and Leadership to set goals and notices new opportunities to make business impact.
Director engineers define a manager role at Artsy that heavily emphasizes people management responsibilities over writing code on a regular basis. A director's responsibility is to lead process, architecture, and systems that enable many engineers to do their best work. Engineering directors can have a significant amount of individual contributors and/or leads as direct reports, and their performance is evaluated by the scale and impact they enable for their department and its technology.
- TODO
- TODO
- TODO
- TODO