Skip to main content

Values


What we say we value

Several years ago we asked ourselves in the Product and Development organization what we value and we came up with two words that summarized the things that were important to us at the time: Teamwork and Learning.

Teamwork as a value is straightforward: we firmly believe that producing the best results requires a diverse group of people working towards a common goal. Underneath that though are beliefs that we focus on and talk about a little less.

Teams operate on trust, and trust is built on transparency and honesty

If we are going to succeed in working in a team we have to trust that everyone has the best of intentions and has each other's best interests in mind. Being transparent and honest with one another is one of the most effective ways to build relationships and trust. When trust exists, people feel safe to raise a hand, ask a question, bring forward a new idea, or voice a concern or risk.

Diversity in counsel, unity in action

Teamwork isn't about consensus-driven decisions. Ideas should be discussed, and someone should decide on the appropriate direction. When decisions are made, justify them, write them down so they can't be forgotten, and then execute as a team. Regardless of who makes the decision, the entire team owns the execution and outcomes.

Empower people to make decisions in their scope of work

Everyone in the organization should feel empowered to make decisions at the right scope, and at the right time. For example, individuals should feel empowered to make decisions about how to complete a story without asking for permission, but they shouldn't feel empowered to decide to rewrite the UI in a new frontend framework without some discussion.


Learning is less about new technology and frameworks and more about making mistakes, running experiments, trying new things, and then making changes as a result. We strive to find better ways to work. As stated in the agile manifesto, "we are uncovering better ways of developing software by doing it". We do not have and never expect to have everything figured out. Nested under learning are concepts like:

Mistakes and failures are allowed, not encouraged

We do not celebrate mistakes but recognize that they allow us opportunities to learn. Some of our best and most valuable learnings have come from failures, whether a failure to plan appropriately, a failure to anticipate needs, or a failure to communicate in a timely manner. We expect people to learn from these things and adjust for the next time. We allow everyone the space to make mistakes and to fail, but we won't be celebrating them.

Dealing with ambiguity

We move from ambiguity to clarity over time through discovery. We all have different levels of desired ambiguity as we start on tasks, however, as your career advances, you'll be asked to deal with more and more ambiguity in order to learn the details and provide clarity for others. We'll never have perfect information or perfect clarity, but we should continuously learn about our domain and its problems.

Enabling information gathering

Experiments without measurements don't provide results. If we want to learn from experiments we need to know the results. We should strive to provide both the measure for what success looks like and the mechanism for measurement.


What we actually value

Something that we missed when we defined our values is Community. While Teamwork and Learning make Ncontracts a great company, Community makes Ncontracts a great place to work. Some activities I've seen that point to this "hidden" value:

Genuine care for colleagues We have a focus on knowing people and understanding who they are outside of work. Time and time again we have rallied around coworkers who have gone through difficult times, given people space, and filled in gaps when needed. We've also celebrated personal and professional victories and had deep and meaningful conversations about broad ranging topics.

Inclusivity While we are picky with our hiring practices, we are a place where people can feel like they belong regardless of differences. We promote open conversations and respectful disagreements. We have people working with us from coast to coast, with wide opinions on politics and religion, as well as music and television.


What we want to value

If asked "Do you want to build quality software" chances are everyone would say yes. If we look at what actions we take to build quality software it is less clear cut. Quality is not solely the job of our QA teams, but of every individual member of the Product and Development organization. We should be placing as much emphasis on the quality of our work as we do on working together, learning from our mistakes, or building community. Some behaviors and actions I'd like to see that could drive us towards a higher value on quality include:

Ownership Our work is not complete after we ship software. We are also responsible for keeping the product functioning and ensuring that our customers find it both useful and usable. No one should have to tell us to make things better. We take pride in the product we deliver and we are empowered to improve it.

Deep Knowledge Because we own our products, we have specific knowledge on how and why they work the way they do. We learn more about these things every day. Knowledge of the code behind our products prevents us from breaking things without realizing it. Where we don't have deep knowledge, we raise our hands, ask for assistance, and ensure proper and complete testing is done.

Systematically review defects At any given moment we have hundreds of active defects across our product lines. The only way we can know if they are important is if we are consistently reviewing them, ruthlessly declining work that will not provide value, reclassifying defects as opportunities for new features or workflows, and properly prioritizing these defects against our new feature and product initiatives. Defects can and should win over new development sometimes.

Pay attention and take action We look at our products every day. We know when things are slow, when we get frustrated by usability, when things are broken. If we notice it, our customers will too. It is our responsibility to the team that when we notice something, we do something about it. That won't always mean fixing things immediately, but at least calling it out, put an item on the board for later, and ask your lead to prioritize it.


What do you think?

Our cultural values aren't defined by the leadership team, they are defined by what we all say and do. Which of these values, behaviors, and activities resonate most with you? What values aren't represented? What behaviors or activities are we doing that you think should be on this list? What behaviors or activities are we doing, or you observed, that detract from our values? Are there things we aren't doing that you think we should start doing? If so, remember, you are empowered to make things different and better. These are values we choose, not values that are thrust upon us.

If we are bought in to these values, the next step is asking, "How can I embody these values more fully?" Make goals around that question and talk to your manager and colleagues about ways to improve.