Templates
Skill

šŸ›  Mastery (Backend Engineering)

Your Monzo knowledge and technical capability

šŸ›  Mastery (Backend Engineering)

Level 1

  • Learns to write correct Go code, following guidance and training materials

  • Fixes simple bugs or issues

  • Proactive in asking questions, explains what they have tried so far and why that hasnā€™t worked

  • Asks questions and actions feedback from PRs and other engineers

  • Uses git to manage the development workflow effectively E.g. Checkout, Push, Pull, Branch, Diff, Merge, Stash, Rebase, etc.

Level 2

  • Designs simple database tables

  • Implements asynchronous messaging between services

  • Deploys services to staging and production

  • Handles simple error cases in RPC handlers and message consumers

  • Fixes bugs involving a number of services and can investigate production issues

  • Uses appropriate algorithms and data structures to solve problems

  • Implements simple RPC handlers

  • E.g. Basic CRUD handlers, Internal/external API proxies

  • Writes correct Go code following accepted best practices

  • Follows our Coding Conventions & Best Practices, uses language-level primitives correctly

Level 3

  • Uses appropriate design patterns

  • Designs new schemas comprising multiple tables

  • Implements complex asynchronous messaging flows

  • Co-ordinates complex deployments and database migrations

  • Implements distributed systems consisting of multiple interacting services

  • Produces technical designs that include a consideration of scalability

  • Handles complex error cases in RPC handlers and message consumers

  • Debugs production issues

  • Considers metrics when building a new system

  • Writes idiomatic Go code

  • E.g. Follows the guidelines in Effective Go, avoids using patterns that are idiomatic in other languages

  • Mitigates race conditions and partial failure states in distributed systems

  • E.g. Uses locking where appropriate, writes code that is ā€œself-healingā€ when dealing with distributed failure (e.g. data needs to be written in two or more services)

  • Implements complex RPC handlers

  • E.g. Implements complex business logic, orchestrates multi-stage processes, deals with idempotency or distributed data sources

  • Proactively considers security implications of their work

  • Appropriately ties down internal access to resources they're working with (e.g. RPC blacklisting, BigQuery permissions)

  • Evaluates security risks when contributing to proposals

  • Highlights potential security issues when raising and reviewing pull requests - e.g. adding rate limiting in an API, or leaving a code comment to explain why we choose not to

  • "There's a risk here of X, Y but given Z, I think this is OK"

  • Loops in Security when their squad is unsure about something by posting in #security-requests

Level 4

  • Writes code that serves as a definitive example for new engineers

  • Leads the refactoring (de-cruftification) of complex systems

  • Debugs complex production issues at speed

  • Identifies and fixes security vulnerabilities

  • Identifies and fixes performance bottlenecks in individual services

  • Explains all aspects of the platform to new engineers

  • Includes actionable dashboarding as part of a new system

  • Implements services or libraries that require a deep level of domain knowledge

  • E.g. Mastercard message parsing, Credit decisioning, CASS scheduling, Google Pay

  • Makes contributions to library code or core services

  • E.g. Bug fixes, small improvements; things that donā€™t result in a major change in the public API

  • Builds systems that scale reliably without intervention

  • E.g. Services can withstand a yearā€™s worth of growth in load/user base without needing first aid

Level 5

  • Builds systems that serve as definitive examples for new engineers

  • Makes major contributions to library code or core services

  • Contributes to external technologies or libraries that we depend on

  • Develops clear technical solutions from ambiguous requirements

  • Uncovers and fixes tricky bugs that have previously evaded detection

  • Implements security improvements that impact multiple services

  • Implements performance improvements that impact multiple services

  • Demonstrates a deep level of knowledge in a specific area

  • Serves as a technical authority on a technology or an area of the codebase

  • Creates dashboards that broadly impact all engineers

  • Produces clear technical designs for large complex projects

  • E.g. Outbound and Inbound MasterCard clearing proposals

Level 6

  • Makes major contributions to technologies and libraries that we depend on

  • Makes improvements to the stability, performance or security of the entire platform

  • Serves as a technical authority in the wider engineering community

Build your own framework for free