Skip to content

carwow/engineering_principles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 

Repository files navigation

Introduction

History

We made our first attempt at formalising and defining the carwow engineering principles in January 2019. To compile the first draft, we asked all engineers that had been at carwow for at least 2 years to try and capture the engineering culture that had contributed to our success. A year later we worked together with the other functions in the product department and defined principles that we can all follow.

What is the purpose of principles Principles are a mantra, a philosophy and a guiding path. They help us validate our work separating the truth from fact over emotional feeling. Giving us direction in a time of doubt.

How to use the principles

In engineering there are many correct ways of doing things, to avoid unnecessary debates when possible we'd like to pick solutions that conforms to this principles. You can use this principles as guidance, or you can refer to them when giving feedback on someone else behaviour or work. They will also be used when interviewing, and shown to potential candidates so they can figure out if carwow is the right place for them

The carwow Engineering Principles

We start with a clearly defined problem

We always start by collecting evidence to understand the problem we’re trying to solve. This enables us to define outcomes and behaviours to change. We only work on problems that positively benefit both the consumer and the business and never at the expense of each other.

Think big & take small steps to learn fast

To solve a big problem we define a bold, long term view on what we want to create. Then we test towards it - starting with the riskiest assumptions - so we can learn fast at low cost.

Examples:

  • We once tried to reduce the multi-step signup flow into 1 step, figuring the drop-off would be lower than spread out across pages. The complexity of the vision meant it took several weeks to build. The test was only live for 6 hours before it was pulled after signups crashed. If we’d extracted the simplest way to test the concept - perhaps just combining 2 form fields to one page - we could have learned about the user response in a fraction of the time.

Be scientific, but pragmatic

Experiments give us an opportunity to test our hypotheses and learn. We take a pragmatic approach to how we test, accepting we often need to make decisions with imperfect information.

Be ruthlessly focused

We move towards our vision by focusing on impactful work aligned to our product strategy. We use qualitative and quantitative data to help assess value and we explain why when we say no to work that will take us from our path.

Think about the wider implications

We’re mindful of the impact our actions and choices have on the carwow ecosystem. We think about the customer experience, our markets, our technology and the people we work with.

We shape the solution

We don't wait for someone to hand us down a specification. We collaborate with other team members and other areas of the business to create the best possible solution.

We keep it simple

We value simplicity in communication, architecture, technical solutions, etc. We put extra effort to make sure our solutions aren't unnecessarily complex. We prefer removing code rather than adding more code. We make use of open-source library or third party software as a service to achieve this.

We embrace change

We cannot predict the future, we can only predict that things will change. Because of this we follow practices like Evolutionary architecture, TDD, simple design, and Refactoring so that we can cope better with future changes.

About

The carwow Engineering Principles

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published