Engineering Principles ⭐

How to use principles to enable autonomy and alignment in your team.

In his bestseller book Drive, Daniel Pink argues our motivation is driven by three main factors:

  • Autonomy — the desire to be self-directed. We get motivation and joy by having control over our life.

  • Mastery — the desire to improve our craft. We get satisfaction by getting better at what we do.

  • Purpose — the desire to have a positive impact on the world. We are empowered by work that serves a higher purpose.

As managers, we should do our best to cultivate these elements into our team.

This article focuses on autonomy — and how we can foster it by defining great engineering principles.

🏃 Autonomy

Autonomy is defined as a condition of self-government. At work, it is the capacity to make decisions without the need or help of others.

Other than driving motivation, autonomy is crucial to make companies scale. It reduces the need for communication, so people are able to do more work.

In my experience, there are three core elements that enable autonomy, both for teams and individuals:

  • 🎯 Goals — people should know what they have to achieve

  • 📚 Skills — people should have the skills to achieve it

  • Principles — people should know how to make decisions

Together they make autonomy possible, and provide the alignment that ultimately makes autonomy effective.

Autonomy + Alignment = Trust

Let’s see all these three elements, with a focus on principles 👇

🎯 Goals

Good goals are about what should be achieved, without being prescriptive about how it should be achieved. They provide direction while preserving autonomy.

Goals should be concrete, combining qualitative direction with measurable results. People should always stay responsible for what should be built to meet such goals.

The OKR framework provides a blueprint for creating effective goals. You can find several examples here.

📚 Skills

Teams and individuals should have all the skills needed to achieve their goals.

For teams, this means being able to carry on work without external dependencies. Feature teams and cross-functional teams are born out of this need.

For individuals, this is about their own skills, plus having resources and support to cover what they miss.

⭐ Principles

Chances are you don't just want goals to be met, you want them to be met while respecting your culture and your values.

Enter principles.

Principles provide a blueprint for how decisions should be made.

Without principles, you might meet goals in a way that doesn't reflect your culture. Engineers might deliver features without peer review, managers might meet deadlines by making people overwork, or teams might cut corners on security and accessibility.

Principles are a set of shared beliefs that create alignment over how you do things in your company. They are, simultaneously:

  • 👌 A definition of what good looks like.

  • 🗣️ A shared language to be used in daily work.

How to use principles

Principles are useful in many circumstances:

  • Evaluate designs — when creating something new, be it a process or a piece of software, you might use principles to understand if you are missing some crucial aspect of your work.

  • Onboarding — you can get new members up to speed faster by using principles to instruct them about the way you work.

  • Post-mortems — you can compare a failure against principles to spot what went wrong, and possibly adjust principles themselves to do better in the future.

  • Reviews — principles guide people's behaviour, so you can use them to review behaviour as well. Principles provide useful review lenses because they go beyond pure performance.

What good principles look like

It might seem counterintuitive, but in order to be useful, principles should be specific.

Simple propositions like "we write high quality software" or "we care about customers", are not going to cut it. They are not going to be useful in real life.

To tell whether a principle is good, ask yourself: how am I able to tell if we are not following it? If you don't have a good answer, chances are the principle is not clear enough.

Here are a few examples of good engineering principles, taken from successful companies:

  • Fix problems, even when they are not yours — by Asana. Asana strives to create a company that is a collective of peers. People are encouraged to be egoless and always do what is right. For example, you should be willing to refactor code as you encounter it, work on performance issues whose ownership is hard to pin down, and have rotating on-calls.

  • We peer review every change — by Skyscanner. Peer review increases the quality of the software you ship, while also spreading knowledge of the codebase across the team. It is a no-brainer practice and I love that Skyscanner puts it front and center in his core engineering principles.

  • Psychological Safety — by Artsy. To be productive and do the right thing, engineers must feel safe asking questions and discussing mistakes. Artsy strives to foster a psychologically safe work environment, with leadership being especially accountable for that.

  • Engineers own their impact — by Airbnb. Engineers are involved in goal-setting, planning and brainstorming for all projects, and are individually responsible for creating value. They are also responsible for the code that gets shipped, monitoring that it works fine after it is in production.

How to define principles

If you want / need to create principles from scratch, you should involve your team in doing so. There is no better way to create alignment than making people invested in the process. If you are in a leadership position, this is what the process might look like:

  • ⬇️ Provide high-level guidance — provide your team a few strategic themes you would like to highlight in principles. You might say, for example, you want to define engineering principles that incorporate best practices the team believes in (you can let them propose a few to begin with), and also describe the communication dynamics the team wants to encourage.

  • ⬆️ Get proposals from your team — let people in your team come up with their best proposals, including a description of why these make for good candidates, and how they would use them in practice.

  • 🔄 Challenge and iterate — discuss these principles, introduce with your own, improve them and eventually wrap-up. As a leader, it should be clear you are responsible for the final outcome, but people should feel invested and aligned with the result.

📚 Resources

  • 📑 Spotify Engineering Culture — great animated video (in two parts) that explains how Spotify's culture is centered on autonomy + alignment.

  • 📑 Why Engineering Principles Matter — by Skyscanner. The article enumerates Skyscanner Engineering principles and explains why they matter. There is also a separate, dedicated repo for principles.

  • 📑 Artsy Engineering Principles — Artsy's values have a strong focus on how people should work and interact with each other. Each value includes a description, examples, and several further readings.

  • 📑 Asana Engineering Values — Asana's engineering values are few and well articulated. They also include examples of how they are used within the company.

  • 📑 Engineering Culture at Airbnb — This is an old (2014) but still valid piece about a few key values that guide Airbnb's Engineering work. They include non trivial elements such as career tracks and team structures.

⭐ Weekly Featured Jobs

Here are the remote engineering jobs I recommend this week 👇

I personally review each of these jobs. I meet people from these companies in call to get more context, provide advice on the job description, and better understand the opportunity before promoting it with you.

🆕 Flick — Full Stack Typescript Engineer

Flick is an analytics tool for Instagram creators. I talked with their founder Andreas about their hiring process and needs — their tech stack is cutting edge and they wrote one of the best job posts I have ever seen.

🆕 Makelog — Senior Full Stack Engineer

Makelog helps companies to keep customers engaged via product updates. It is a brilliant tool that automatically integrates with your engineering process, such as commits and pull requests. Their founder JJ is very insightful and driven by a compelling vision.

Browse many more open roles (or add your own) on the full board 👇

Check out all Refactoring Jobs

Hey, I am Luca 👋 thank you for reading this far!

Every week I read tens of articles and draw from my own experience to create a 10-minutes advice about some engineering leadership topic.

Subscribe below to receive a new essay every Thursday and put your own growth on autopilot!