This article was written by Greg Czajkowski and originally appeared on the Snowflake Blog here: https://www.snowflake.com/blog/the-rocket-behind-snowflakes-rocketship/
Not a day goes by without questions from candidates, customers, and other interested parties about how we run Snowflake Engineering. I often hear: “Snowflake has been delivering a truly innovative, high quality product, and the pace of delivery is only accelerating. There must be a secret to it.” Indeed, we have a unique engineering team, and continue to hire world-class engineers. They are the driving force behind our products.
Attracting and hiring great people, and working on amazingly ambitious technical problems, are how we enable Snowflake Engineering. These three principles guide how we make successful our engineering team, Snowflake, and consequently, our customers.
- Align our mission across engineering and with other Snowflake teams
- Focus our energy in the most productive ways
- Enable initiative from everyone in engineering
Since Snowflake’s inception, our founders and leaders have championed these principles. Equally important, we recruit people who embrace these principles, which helps tremendously. Cultivating and enhancing such principles is certainly easier than bolting them onto an organization as an afterthought, or as a jolt to a previously well-functioning organization that has deteriorated.
This post is a summary of how we operate, with certain resolve in the application of the method.
ALIGNMENT ON OUR MISSION
Our mission is to mobilize the world’s data with Snowflake’s Data Cloud. We can help any organization achieve better business outcomes and deliver better products and services through data. Quite a lot of work at Snowflake ensures all teams are fully behind this goal and its implications, including engineering, product management, and others that contribute to product development. That alignment pays off big time as it provides the clarity necessary to make decisions quickly, including decisions that impact all of Snowflake and not just a single team.
Focus on quality
One implication of our mission is that companies without in-house DevOps teams can take full advantage of Snowflake, as we take it on us to remove operational effort and friction. Similarly, it is on Snowflake to develop appropriate mechanisms to offer great performance out of the box, without a need for tuning done by our customers. We frequently hear from our customers that one of our most valued characteristics is that “it just works”. Additionally, we eliminate a lot of stitching effort through creating a highly integrated product, as opposed to a number of narrow-scope products that require integrations, scaling separate learning curves, dealing with different pricing models, and so on. In other words: high quality is central to delivering on our mission. Departing from this North Star of product design could tactically make our lives easier, as sometimes we could solve a given problem by offering a configuration option or a specific customer could get a tuning parameter familiar to them from a previous-generation data warehouse. However, the aggregate effect of such steps would turn a delightful product into another complex technology, requiring constant customer attention, which would go against our mission.
Align across all functions
Full alignment across Snowflake in terms of product design has been a key to our success. The support from everyone, including our sales organization, to resist the temptation to compromise “just a little” on the ease of use helps focus our energy on developing techniques and heuristics to further increase Snowflake’s usability. Close collaboration with IT enables complex initiatives, such as completing the program of running Snowflake’s business on Snowflake. Alignment with Marketing allows for joint focus on the technical aspects of “self service”. Alignment on our mission makes it easy for customer support to ask engineering for diagnostic tooling (and to get that tooling). While it’s critical for leaders to align, the key is to have all levels within and across teams to similarly align.
It’s quality and velocity
Our mission implies high quality delivered at high velocity. “High quality” and “high delivery velocity” may seem contradictory until one realizes that quality is integral to how fast we deliver new features and product innovation. Poor quality results in frequent and costly incidents. Without proper focus on quality, velocity is an illusion which ends at the next rollback. Again, and from the very beginning, cross-functional alignment on the value of quality keeps our engineering team properly focused. Overall, developing the mindset of “quality and velocity” has helped us tremendously to build a great product and avoid the pitfalls of “quality vs velocity”, which often plagues product development teams.
Know your product
The alignment I have been talking about really starts with Snowflake’s 2,900+ employees (as of April 30, 2021), championing our company values. All of our values are important. But at the top of that list is “Put Customers First”. To us in engineering, that, among other implications, means we should have a solid first-hand experience of how customers use our product. It also means we should have detailed product usage telemetry to steer investment towards the most valued improvements. We strongly believe and have internal evidence to confirm what we tell our customers: The organizations that best leverage data achieve better decisions and outcomes.
At Snowflake, all of this is made possible by Snowhouse – a Snowflake account that we use internally and has identical functionality to what our customers use. Among the vast number of data sets Snowhouse contains, it also captures usage telemetry. Each of us uses Snowhouse, from analyzing query performance to preparing data for quarterly roll-ups. The result is engineering’s deep familiarity with the actual product we’ve built, which is very powerful and unique in our industry. It allows us to improve our product faster, feeding first-hand experience into designs.
USE ENERGY THE MOST PRODUCTIVELY
Question processes and the status quo
Alignment on the mission is a necessary condition for fast delivery of quality products. But it’s not everything. Energy needs to be conserved and applied to deliver the highest possible impact. To start with, we are highly critical when introducing new processes. We carefully weigh the costs and the benefits, and invite those who’ll be impacted by new processes to define them. Similarly, each process can be redefined or even removed if it doesn’t work. We learn and iterate.
We very much encourage engineers to point out problems, interrogate existing processes, and propose improvements. Those debates can’t be endless, though. “Disagree and commit” is a useful method to avoid the pursuit of diminishing returns when it comes to suggesting process improvements. More broadly, the “disagree and commit” maxim serves us well, such as preventing design decision stalemates. It doesn’t need to be invoked frequently, but when it is, it’s a well understood concept. We often talk about the malcontent – someone who is perhaps even too critical of the current status. The term, borrowed from our CEO, refers to a productive behavior that doesn’t let us fall into complacency but instead continues refining our understanding of the A+ state and getting closer to it. We are fans of malcontents!
Partner with product management
Moving at full throttle while spinning your wheels won’t shrink the distance between you and a stated goal. To avoid confusing effort with results, close partnership with our Product Management team is critical. We emphasize partnership, as all too often we hear about companies where “engineering runs things”. At Snowflake, we believe experts should manage areas of their expertise.
Of course, any expertise and opinions are welcome, and sometimes our product reviews are indistinguishable from engineering reviews. (That’s good!) But ultimately, product managers are true partners to engineering, and vice versa.
Let’s consider internal automation. It’s not only more efficient, but also less error-prone. My colleagues in other companies often find investing in internal automation, just like in stability and quality, difficult due to the pressure of delivering new product features. Snowflake is different, and product management’s understanding and support of the value of non-customer-facing initiatives is invaluable. In general, being able to take a longer view, with benefits measured over quarters rather than weeks, is a result of an engineering and product management partnership that has strong cross-functional alignment.
Innovate but don’t “do innovation”
One of the biggest benefits of our close partnership between engineering and product management is that we do not “do innovation” for the sake of innovation. Instead, we determine which problems need to be solved and then work on them from first principles, understanding the state of the art but not being constrained by prevailing thinking, and not tactically compromising.
Product management’s buy-in is critical here. This approach, while in the long-term yields technical breakthroughs that impact customers in massively positive ways, requires time to design and implement. It also helps Snowflake be one of the most innovative companies in the world. When we move from design discussions to the implementation, we’ve already built confidence around the future impact. As a result, it’s a very rare thing for us to abandon a project.
“Done and done” is a term often used at Snowflake. Clearly and comprehensively defining completion criteria ensures features have impactful launches without loose ends. Knowing what is “done and done” avoids wasting energy on oscillating between moving on to the next big thing and having to finish what wasn’t done properly the first time. “Get it done” and “Own it” are among our company values, and assist greatly with Snowflake Engineering’s “done and done” approach.
Quality over deadlines
Exemplary management of commitments is important too. It’s fine to miss a commitment if there’s a good reason for it, and if the slip has been communicated the moment it emerged. It’s not okay to miss a goal without telling anyone as soon as a slip becomes likely. This approach serves us particularly well in complex launches, where dependencies span several teams.
Our quarterly planning process distinguishes between two types of goals: must-deliver and best-effort. If we need to react quickly to a new opportunity, the latter category will be impacted but not the former. Having these two tiers of goals increases our agility. Similarly, if quality would suffer due to focus on a deadline, we redefine the deadline. In general, this simple statement – quality over deadlines – is easy to say and difficult to apply. At Snowflake, the cross-functional alignment helps us practice it.
Small teams and small egos
Many engineers report they feel the most productive on small teams. While we are not a collection of disconnected tiny teams, we encourage managers to organize work in such a way that engineers feel like they’re working on a team of (approximately) four people. Opening engineering offices in time zones other than our original office in Silicon Valley made us pay even more attention to a “small team” approach, with a focus on minimizing the need for inter-continental meetings and promoting asynchronous communication (e.g., docs over meetings).
Big egos are costly. A part of Snowflake’s culture is the lack of big egos. Our interviewing process includes a behavioral part. We assess, for example, if someone is an above-average team player and not full of self-importance. Intentionally assembling an engineering team with an eye for humility is important for several reasons. Those without positional authority can take initiative, be open, be listened to by leadership, and be sure the best ideas will win irrespective of who proposed them.
Humility enables a growth mindset: if we’re wrong about something, we’ll learn and move forward. And it helps avoid arrogance, which is not infrequent among engineering organizations. Symptoms of workplace arrogance can include downplaying and looking down on competition, overestimating one’s ability to deliver, or believing customers are wrong and one’s tech is right. Those behaviors and beliefs usually lead to long-term performance far from optimal. Instead, we try to operate with a high degree of humility, respecting competition big and small. Regardless of who the competition is, we show respect by competing fairly but fiercely, and learn from our mistakes and from our successes.
Push decision-making down
To fully realize the potential of alignment on our mission and on productive use of energy, we need each and every member of engineering to feel empowered to take initiative. It can be small things, such as combating meeting proliferation on one’s team, and in larger ones, such as proposing to acquire a company. We encourage the mindset that if something can be improved, any of us can be in the best position to do so.
The key is to push decision-making down the org. A popular mechanism to effect change is the formation of small working groups. Recent examples include defining best code review practices, streamlining the recruiting process, and improving internal developer experience. Each new successful working group, in addition to addressing a specific topic, deepens the sense that we own our destiny. That sense of optimism and confidence is vital to building a world-class engineering team. Conversely, too many organizations perform way below their potential as they become fatalistic or apathetic, entertaining the notion: “Nothing will ever change, so why try?”
Eliminate the barriers of hierarchy
Enabling everyone to take initiative is an important foundation for a healthy-functioning, fast-moving organization. But the barriers of hierarchy can get in the way. We have taken several steps to eliminate them.
- We provide near-instant access to those with large scope, which has a welcomed side effect of shortening the distance between individual contributors and nth level managers.
- We host bi-weekly all-hands meetings for engineering and product management, with individual contributors delivering most of the presentations.
- And, we promote self-deprecating humor. (This is quite tricky as we don’t have solid proof of having any sense of humor, self-deprecating or otherwise.)
We want to emphasize that you don’t need positional authority to influence direction or lead at Snowflake.
A good example of empowerment and taking initiative is how groups consisting of an engineering manager, product manager, technical program manager, and a UX designer come together to build a plan for their area. That level of autonomy is desirable and motivating for teams. Of course, those teams need to think about putting customers first and being aligned with various business and technical requirements. A number of reviews help us achieve that balance and alignment between top-down broad directives and uncorking the bottom-up energy and creativity.
Establish trust, not blame
A related topic is trust within the organization. This is not something built overnight. Instead, trust grows from a myriad of encounters, projects, and situations, and how leaders operate day to day. At Snowflake, there is a high degree of transparency in decision-making and communicating technical and non-technical proposals, so everyone can comment on and influence them, and focus on learning. For example, the detailed description of our performance management process is available for all. Slides and notes from all engineering, product, and other reviews are sent each week to all of engineering. And, as already mentioned, we hold all-hands meetings every two weeks, with a Q&A segment. Those activities, and more, help drive alignment and help avoid energy dissipation due to lack of information.
The word “blame” has a distinctly negative meaning, as it hinders learning from mistakes and diverts energy towards unproductive behaviors. Blameless post-mortems at Snowflake are an example of activity where full attention is focused on understanding facts and zero attention is paid to who did or did not do something. We hold them regularly, and they have a strong positive influence on building trust.
Take the initiative and go direct
A frequently heard phrase at Snowflake is “go direct”. The idea is to discuss a given matter directly with who owns a part of the solution, and not with a manager or a different proxy. Going direct can be difficult but it’s one of those things needed for a grown-up organization. In the rare cases when going direct doesn’t work, we encourage all in engineering to escalate if progress has stalled or we need to clarify ownership. By now, the word “escalation” has lost negative connotations.
Taking initiative is a polar opposite of the “not my job” attitude. We strongly encourage the following behavior: If something doesn’t look like your job but needs to be done, do it if you can, go direct to the owner, or escalate if ownership is unclear. Such an attitude encourages thinking of the product and company as our own. One of our company values says it this way: “Build our product and our company like it’s yours, because it is.”
Taking initiative is one of the practices we promote among our managers. In fact, a working group composed of experienced managers proposes materials and forums to discuss topics key to help increase our managerial acumen. We’ve determined that taking initiative is a topic as important to us as handling difficult conversations well, managing commitments, enabling holistic career growth, or creating team identity.
Proper and properly aligned incentives help promote the right behaviors. In our employee performance reviews, we focus on technical contributions (for managers: people and team management), attention to product quality, and “citizenship”. The last category is quite broad, but in essence it’s about optimizing for Snowflake and our customers, taking initiative, and helping others. Similar to ski jumping, both distance and style matter.
We believe the principles described above lead to a highly productive engineering team, and equally important, to fast professional growth in an uncomplicated environment conducive to learning, collaborating, and helping each other.
Does it all work as intended, all the time? Of course not. Snowflake is a fast-growing company operating in a highly dynamic environment. What used to work yesterday may need to be fine-tuned or completely overhauled tomorrow. However, the basic principles described in this article allow us to quickly adjust and to remain at the forefront of technology. We let the results speak for themselves.