• Stars
    star
    291
  • Rank 142,563 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The Monzo Progression Framework site, built with Gatsby.

Monzo favicon

Progression at Monzo

πŸŽ‰ Welcome to the Progression at Monzo repository

This is where all of Monzo's progression frameworks live, as well as the site that powers progression.monzo.com πŸ’ͺ

Get stuck? There's a glossary at the bottom of this readme!

🀯 Where am I?

Welcome to GitHub!

GitHub is an online service that we use to store our code, designs, and more. GitHub allows us to manage these files closely, allowing us to track file edits, new file creations, etc. This also means multiple people can work on the same file at the same time! It's pretty neat.

We mainly use GitHub in Engineering, as it allows engineers to review each others code, making sure we have a tidy codebase and (hopefully!) stopping some bugs from crawling through the cracks πŸ›

We're using GitHub to store our progression frameworks for a few reasons:

  • It's public (or open source), meaning we can share this with the community and allow them to contribute!
  • Monzonauts can "own" or manage a framework (or frameworks), meaning they get to control any changes or additions in that area
  • It means we can build a super fast site πŸš€

❔ How does this work?

This is the structure of our repo

progression-framework/
    frameworks/
    src/
    CODEOWNERS
    [a bunch of config files]

site contains our website files, frameworks contains our progression framework files, and CODEOWNERS is the file that defines who owns or manages a framework, file or folder. All the other files are configuration, which you should totally ignore πŸ‘Œ

The frameworks folder is what you want to pay attention to!

This is where all of our progression frameworks live. Head inside, and you'll see folders associated to headlines (like design and engineering).

Inside these folders, you'll see files representing a job (like designer.md).


Files that end in .md are called Markdown files. We display these files on the site in the same way they are written, so you can put whatever you want (within reason) in these.

All of these file contain some YAML, which a data format that is similar to a bullet point list. Some of this YAML data is compulsory, as it helps the site build πŸ› οΈ

Some files contain the compulsory YAML and the rest is Markdown, however some of these files only contain YAML. The files containing only YAML are more structured, and so look a bit different to the Markdown files.

The following YAML data can be found in every file:

path:         ~~ a path goes here, eg "/frameworks/operations/ops-leadership" ~~
title:        ~~ the page title goes here, eg "🎯 Ops Leadership Framework" ~~
sidebarTitle: ~~ this is the title in the sidebar "🎯 Leadership" ~~
sidebarGroup: ~~ this is the subheading/group. eg "operations" or nothing ~~
yaml:         ~~ indicates if the framework is mainly yaml (true) or markdown (false) ~~
levels:       ~~ the amount of levels you want to be shown if the file is yaml, eg 6 or nothing ~~
homepage:     ~~ card-based frameworks only! whether you want a homepage to be shown, eg true, false, or nothing if irrelevant ~~

If the framework is in YAML format, underneath the compulsory data, you will find something like this:

homepage: true
topics:
  - name: "communication and teamwork"
    title: "πŸ’¬ Communication and Teamwork"
    content:
      - level: 1
        criteria:
          - "Clearly articulates what they’re working on and why."
          - "Gives clear concise updates in team meeting and stand ups on material which is relevant for the team"
      - level: 2
        criteria:
          - "Proactively communicates with stakeholders and tailors communication to audience. Keeps stakeholders like COps, legal, marketing, finance updated on progress and ensures they have what they need."
          - "Gives clear concise updates in cross-team meetings on material which is relevant for the teams"
  - name: "conduct"
    title:
    content:
      - level: 1
        criteria:
          - "Follows policies and procedures applicable to role. Completes training."
          - "Accepts feedback graciously and acts on it. Gives feedback when requested"
          - "Builds relationships within monzo and contributes to building a supportive, knowledgable and engaged peer group"
        exampleCriteria:
          -  criteria: "A criteria with an example point goes here"
             examples:
               - "The example goes here"
               - "Another example may go here"
---
### 🏠 Welcome to the Backend engineering home page

If a topic's name matches the name of a topic in the generic framework, the generic framework criteria will be loaded as well as your framework criteria, and the title + description will be loaded from the generic framework. If you have a custom topic, you must define a title and description. You can see this in the example above, with both the custom "communication and teamwork" topic and the generic "conduct" topic.

