Engineering values at Coursera
We have been having discussions on the engineering team on code quality, which turned into higher level discussions on our culture and values. As we are maturing as an organization, these discussions are important to help us understand how we want to function as a team. This article was an email sent to the team (now with fancy medium formatting), providing a frame to think about values and also summarizing the values we converged on.
There were five monkeys in a room. In the center of the room, there was a banana at the top of a ladder. One of the five monkeys goes up the ladder to get the banana, and just as he climbs up, the other four monkeys get sprayed with cold water. After a while, whenever one of the monkeys went up the ladder, the rest would quickly beat up the one on the ladder. Soon, none of the monkeys ventured up the ladder despite the temptation.
A new monkey was then substituted for one of the existing five. The first thing the new monkey did was to go up the ladder. Right away, the new monkey was beaten up by the other monkeys. The new member quickly learned that climbing the ladder was bad, but did not know why. The other monkeys were then substituted, one at a time, each one quickly learning the rule about climbing the ladder. What was left was a group of five monkeys that would not attempt to climb the ladder though none of them experienced the cold shower.
We’re not monkeys. But, as a group we have norms that influence our beliefs and behaviors. Norms run deep: they influence what we reward, and what we chastise, what we decide to focus on, how we resolve conflicts, and the way we are quirky. They define our culture.
Our cultural norms have existed, and they will change. But, we are not powerless in this change. Each and everyone of us owns our culture.
Our cultural norms have existed, and they will change. But, we are *not *powerless in this change. Each and everyone of us owns our culture. You will find yourself in situations which challenge our norms: You might get a code review that you think needs more work, but there is pressure to release; do you accept it or do you not? An issue happened in production and you noticed it; do you hold your teammates responsible to writing up a post-mortem? Someone on a different team modifies a service that your team maintains; do you help try to get their modifications in, or do you try to put it off? Your actions in each of these situations will shape and influence where our norms go.
The leaders in our organization play an important role in fostering culture. They have the ability to hire, fire, promote, mentor, and model; but they do not control what happens day to day. They will be able to define the *environment *that the team operates in. It is up to individuals on our teams to define the norms, they cannot be mandated. At all hands, we have created an environment that encourages asking tough questions, but it is up to everyone to ask tough questions to create a culture of openness.
The leaders in our organization play an important role in fostering culture. They have the ability to hire, fire, promote, mentor, and model and thus, define the environment that the team operates in. But it is up to individuals on our teams to define the norms.
So what’s up with the engineering values we just came up with? Values are going to give us a common language to talk about our norms and culture. They provide an environment for us to have healthy debates on what we do — you can live our values and use them to make and challenge decisions. They will be tested, and how we use them will define our cultural norms.
I want us to build an organization that is enduring. I want us to be proud of what were doing and hold each other responsible. How would you want to describe the team you’ve worked with in a year’s time? How do you want to describe the environment, the team, and the people? You play an important role in keeping our culture.
Coursera Engineering Values | May 2014
Find high mountains
1 year perspective
We build products and tools that will be around for years. We proactively consider how what we are doing today could impact us a year from now.
Focus on impact
We measure our success by our impact to our users, our business, and our organization.
We strive to use data to drive the questions we ask and the decisions we make.
Value responding to change over following a plan
We are nimble and adapt our actions to data. We do not constrain ourselves with our past decisions.
Value optimizing for iteration over perfection
We ship once it works, and iterate based on data to improve.
Value extensibility over one-off hacks or perfection
We are building an extensible platform for many users, not a customized solution per customer, nor a platform that serves every conceivable use-case.
Valuable software is the best measure of progress
We value software that’s actively used and having an impact to our users, our business, and our organization.
Value shared ownership over silos
We work as a team and help each other.
Value personal responsibility over formal processes
We trust every engineer and give them the freedom and responsibility to do their best.
Value solving problems over complaining
We accept that nothing is perfect and work towards solutions together.
Accept and learn from our mistakes
We are fallible. We are open and transparent with our mistakes and strive to learn from them.