Principles in a Technological World

By: Scott Newcomer
Principles

EmberFest 2018 - Principles

I am honored to be speaking at EmberFest 2018 on a topic that’s important to all teams building software: Principles. I’d like to provide a brief overview of why I think principles are important to developers.

I came across Ray Dalio’s basic outline of Principles back in 2010, and it profoundly changed the way I think. Ray Dalio founded the successful Bridgewater investment management firm, considered one of the most important private companies in the U.S. His thought processes and management style are some of the reasons for his company’s success. He has built a meritocracy where radical truthfulness and transparency have created a challenging and efficient operation. I believe each of us in the software development community can create a more principled environment for ourselves and our teams.

Principles and Software

Principles are essentially the “why” behind your actions. They are developed by taking a candid look at the world. A statement like, “We aim to have our pages load in under 2 seconds” isn’t a principle; it’s a target. Something like, “We care about users in low-latency regions and should prioritize fast loading times as much as is reasonably possible” is a principle, because it describes the “why” behind what you hope to accomplish.

In everyday interactions with people, I would gather that most misunderstandings are due to a misalignment of principles. Getting in sync about what you or your team cares about is one of the most important first steps. Principles must be explicitly stated and written down. It shouldn’t merely be a section on your “about” page, but rather a place for everybody to see. Basically, they shouldn’t be loosely stated or assumed.

As it pertains to building software, I would argue that the first step should not be a design document, but a list of principles that lays out what is important for your team and separately for stakeholders.

Here is a start:

Example of Team Principles

  • Kindness is of utmost importance to all stakeholders
  • Honest feedback is more important than sugar coating the situation
  • Open Source Software is critical to how we work. We strive to contribute back as much as possible
  • Disagreement leads to better solutions than not. We encourage disagreement and hard conversations but ensure that you always have a mediator to resolve any disagreements
  • Every day is an opportunity to learn and improve. We encourage taking time to share knowledge among your colleagues
  • Evolution is at the heart of our product. We strive to constantly find new and innovative ways to serve our customers

The beauty of these principles is they impact all areas of your organization and how team members interact. Instead of team members shying away from disagreements, they might have more fruitful conversations if they’re aware of principles everyone has adhered to. Moreover, by giving team members the space to share what they learn, you may see increased enthusiasm for learning and teaching, leading to more skilled and capable team members. Lastly, these can be referenced in reviews and serve as talking points to see where colleagues can improve.

Wrapping Up

I would encourage each and every one of you to ensure principles are a part of your everyday life. Look to see cause and effect relationships and develop principles that help you deal with those daily situations. If you are in a position to lead a team, have your principles etched in stone and known by everybody. This allows you to set a clear expectation of how to work with the standards you expect. If you are not in a position to lead a team, ensure that your principles jive with your team and company’s principles.

Hopefully you will be able to see my talk where I will discuss not only principles from other people in the Ember community, but also some principles I think we can improve on and adopt as a wider community.

DockYard is a digital product agency offering exceptional user experience, design, full stack engineering, web app development, software, Ember, Elixir, and Phoenix services, consulting, and training.