Building and Scaling High Performance Engineering Culture
In my previous blog, Self-Reflection — Leadership Lessons to My Younger Self, I advised my younger self to focus on developing a healthy and high performing culture. I often get asked how I have developed a high performing engineering culture at fast moving companies and startups and what programs I put in place to sustain and scale that culture. In this blog post, I will shine some light on this topic.
My views on engineering & product leadership have been continuously shaped by the learnings and wisdom from collaborating with my amazing colleagues, both ICs and leaders, at Facebook, Netflix, and other startups. For that, I am greatly thankful.
It is no longer a secret that high performance culture delivers sustainable advantages, both internally (reliable execution) and externally (hiring). I consider culture a confluence of operating principles and values. Both, the principles and values, need to be cultivated and harnessed to build a sustainable high-performing culture. One without the other is akin to flying a jet without having a co-pilot and a second engine.
As an engineering & product leader, it is my primary responsibility to establish a clear set of engineering principles (guidelines) & behaviors (values) and then display an unwavering commitment to discussing, iterating, and upholding them. Leading by example and acknowledging / rewarding model behavior is the best possible way to get a broader excitement and deeper commitment from the team.
Let’s review the software engineering (SWE) principles that helped reliable execution:
Software Engineering Principles (Guidelines)
- Build “functional” and “intuitive” products
- Develop with “reliability-first” mindset to help your colleagues because no one loves to get a page at 2 AM in the night and avoidable customer escalations are demotivating for the entire company
- Be intentional about “reusability” to avoid reinventing the wheel
- Focus on incremental releases and don’t let perfect be the enemy of good
- Make good design choices to avoid tech-debt accumulation. At minimum, be very intentional and open about tech-debt and proactively work on a plan to pay-it-down
- Log design, tech, framework and / or architecture decisions you have made and invite comments / debate to increase transparency
- Be non-judgmental, objective, and responsibly critical when reviewing pull requests (PRs) to increase mentoring opportunities and improve inclusiveness
- Enable product measurement by instrumenting your code to help build a good feedback loop by understanding product performance, usage, and customer interactions
- Practice good code hygiene — use design patterns, develop high test-coverage, build simple integration interfaces, write good documentation, and support overall code readability through annotations & code comments.
- Finally, empathize w/ customers and ship compassion in your product to enable delightful experiences
Now, let’s review a set of values that ought to be consistently practiced in engineering behavior to deliver high performance:
Engineering Values (Behavior)
- Be outcome (goals) driven
- Over-communicate
- Be non-judgmental, supportive, collaborative, inclusive, and selfless (no brilliant jerks please)
- Show curiosity (“Ask not Tell”) and assume nothing except good intent
- Take ownership, reason well, and demonstrate a bias-to-action
- Take risks, make mistakes, and proudly share your learnings / experiences with others around you
- Be radically candid and share feedback in real-time respectfully & objectively — share both facts (what) and emotions / feelings (impact); Remember, sharing concerns is showing care
- Demonstrate courage, pushback, and feel safe to carry out hard conversations — Say what you see. Going one step further — say it how you feel; I want to hear what your 6th sense is telling you
- Seek non-conforming inputs / feedback to overcome any biases — farm for dissent and list concerns; proactively address concerns, you may not resolve them, but this ensures everyone felt that they were heard, which is important for building a caring and sharing culture
- Promote healthy conflict which leads to better outcomes
- Variance w/o value leads to tech-debt — avoid chasing the next hot thing in tech just because you wish to learn; Identify real utility in tech/tools/framework you introduce in the tech stack
Now, that might feel like a laundry list of items with broad coverage, but trust me, you need to discuss all of the bullets printed above and establish clarity. Each and every member of your engineering org needs to adopt and consistently demonstrate these values in action to build a sustainable high-performing culture. Few programs such as real-time 360 feedback (starting with the leader), lunch-and-learn sessions, hack-a-week, regular team meetings with a consistent high-value agenda, and accountability exercise (The Advantage Framework) will help reinforce these values.
Remember, stronger these muscles get, the more cohesive the team becomes. You will see improvements across across all the following key vectors — Trust, Conflict, Commitment, Accountability, and Results (discussed in The Advantage). Final words, you, as an engineering leader, should be flexible and open to all types of feedback. Everything starts with you, you need to stand strong and tall for your organization and the company to help your team become better at everything.
If you liked this blog, please comment and share your thoughts allowing me and others to learn from your leadership experiences.