Coder Social home page Coder Social logo

andyfarmertuishg / engineering-principles Goto Github PK

View Code? Open in Web Editor NEW

This project forked from skyscanner/engineering-principles

0.0 1.0 0.0 24 KB

Skyscanner's Engineering Principles

Home Page: https://medium.com/@SkyscannerEng

License: Creative Commons Attribution 4.0 International

engineering-principles's Introduction

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/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 have the ability to 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 effectively deliver changes at scale safely in our code base, 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 do so 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 of 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 appropriately.

engineering-principles's People

Contributors

sugendran avatar colinskyscanner avatar janeklb avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.