• Stars
    star
    133
  • Rank 272,600 (Top 6 %)
  • Language
  • License
    Creative Commons ...
  • Created almost 6 years ago
  • Updated about 3 years ago

Reviews

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

Repository Details

Skyscanner's Engineering Principles

Our Engineering Principles

As a company we have done well to embrace the principles of Agile and the Lean Start-Up; we have applied them to the way in which we validate learnings related to our products - we iterate, we improve, we measure and, where necessary, we change course. In the context of engineering as a craft, we don't always explicitly apply the same mindset. We should strive to learn, improve and ultimately deliver better quality products in shorter durations.

The principles below give us the framework to call out what we believe are the foundational elements that ground us, allow us to improve and allow us to iterate and grow. Autonomy without alignment and accountability is chaos; the principles strengthen the aspects related to alignment and accountability.

There is an emphasis on improving our ability and speed to deliver customer value in production responsibly - while we must focus on improving metrics and the availability of metrics, we must always do so with an awareness of how and where our work is delivering increased value. https://medium.com/@SkyscannerEng/why-engineering-principles-matter-993298f7d792

We have a clear definition of success for every piece of work

Every task, however granular, needs to be performed with a clear outcome in mind - company, goal, epic, story, task, feature etc. As we commit, we are specific and unambiguous and we should be able to articulate both why we are doing something and when we will be done. The definition includes "done" - see below.

We ship multiple times a day and deliver customer value week in, week out.

We deliver tangible outcomes regularly and sustainably. We embrace lean principles and fast iterations. We bias towards getting value into the hands of our customers quickly. We have the ability to ship multiple times a day, ensuring we can move fast.

We use design reviews to validate every significant change

Collectively as a squad, tribe or organisation we have a pool of expertise that we should capitalise on. Design reviews are a platform to share, learn, feed back and ultimately deliver better products. They result in an improved technical design and operability using learning and best practice from others.

We deliver our products using our defined technology standards

As our engineering team grows, we need to have the right level of consistency and standardisation. We express our opinions in what we choose to use, ensuring we can then build robust tooling to help support us at scale. This supports multiple facets; internal open source, developer onboarding, service ownership, freedom of movement, rotations and day-to-day operations to name a few. We focus on our customersโ€™ problems over repeatedly making technological decisions, which in turn improves our time to production.

We peer review every change

Peer review supports delivery of high-quality changes. It can prevent outages and malfunctions caused by bugs, improves aspects of the code such as reducing tech debt and promotes design consistency, learning and knowledge sharing. Peer review results in a wider level of knowledge within the team in question. Internal services that impact our ability to support our external customers are considered production.

We cover all changes with automated tests, responsibly

Having extensive test coverage finds defects early and allows us to safely and effectively deliver changes in our code base at scale, something that would not be possible without automation. We also have a code base that, by virtue of the tests, is self documented. We need to balance the dangers of speed with automation coverage to deliver responsibly. As we ship code we should preserve or improve this coverage.

Our definitions of done include being live in production... responsibly

Customer impact is only realised when our target delivery environment is customer facing (usually production). We optimise our tools, processes and planning for this delivery model. We want to remain accountable for delivering an uninterrupted experience to our customers.

You build it, you run it

To achieve World Class Engineering at Scale, we have moved towards an operating model of you build it, you run it. This fosters a sense of ownership among teams who ultimately either run, or responsibly transfer ownership. It should also ensure there is a high degree of accountability for every service/product and that we do right by the traveller/customer.

We own and are responsible for the data we produce

In order to make correctly informed decisions, we need to treat our data with the same level of diligence as our services. As producers of data, we have a responsibility to ensure the quality of our data and that it is stored and protected appropriately.

We write with inclusivity, diversity, and accessibility in mind

Our company values inclusiveness in the workplace and we should reflect this stance in our engineering output.

More Repositories

1

SkyFloatingLabelTextField

A beautiful and flexible text field control implementation of "Float Label Pattern". Written in Swift.
Swift
4,094
star
2

backpack

Backpack Design System
TypeScript
492
star
3

whispers

Identify hardcoded secrets in static structured text
Python
480
star
4

turbolift

A simple tool to help apply changes across many GitHub repositories simultaneously
Go
434
star
5

LambdaGuard

AWS Serverless Security
Python
399
star
6

cfripper

Library and CLI tool for analysing CloudFormation templates and check them for security compliance.
Python
396
star
7

Dixie

Dixie, turning chaos to your advantage.
Objective-C
192
star
8

aiotask-context

Contextual information for asyncio tasks
Python
161
star
9

backpack-android

Backpack Design System
Kotlin
127
star
10

applicationset-progressive-sync

Progressive sync controller for Argo ApplicationSet
Go
124
star
11

skyscanner-python-sdk

Skyscanner Python SDK
Python
121
star
12

full-stack-recruitment-test

JavaScript
110
star
13

backpack-ios

Backpack Design System
Swift
108
star
14

sonar-secrets

SonarQube plugin for identifying hardcoded secrets, such as passwords, API keys, AWS credentials, etc..
Java
99
star
15

pyfailsafe

Simple failure handling. Failsafe implementation in Python
Python
89
star
16

kms-issuer

KMS issuer is a cert-manager Certificate Request controller that uses AWS KMS to sign the certificate request.
Go
61
star
17

backpack-react-native

Backpack Design System
JavaScript
49
star
18

pycfmodel

A python model for Cloud Formation scripts
Python
27
star
19

ensure-node-env

A script that helps ensure you have the correct node & npm versions installed in your environment.
JavaScript
19
star
20

historical-bank-ruby

A Ruby Bank that serves historical exchange rates
Ruby
15
star
21

gradle-time-logger-plugin

Gradle plugin to log your build time
Kotlin
12
star
22

stylelint-config-skyscanner

Skyscanner's very own stylelint config.
JavaScript
10
star
23

gha-aws-oidc-sample

Enforcing per-repo privileges on AWS with GitHub Actions OIDC, without session tags
9
star
24

backpack-foundations

The foundational repo for Backpack platforms
JavaScript
9
star
25

eslint-config-skyscanner

Skyscanner's ESLint configuration
JavaScript
7
star
26

skyscanner-contentful-management

CLI tool for performing bulk actions with content managed using Contentful
Python
7
star
27

backpack-docs

Backpack design system's docs
JavaScript
7
star
28

skyscanner.github.io

Homepage of Skyscanner Open Source Software https://skyscanner.github.io
JavaScript
5
star
29

cra-template-backpack

The Backpack template used for Backpack React Scripts app creation.
HTML
4
star
30

backpack-node-sass

Parallelised node-sass with Backpack support.
JavaScript
3
star
31

OpenTSDB-rollup

Spark job generating rollup data points from a snapshot of an OpenTSDB raw data table
Java
3
star
32

backpack-usage-analyser

A tool to analyse the usage of Backpack resources in codebases.
JavaScript
2
star
33

grpc-asyncio

Python
2
star
34

eslint-plugin-backpack

JavaScript
1
star
35

eslint-config-skyscanner-with-prettier

Skyscanner's eslint config with additional support for Prettier
JavaScript
1
star
36

helm-argocd-appofapps

A helm chart that provides a relatively simple app of apps pattern
Smarty
1
star