For each topic, you must define its contents. This is made up of an object (starts with a bullet point) which contains the criteria, and the level it is associated with. You can also add examples, by putting them in the exampleCriteria object, defining the actual criteria point, and any examples it links to.


If you need any help and are a Monzonaut, ping @lucas a message or put a message in #org-scaling. Otherwise, feel free to raise an issue here in GitHub.

✏️ How do I edit a framework?

Firstly, go to the framework file on this site. Click on the ✏️ icon in the top bar, and make your edits in the text editor that appears.

To save or 'commit' your changes, add an overview title and a basic description of what you've changed. You'll see that the option "Create a new branch for this commit and start a pull request" is pre-selected for you.

This will automatically save your changes and open a pull request, allowing the person who manages that framework to comment on your suggestion, decline the suggestion, or approve and merge it to make it live.

Glossary

Repository (Repo): A folder in GitHub where files live

If you've seen the word 'repo', we're probably talking about the Progression Framework folder in GitHub that you're on right now (https://github.com/monzo/progression-framework)

Pull Request (PR): A request to change a file, or multiple files on GitHub

This will be part of how a framework is changed or created. Normally, someone will 'review' this request (make sure it's good to go live)

Squash and Merge (Merge): Taking new or modified files, and putting them live

This is what will happen after somebody has a successful review on their pull request. It'll take the modified files, and put them into the "master" version of the repo, which is what's on our site

πŸ€“ Looking for technical documentation?

Take a look at the readme in the src/ directory (https://github.com/monzo/progression-framework/blob/master/src/README.md)

More Repositories

1

response

Monzo's real-time incident response and reporting tool ⚑️
JavaScript
1,460
star
2

typhon

A wrapper around Go's net/http to provide safety and convenience. At Monzo, Typhon forms the basis of most clients and servers in our microservices platform.
Go
713
star
3

phosphor

Distributed System Tracing in Go
Go
375
star
4

egress-operator

A Kubernetes operator to produce egress gateway Envoy pods and control access to them with network policies
Go
233
star
5

envoy-preflight

A wrapper for applications to help with running envoy as a sidecar
Go
134
star
6

docs

Public API documentation
SCSS
101
star
7

calico-accountant

A Prometheus exporter for Calico policy packet counts
Go
87
star
8

terrors

Go
71
star
9

ddbt

Dom's Data Build Tool
Go
70
star
10

file-cleaner

JavaScript
64
star
11

etcd3-terraform

A Terraform recipe for a robust etcd cluster, based on how Monzo runs its clusters. πŸ’ͺ
HCL
46
star
12

slog

Structured logging
Go
46
star
13

mondo-ruby

Ruby Client
Ruby
45
star
14

reference-receipts-app

A simple Monzo third party API client for demonstrating the new Receipts API.
Python
19
star
15

web-exercise

Take-home exercise for web engineer hiring πŸš€
11
star
16

kotlin-synthetics-migrator

An Intellij Plugin for migrating an Android app from Kotlin Synthetics to findById
Kotlin
10
star
17

kontrast

Go
10
star
18

phosphord

Trace Forwarding Daemon
Go
9
star
19

phosphor-go

Go client for Phosphor
Go
7
star
20

vault-plugin-database-k8s-controller

A fork of Vault's database credential plugin allowing the use of annotations on service accounts as parameters in statements
Go
7
star
21

etcd3-bootstrap

Bootstraps an etcd3 cluster node
Go
6
star
22

drbd9_exporter

Exports status and metrics of DRBD 9.0 volumes
Go
6
star
23

code-of-conduct

The Monzo Community Code of Conduct
5
star
24

verifiedsms

A go library for interacting with Google Verified SMS
Go
3
star
25

file-score

JavaScript
3
star
26

web-code-test-server

Server for the frontend web dev code test in our interview process
JavaScript
2
star
27

gosquared

A golang gosquared client
Go
2
star
28

Judo-Swift

Judo Swift SDK for Swift 2.0/Xcode 7
Swift
2
star
29

guepacket

GUE (Generic UDP Encapsulation) layer for gopacket πŸ“¦
Go
2
star
30

CHCSVParser

Objective-C
1
star
31

libPhoneNumber-iOS

Objective-C
1
star