Templates
Skill

🛠 Mastery (Web Engineering)

Your Monzo knowledge and technical capability

🛠 Mastery (Web Engineering)

Level 1

  • Learns to write semantic HTML and CSS following guidance and training materials

  • Learns to write correct JavaScript following guidance and training materials

  • Uses Chrome, React, and Redux DevTools effectively to increase productivity during development and debugging

  • Implements simple components

  • Fixes simple bugs

  • Asks questions and actions feedback from mentor

  • Uses git to manage the development workflow effectively

  • Checkout, Push, Pull, Branch, Diff, Merge, Stash, Rebase, etc.

Level 2

  • Writes semantic HTML and CSS following accepted best practices

  • Uses appropriate algorithms and data structures to solve problems

  • Writes Flow types to statically type-check the code at compile-time

  • Writes automated unit and end-to-end tests following accepted best practices

  • Deploys web services into staging and production following our deployment guidelines

  • Assists on the design of new features and components

  • Solves well-defined tasks within our current developer abstractions

  • Integrates with backend APIs and handles successful and failed responses properly

  • Works with users to improve new and existing simple features iteratively

  • Uses a keyboard and screen-reader to manually test their application for accessibility issues

  • Runs automated auditing tools such as Lighthouse before submitting a PR for review

  • Demonstrates awareness of a range of security considerations, and mitigates against them

  • Has multiple examples of where performance was considered as part of a solution

  • Applies fundamental UX and accessibility principles to common problems such as form design

  • Referencing (and improving) existing Design Systems where possible

  • Writes correct JavaScript code following accepted best practices

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

  • Implements simple components following accepted best practices

  • Follows React Development Conventions & Best Practices; uses component state and lifecycle methods correctly

  • Uses shared libraries to reuse existing functionality

  • E.g. lib.money, lib.api, lib.identity-verification, etc.

Level 3

  • Uses appropriate design patterns to solve problems

  • Identifies obvious deficiencies in the development processes and supports activities to improve them

  • Assists more experienced engineers on the design of larger features

  • Modifies and improves code outside of the developer abstractions and reasons about the improvements effectively

  • Fixes bugs in asynchronous code

  • Debugs production issues

  • Explains developer abstractions and how to contribute to them to other engineers

  • Collaborates with designers and user researchers to create prototypes and to evaluate them

  • Differentiates between user needs and desires and prioritises accordingly

  • Implements non-trivial components

  • Uses modern CSS features like flex-box, grid, media-queries, selectors, etc

  • Uses advanced component patterns higher-order components, render props, controlled components, compound components

  • Writes effective asynchronous code

  • Demonstrates solid understanding of the JavaScript runtime; reasons effectively about the runtime behaviour of asynchronous code; uses async/await, generators and Redux-Saga’s to implement asynchronous code

  • Writes effective JavaScript by applying fundamental functional and reactive principles and techniques where appropriate and guides others in so doing

  • Uses uses event streams, immutable data structures, pure functions, functional composition, memoization, etc.

  • Considers metrics when developing, and uses appropriate services to check quality levels

  • A range, from services such as Lighthouse, WebPageTest, WAVE etc

Level 4

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

  • Makes contributions to library code or other core parts of the applications

  • Makes contributions to our development tools and build processes

  • Writes complex asynchronous and concurrent code

  • Identifies optimisation opportunities in the development process and contributes to the implementation of proposed solutions

  • Builds maintainable and flexible components and applications

  • Leads the refactoring of complex parts of the system

  • Debugs and fixes complex issues at speed

  • Identifies and fixes security weaknesses

  • Identifies and fixes performance bottlenecks in applications

  • Explains all aspects of the web platform to new engineers

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

  • Puts users first and can manage competing priorities effectively

Level 5

  • Makes major contributions to library code or core parts of the application

  • Contributes to external technologies or libraries that we depend on

  • Anticipates platform and project needs, technical debt and common issues intuitively

  • Develops clear technical solutions from ambiguous requirements

  • Produces technical designs for large complex projects

  • Demonstrates a deep level of knowledge in a specific area

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

  • Reviews technical designs and pull requests for large complex projects

  • Encourages and supports other engineers to achieve outstanding results

  • Creates major contributions to our documentation, and creates documents that provide guidelines and best practices to other engineers

  • Works with technical and non-technical stakeholders to identify high-level requirements and turns them into discrete technical concerns

Level 6

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

  • Uses a risk-based approach and manages technical debt systematically to focus the team’s design and development efforts on the most important problems

  • Works with business and technology stakeholder to translate difficult business problems into technical designs, thereby ensuring that the organisation derives maximum value from services

  • Identifies architecturally significant functional and non-functional requirements, identifies conflicts among them, and defines possible trade-offs scenarios

  • Articulates high-level technical goals, concerns, trade-offs, and decisions to the rest of the company effectively

  • Facilitates technical decision making in complex and ambiguous situations

  • Promotes architectural thinking and good engineering practices at scale

  • Makes improvements that affect important non-functional requirements that have an effect on the entire web-platform

  • Serves as a technical authority in the wider engineering community

  • Identifies and explores opportunities for service and business improvement

Build your own framework for free