Skip to content

Latest commit

 

History

History
31 lines (25 loc) · 10.1 KB

titles-for-programmers.md

File metadata and controls

31 lines (25 loc) · 10.1 KB

Titles for Programmers

Programming Management

On Web and SIP programming teams, Lead Programmers (L4) and Principal Programmers (L5) act as tech leads to Junior - Senior Programmers (L1-3). All Leads and Principals report directly to our CTO. Tech leads are responsible for:

  • Reviewing a report's substantial PRs before they're shipped.
  • Having a kick-off conversation with a report on every substantial project.
  • Reviewing a report's on-call work and handoff after every shift.
  • Providing People Ops with the key input to annual performance reviews.
  • Identifying and escalating slips in performance or process to People Ops.

A tech lead on the SIP team also acts as SIP Coordinator. They're responsible for setting cycle priorities, liaising with other project teams, and maintaining general oversight of team resources.

Our Mobile programming teams (iOS and Android) have 1 manager overseeing both teams who is responsible for technical leadership and people management.

Individual Contributor Expectations

Category Junior Programmer (L1) Programmer (L2) Senior Programmer (L3) Lead Programmer (L4) Principal Programmer (L5)
Skill
Mastery Proficient in basic language and framework features, but some advanced structures or features may still be unfamiliar. Occasional issues following patterns and approaches within existing code bases. Follows established patterns and approaches within existing code bases with ease. Writes code that is considered high quality by colleagues. Effectively and artfully applies domain design skills in normal course of work. Capable of devising new patterns and conventions within existing code bases and in greenfield development. Code remains accurate, reliable, and maintainable even when faced with challenging or complicated problems. Acts as a subject matter expert on multiple systems. Makes strategic decisions around major components. Invents new concepts, creates new systems, pushes the whole organization or industry forward regularly.
Scope Capable of working on tightly-scoped, routine problems. Capable of working on clearly defined and scoped individual features or problems. Capable of taking substantial features from concept to shipping as the sole programmer (alongside a designer on the product side). Capable of owning and running entire subsystems of work (Queenbee expert, Action Cable implementation). Strong track record of introducing significant improvements in system quality, performance, or scalability. Can set the strategic direction of an entire discipline, such as security, web or mobile. Consistently works on projects with high complexity. Would be the go-to person for advice on the most technically challenging problems.
Judgment Demonstrates curiosity in their craft, prioritizes their own development to better serve their team. Researches what's been done in the past and why, attempts to solve problems independently. Proactively identifies and resolves problems, improves areas of the code they work on, and leaves things in better shape than they found them. Pays attention to detail. Has accumulated sufficient experience to be consistently sought by peers, across multiple teams, for advice. Improves existing professional standards for the team. Has the experience, trust and respect to operate at the tech lead level. Defines professional standards. Is sought for advice across disciplines. Is seen as a leader across teams, technically and culturally. Capable of setting and directing across an entire discipline, such as SIP, Web or Mobile. Is known company-wide as a go-to expert for advice on critical work across disciplines.
Tooling Has a rudimentary understanding of our tools (AppSignal, Buildkite, Kibana, Dash, Trek, Post Office etc). Uses our most common tools in day to day work to help diagnose issues, optimize performance. Demonstrates a comprehensive understanding of all our tools. Uses them regularly to diagnose issues quickly and calmly, even under pressure. An expert in our tools. Extends and improves them over time. Can identify where tooling should be improved and oversee implementation. Invents novel tools with strategic impact. Can objectively rationalise whether to build or buy, balancing tradeoffs with business strategy in mind.
Engagement
Ownership Participates in programmer on-call rotation under guidance from more senior programmers, but delivering simpler resolutions end-to-end. Participates in programmer on-call shifts with guidance from a more senior team member. Capable of handling or triaging production issues across multiple systems with minimal assistance. Can be relied upon to lead the resolution of bugs or minor incidents related to their work or area of expertise. Can recognize and raise major incidents and lead the response from inception to resolution. Can lead the resolution of any engineering problem in their discipline. Is a significant technical contributor to problem resolution; demonstrates consistent maturity in communication and demeanor under stress. Fully capable of leading the most critical production incidents to successful resolution, coordinating company-wide responses and advising on public communications.
Communication Proactively communicates what they are working on, attempts to unblock themselves but asks for help when needed. Questions mostly don't repeat. Presents pull requests that demonstrates competency with our patterns and principles, but may require oversight from senior peers. Questions to more senior coworkers are thoroughly researched and presented before posed. Trusted to provide actionable feedback across team pull requests in line with our principles that requires little or no oversight. Provides technical advice and suggestions during planning/scoping. Provides critical, actionable feedback on pull requests which ensures quality and consistency is upheld across the team. Demonstrates project management best practices. Ensures leadership is informed on team progress. Writes Heartbeats and Kickoffs. Demonstrates long-term strategic thinking, working with leadership to communicate our engineering vision across teams and disciplines.
Planning Prioritizes daily work against team/project needs with regular guidance. Demonstrates good time management. Prioritizes tasks and project work with little direction. Works confidently and effectively, persists when faced with uncertainty or ambiguity but pulls in support when needed. Identifies judo opportunities. Contributes more broadly to cycle planning within the team. Requires no direction to effectively manage their time, finds valuable and productive tasks to work on without prodding, and helps steer cycle planning. Identifies judo opportunities in their own work and for others. Fosters collaboration across teams. Can plan entire cycles for a team. Can drive the agenda, hammer scope, offer critical insight from extensive experience. Regularly challenges their team or discipline to help drive projects forward, to better deliver on team/discipline priorities. Capable of running and directing larger teams for multiple cycles, and for large, long-running projects. Elevates team and company standards through developing new tooling, processes, procedures, and highly effective communication. Carries out research, testing, implementation and improvement for new systems. Pushes the whole organization forward regularly through implementing new systems and designs.
Trust Work is thoroughly reviewed with substantial back and forth frequently needed before merging. Reads pull requests. Makes minor contributions to the improvement of system documentation. Work is reviewed with some back and forth and the occasional need for material direction or implementation changes. Trusted to review non-critical pull requests to clarify style, readability, performance issues. Makes material contributions to documentation: features, procedures, runbooks. Work doesn’t necessarily need to be reviewed, but general approach may be. Trusted to review critical or full-batch pull requests, course- corrects when required. Provides context and clarity to the engineering organization by producing and maintaining documentation / runbooks / pitches. Major projects can be completed independently and shipped without review. Provides developing oversight to senior, mid, and juniors. Expected to review complex and high-impact pull requests across teams. Defines and maintains departmental standards by developing processes and procedures, writing style guides, recording internal screencasts. Entire systems can be designed, developed, and shipped without the need for review. Provides developing oversight to everyone else in organization. Expected to review system architecture across multiple product suites to oversee work is produced to the highest technical standards. A leader in ensuring robust and effective best practices are understood and followed across the engineering organization.
Coachability
Feedback Observes and learns from the work and behavior of others. Receives constructive feedback with a growth mindset. Receives constructive feedback with a growth mindset. Provides specific, well-considered feedback within area of expertise, when asked. Is able to disagree and commit. Can provide specific, material, constructive feedback on the work of junior-mid programmers that deepens their knowledge across broad areas. Is able to disagree and commit. Is a formal mentor to programmers, providing specific, material, constructive feedback on work. Capable of being a technical lead on small teams. Consistently sought by colleagues for assistance with critical work or decisions. Is able to disagree and commit. Is a formal mentor to programmers, providing specific, material, constructive feedback on work. Defines engineering-wide standards and guidance. Fully capable of leading teams of any size over an entire discipline. Consistently sought by colleagues across the organization for assistance with critical work or decisions. Is able to disagree and commit.