top of page
Writer's pictureFahad H

Foundations to build on: Intercom’s principles for building product

Clear guiding principles are the best way to scale a team while keeping them aligned. Without a set of principles, organizations begin to fracture.

One team heavily believes in Big Design Up Front, another follows Lean start-up, a third tries to instil PRINCE-2, and before you know it your process is a patchwork quilt of all sorts of conflicting ways to build software.

Principles are a way of encoding successes, helping to repeat the behaviors that led to positive outcomes and avoid the previous behaviors that led to mistakes. At Intercom, we push ourselves to share and refer to our principles a lot. We also update them every 1-2 years to ensure they’re still representing our best ideas and still guiding us to results we want.

“Everyone who works on our product inherits the three top-level principles and then also the principles appropriate to their domain”

We have three top-level principles for how we build software, five product design principles, and five engineering principles. The idea is that everyone who works on our product inherits the three top-level principles and then also the principles appropriate to their domain.

We hope you find them useful as you consider the sort of behaviors you want to codify and encourage in order to ensure your own future success.

Note: no principle is a truism. The opposite of a principle should itself be a principle, so things like “Build good software,” “Don’t ship bugs,” “Great design matters,” and so on are, in my opinion, bad principles, because no company would ever adopt the opposite one. As such, if you’re tempted to ⌘C and ⌘V a principle here, take a moment to consider all the alternatives you’re saying no to.


R&D principles

1. Start with the problem

Start by deeply understanding the problem we’re solving. Continually evolve this understanding, and persistently return to it to ensure you haven’t veered off course.

2. Think big, start small

Think ambitiously, but know that big things have small beginnings. Always try to find the smallest coherent solution. Starting small enables you to ship sooner.

3. Ship to learn

The sooner you ship, the sooner you get feedback on your assumptions and your solution, so you can learn quickly if you’re having impact. Shipping is the beginning more than the end.

Product design principles

Product design principles are intended to help us make decisions when faced with competing options that seem valuable along different dimensions.

1. Connected, modular systems

We favor modular systems over bespoke optimizations. We reuse, evolve and merge before creating something new.

2. Opinionated by default, flexible under the hood

We optimize our designs to feel simple and opinionated by default, but progressively reveal power and flexibility.

3. Follow fundamentals

We favor established best practices and avoid overly clever, non-standard design patterns.

4. Make it feel personal

Our designs reflect that we’re connecting real people, not entries in a database.

5. What you ship is what matters

Our deliverable is not the design file. We take pride and ownership of what we ship.

Engineering principles

Engineering principles provide guidance on day-to-day technical decision making and insight into how previous decisions have been made. They describe how we behave when we excel as engineers.

1. Shape the solution

We never blindly execute on requirements defined by others. We deeply understand the value of our work, and help design solutions which efficiently deliver that value.

2. Be technically conservative

We like familiar solutions with boring technologies. We reuse the same patterns in different solutions as much as possible.

3. Build in small steps

Large changes are hard to understand, and harder to debug. We deliver complex changes in a series of small, controlled, easy to understand steps.

4. Keep it simple

Complexity is the enemy of our ability to move quickly. We will trade off performance, financial cost, and perfect abstraction in order to keep a solution simple.

5. Work with positivity, pride and love

Software engineering isn’t just about the cold logic of computers. It is an inherently collaborative discipline where great things are only built by high functioning groups of humans.

0 views0 comments

Recent Posts

See All

Comments


bottom of page