Some of these are not fully fleshed out, I still want to share them as they give a useful view into what I care about.
Within your realm of capability I can trust you to own your work. This entails clearly stating commitments, proactively communicating surprises, being able to understand the context of the work and autonomously making sensible decisions (escalating decisions that mean a larger deviation from committed work). Pulling in help from others where you feel you need it.
For your trusted scope of work I can treat you as a black box.
You demonstrate a sense of ownership for the entire organization, not only your team, and therefore seek to have an impact outside of your team when you can be helpful.
What this means specifically for engineering:
- We rely on members of our team to be autonomous. This certainly doesn’t mean that you should not ask for help, but it means that you should proactively communicate whenever something is taking longer than expected or when you’re running into roadblocks. We like to assume that everything is going well if we don’t hear otherwise; trusting in that saves a lot of time needlessly checking in with folks.
- While there will be high level outline of required work for each project, there will be lots of decisions that need to be made during development. It’s your responsibility to understand the goal of your project, its impact and its expected effort. This allows you to make tradeoffs. You have a lot of autonomy over how you use your time - use that to deliver the biggest possible impact.
2. Continuous Improvement
You regularly reflect on how you, your team and the entire organization works and you are able to suggest and implement actionable improvements. Implementation is a key part here. Simply suggesting a pile of improvements is of limited value and can be a big source of distractions. You clearly distinguish between very important improvements and nice to haves, being well aware that we cannot implement all suggestions.
You seek improvements for yourself and you try to identify how others on your team can improve and how you might be able to help them (mentor and be mentored).
What this means specifically for engineering:
- You reflect on the processes used on your team and you actively raise any issues and suggestions for improvements
- Helping team members learn about a feature or technology pays off quickly - pair programming is a great way to share knowledge. If you see a chance to mentor, make time in your schedule to do so.
- Actively seek help from folks that have more experience in a specific area. This can be a member from another team (Windows/Android) that has already implemented a feature you’re working on. Or it can be the person on your team that last touched the code you’re working on. Don’t be shy to ask for help.
Over-communicate and over-document. Most people communicate too little and assume too much context. It’s essential to respect other peoples time by communicating clearly and concisely. Use synchronous and asynchronous communication appropriately. A concise written proposal to suggest a new idea to a larger group is strongly preferred over an ad-hoc meeting.
4. Transparency & Honesty
As a default you should embrace transparency and candid conversations.
You should share your work and ideas early and often, allowing others to contribute and improve them.
You should make an effort to share your commitments broadly and discuss your learnings openly if you fail to meet them. High performers have a strong distaste for the hiding of “negative information”.
If you have feedback for anyone in the organization, it’s your responsibility to share it candidly, directly with the person in a respectful way.
5. Collaboration, Debate & Open-mindedness
Meritocratic debate of ideas is essential for a successful organization. You should default to seeking critical and constructive feedback. You should never treat critical feedback as an attack on yourself.
You should foster debate at the right time in an initiative. Most debates should happen early on in the lifetime. Once the initial debate concludes we expect you to disagree and commit if your opinion was not considered. It is easy to derail an entire initiative by side-discussions that reheat controversial points which had already been decided upon earlier.
Beyond debate you collaborate with others frequently. You have a good understand of other teams and peoples goals and capabilities. You use that understanding to share ideas and create alignment. In the end you are always working on helping the organization succeed, not your particular unit.
6. A Focus on Impact
Rigorously protect your and other’s time and use it for maximum impact. It’s easy to get caught up in work that seems important but doesn’t have any impact on the business and doesn’t need to happen in the first place. It’s your responsibility to learn how you can have the highest impact for the business and to spend as much time as possible doing it. In some cases this can mean discussing tiny details of a critical project at length, in other cases it can mean cutting a lot of corners and going to market faster in order to learn.
A typical high impact activity is reducing or cutting low impact work.
You are also responsible for holding others in the organization accountable for the impact they are having and for pointing out low impact activities that are consuming significant focus and resources.
7. Principled Thinking over Experience
Experience can be extremely helpful, but I value principled thinking more. In an environment as dynamic as technology many “best practices” remain widely unproven. Instead of repeating something that seems to have worked in the past, analyze a situation and devise a solution from there. Experience can certainly be helpful, but is not mandatory.
Continuously asking “why” can lead to remarkable insights. If you don’t understand, don’t be shy to ask. There’s a high likelihood that rather than your question being dumb, the explanation being given is poor or wrong. Curiosity and questioning, with a healthy dose of skepticism can fuel growth for yourself and those around you.
9. Humbleness & Empathy
All of us can learn from other folks on the team. No matter what your previous accomplishments are, remain humble and open minded. For all of your actions, be empathetic and keep in mind how other folks on the team might feel about them. In my experience teams composed of low-ego, highly functional folks produce outstanding results.
10. Creativity & Experimentation
I value generating a lot of ideas, and experimenting with them, then observing outcomes and adjusting. Mostly this is better than spending too much time with analysis, especially when many parameters are uncertain. Experimentation enables more creativity & learning.
11. No Cynicism and Unsconstructive Negativity
It’s toxic. Annoyed by something? Go talk to the person and tell them openly (there’s a good chance they are not aware they are causing an issue for you). Resolve the issue, thereby improving the team.