Engineering Values Help Us Solve Billion-Dollar Challenges
For an engineer, working at Yapstone presents some irresistible challenges. Our team develops tailored payment technologies for marketplaces with complicated payment flows and business rules, which means that we have to take a deep dive into the industries we’re serving and solve their individualized problems with the right solutions. Currently, our technology processes many billions of dollars each year in electronic transactions.
So, we’re certainly never bored or complacent. In fact, we’re quite often fired up with good ideas! And therein lies the challenge.
Sharing the Same Values
I was talking to a friend of mine about how some of the debates amongst our Engineering team were, shall we say, less than productive. Everyone is well-engaged and passionate about what they have to offer, but it seems like we don’t all have the same priorities and motivations. And somehow, we can’t come to consensus on what is “the right thing to do.”
My friend could relate to that problem, it’s a common one. She told me that at her company they decided to come up with a well-defined list of values. These values were something all the engineers contributed to and could then refer to as an objective way to look at all sides of a debate.
And she said that it worked for them. When someone tried to suggest an unreasonable deadline that might compromise code quality, they now had something to point at when they raised their objections. This has more weight than just offering up a counter argument — it’s referring to something the whole team has committed to.
I thought this idea was well worth stealing.
Why Are Values Important?
Values are what motivate us to do our work and do it well. Of course, we get paid and that serves as an incentive to work. But most of the time, we’re not thinking about our salaries when we pick up a task or plan an effort. Instead, we think about what’s the “right thing” to do. And in doing so, we want to address the literal requirement of what’s being asked, as well as maintain the spirit of what’s important to the company and the team. We want to ensure that we will proactively benefit ourselves in the unknown future. For that reason, it’s important that we have a consensus about what our values are, so that we can align our decisions and efforts as a team.
Note that not all values are consistent with each other.
For instance, if we were producing widgets, we might value production speed over anything. Or else we might value precision and quality in our widget production. These values might both benefit the business equally, but they are usually in contention with each other.
Improving speed will sacrifice quality and vice versa. For that reason, it’s important that we, as a team, agree on which of these values is most important. Or else one work shift will be retooling our widget machines to make them work faster and the next shift will undo all those changes in order to produce higher quality. If our teams are not aligned, they’ll be undoing each other’s efforts.
Setting Our Values in Stone
In order to achieve that alignment, it’s useful to explicitly call out our values and motivations, even if they may seem obvious. Repeating those values, writing them down, and calling them out to our attention will remind us that we need to consider how everything that we do has some impact that leads us toward or away from what we consider to be most important. Sometimes, when we sit and mindlessly stare at the widgets rushing by on the conveyor belts, our attention might drift from these values. And we might inadvertently react in a way that contradicts them. This is especially so under the stress of deadlines or emergency issues.
Ideally, we will have our values at hand or top of mind when that happens. We’ll be able to catch ourselves when we are sacrificing one of our values in order to achieve something else. This may not change our decisions or actions, but at the least, if we are going to act contrary to something that we consider an important value, we’ll be doing so with awareness and intention. To that end, these values should be considered a tool to help raise our awareness.
Values can also be a reference that informs our decisions. If there is a point of contention in a meeting or discussion, we can reference our shared values and see which ones we are upholding and which we are ignoring to help us come to a consensus.
How Did We Arrive at Our Values?
With the help of a handful of Yapstone Engineers, we put together a preliminary list of value statements based on what we felt were general software practices. We then asked all members of our engineering teams to rate these statements based on how important they considered each statement to be (thank you, Survey Monkey).
Yes, all of these statements are important — that’s why they’re general practices. But there is some variation of opinion about which are more important. In the spirit of arriving at a consensus, we simply tabulated the importance ratings of these values statements as objectively as possible in order to refine and prioritize this list.
After we got back the survey results, we refined the language of these further to make a nice succinct list of 5 Core Engineering Values. And we’re now in the process of doing a little internal marketing to make sure these stay top-of-mind for everyone on the team.
Of course, values may change so we may repeat some of this process occasionally, but now we have a tool that should help keep our teams in alignment.
And Just What Are Our Values?
Here they are in order of importance:
- Ship Fast, with Sustainability
We value speed, without risking sustainability. When we are energized, we produce higher quality, incur less technical debt, iterate faster, and spend less time fighting fires.
We appreciate that a simple design is better; easier for customers to adopt and easier for us to maintain and enhance.
- Team First
We operate as One Team. We believe that good decisions are reached by respecting others’ expertise, communicating clearly and openly, and coming to a consensus that we can all support.
- Challenge Constructively
We value everyone’s input early and often. And we believe that all ideas, regardless of their source, can be respectfully challenged, debated, and tested in order to be made better and stronger.
- Always Learning, Always Growing
We value continuous learning and growth for individuals and the team. We are more productive as individuals when we are empowered to work on various products and platforms and have input into product direction. We are more productive as a team when we don’t blame for the unexpected; we learn, get better, and move on.
Lots of work ahead.
At Yapstone, we’re in the process of undertaking a big development effort to build out our Transact platform. Lots of teams are working in parallel toward an ambitious target. It’s important that, through all of this, we honor our values in order to maintain the integrity of our team and product.