注:本記事は(2021年6月23日)に公開された(The Rocket Behind Snowflake’s Rocketship)を翻訳して公開したものです。

私たちは、見込み客、カスタマー、その他の関係者から、Snowflakeのエンジニアリング部門の運営方法について、毎日のように質問を受けています。「Snowflakeはまさに革新的で高品質なプロダクトを提供していて、そのペースは加速するばかり。何か秘密があるに違いない」と。確かに私たちは唯一無二のエンジニアリングチームを擁し、世界クラスのエンジニアを雇用し続けています。彼らは当社のプロダクトを支える原動力です。

優れた人々を引き付け、採用すること、そして壮大な技術的課題に取り組むことで、私たちはSnowflakeエンジニアリング部門に可能性をもたらしています。次の3つの原則を指針とすることで、当社のエンジニアリングチーム、Snowflake、そして結果的に当社のカスタマーを成功に導くことができます。

  1. エンジニアリングおよびその他のSnowflakeチーム全体でミッションを共有する
  2. エネルギーを最も生産的な方法で集中させる
  3. エンジニアリング部門の全員で取り組む

Snowflakeの設立当初から、当社の創設者と幹部たちはこれらの原則を大切にしてきました。同様に重要なこととして、これらの原則に共感してくれる人々を採用することも大きな助けとなっています。これらの原則を最初から育てて強化することは、以前はうまくいっていた組織に緩みが生じてから、後からの思い付きやショック療法として強制的に導入するよりもはるかに簡単です。

この投稿では、私たちの仕事のやり方を、実例を交えてお伝えします。

ミッションに関する連携

当社のミッションは、Snowflakeのデータクラウドで世界中のデータを結集させることです。当社は、データを通じてあらゆる組織がより良いビジネス成果を達成し、より良い製品やサービスを提供できるよう手助けできます。Snowflakeにおける仕事の大部分において、エンジニアリング、プロダクト管理、ならびにプロダクト開発に関わるその他のチームを含め、全員がこのゴールやその含意を深く理解するよう徹底されています。理解をこのように共有することにより、1つのチームだけでなくSnowflake全体に影響する意思決定を含め、すばやく決断するために必要な明確さをが得られるため、大きな成果につながります。

品質への注力

当社のミッションから期待される成果の1つは、社内でDevOpsチームをもたない企業の場合でも、Snowflakeを最大限に活用できるということです。業務の労力や摩擦を取り除くことが私たちの仕事ですが、同様に、カスタマーによる調整の必要なしに、初めからすぐに優れた性能を発揮する適切なメカニズムを開発することもSnowflakeの得意分野です。お客様からは、当社の最も価値ある特長の1つは「とにかく動くこと」だと評価していただいています。加えて、高度に統合された製品を生み出すことで、切り換えに要する手間をなくします。よく見られる適用範囲の狭い製品は、統合や個々の学習曲線の拡大縮小、さまざまな価格モデルへの対応などが必要です。すなわち、当社のミッションを実現するには、高い品質が重要ということになります。場合によってはこのようなプロダクト設計の大原則から一旦離れてみることで戦術的に私たちの仕事がやりやすくなることもあります。時おり私たちも、設定オプションを提供することで特定の課題を解決したり、カスタマーによっては前世代のデータウェアハウスから取得した使い慣れた調整パラメータを取り込むこともあります。しかし、このようなステップの効果が積み重なり、喜ばれる製品となるはずが、カスタマーが常に注意をはらわなければならない複雑なテクノロジーが1つ増えただけで終わることもあります。これは当社のミッションに反することです。

すべての部門をまたいだ連携

プロダクト設計に関し、Snowflake全体で確実に連携することが当社の成功の鍵となってきました。営業組織を含めた全社的なサポートがあればこそ、使い易さに関して「少しぐらいいいか」と妥協する誘惑に抵抗し、技法と経験則の構築にエネルギーを集中させ、Snowflakeの使い勝手をさらに向上させることができます。IT部門と緊密にコラボレーションすることで、Snowflakeのビジネスを動かすプログラムをSnowflake上で完成させるという複雑な取り組みが可能となります。マーケティングとの連携により、「セルフサービス」の技術的側面に協力して重点的に取り組むことができるようになります。ミッションに関して連携することで、カスタマーサポート部門がエンジニアリング部門に診断ツールについて尋ねる(かつそのツールを取得する)のも簡単になります。リーダーらの連携は不可欠ですが、鍵となるのはチーム内およびチームをまたいだすべてのレベルが同様に連携することです。

品質速度

当社のミッションには、高い品質を高スピードで提供することが含まれます。「高品質」と「納入スピードの速さ」とは相容れないように見えるかもしれませんが、新しい機能やプロダクトイノベーションをどれくらい迅速に提供するかという点において、品質は不可欠なものです。品質が低いと、コストがかかるインシデントが頻繁に起こります。品質に十分な焦点を当てなければ、結局はロールバックすることになり、スピードは幻となるでしょう。ここでも、品質の価値について当初から部門横断的に連携することにより、当社のエンジニアリングチームは適切に集中を保つことができます。総じて、「品質とスピードの両立」という考え方を育てることが、優れたプロダクトを構築する上で私たちを大きく助け、プロダクト開発チームをしばしば悩ませる「品質とスピードの対立」という落とし穴を回避できます。

製品を知る

これまでお話ししたような連携は、Snowflakeの価値観の担い手である2900名以上を数える従業員(2021年4月30日時点)がいなければ始まりません。しかしあくまでリストの最上位は「お客様第一主義」です。私たちエンジニアリング部門にとって、数ある関連事項の中で特にこれが意味することは、お客様がどのように当社の製品を利用するかについて、私たちが直接的に体験する必要があるということです。また、最も価値のある改善に向けて投資するためにも、製品の利用状況に関する詳細な測定も必要です。私たちは、これまでの経験から、信念をもってカスタマーに主張できることがあります。それは、データをフルに活用できる企業こそが、より良い意思決定を下し、より良い成果が得られるということです。

Snowflakeにおいて、これらすべてを実現するのがSnowhouseです。Snowhouseとは、私たちが社内で利用しているSnowflakeアカウントで、カスタマーが用いているアカウントと同じ機能を持ちます。Snowhouseは、膨大な数のデータセットを備えているだけでなく、利用状況データも測定することができます。私たちは各自Snowhouseを使用して、クエリパフォーマンスの分析から、四半期ロールアップのためのデータの準備までを行っています。その結果、エンジニアリング担当者は自ら構築している実際の製品を深く理解できます。これは業界でも例を見ない、非常に強力なメリットです。これにより私たちは、直接的な経験を設計に反映させながら、製品をより迅速に改善できます。

最も生産的にエネルギーを活用する

プロセスと現状を疑う

質の高い製品を迅速に提供する上で、ミッションに関する認識を共有することは必須条件ですが、それがすべてではありません。私たちはエネルギーを節約し、最も高いインパクトを生む可能性がある部分に集中させる必要があります。そのためにはまず、新しいプロセスを導入する際に厳しく吟味することです。コストとメリットを慎重に計りながら、新しいプロセスによって影響を受ける人々をプロセスの定義に関与させます。同様に、各プロセスが役に立たないと分かった時点でそれらを再定義もしくは排除できるようにしておきます。すなわち、学びと反復です。

当社では、問題を指摘し、既存のプロセスに疑問を抱き、改善点を提案するようエンジニアたちに求めています。しかし、このような議論もエンドレスに続けられるものではないため、「disagree and commit(反対しつつ、決まったことにはコミットする)」という方法が、プロセスの改善を提案するにあたり収穫逓減とならないようにするために有効となります。より広い観点で言えば、この方法は、設計意思決定の行き詰まりを防止するといった点でも私たちの役に立ちます。これは頻繁に行使する必要がある概念ではありませんが、使ってみれば十分に理解される概念でもあります。私たちはしばしば、不満分子(malcontent)という言葉を、現状に対して批判的すぎる人という意味で使いますが、当社のCEOに言わせれば、この言葉は自己満足に陥ることを防ぎ、私たちが思うA+の定義を更新し続け、理想に近づける生産的な態度を意味します。不満分子、大歓迎です!

プロダクト管理チームとのパートナーシップ

フルスロットルでやみくもに車輪を回し続けても、掲げた目標との間の距離は縮まりません。プロダクト管理チームとのパートナーシップが不可欠です。「エンジニアリングが物事を進める」企業の話がもてはやされがちですが、Snowflakeはパートナーシップを重んじます。なぜなら専門の分野についてはその専門家が管理すべきと確信しているからです。

もちろん、どのような専門知識や意見も歓迎されます。時おり、エンジニアリングレビューと見まごうようなプロダクトレビューもあります(これは良いことです)。しかし結局のところ、プロダクトマネージャーはエンジニアリングにとって不可欠なパートナーであり、逆もまたしかりです。

社内のオートメーションを例に考えてみましょう。オートメーションにより効率性が上がるだけでなく、エラーにも強くなります。他社にいる私の友人は、社内のオートメーションへの投資は、安定性や品質への投資と同様、新しいプロダクト機能を提供するプレッシャーにより、難しいと感じることが多いそうです。しかし、Snowflakeでは違います。当社のプロダクト管理部門は、カスタマーではない人々の価値に向けた取り組みも非常に有益であることを理解し、サポートします。概して、メリットを数週間ではなく四半期単位で測るなど、より長い視点で物事を見ることができるのは、エンジニアリングとプロダクト管理が手を組み、部門をまたいで強力に連携してきた結果だと言えます。

イノベーションを目的としないイノベーション

エンジニアリングとプロダクト管理との間の緊密なパートナーシップがもたらす最大のメリットの1つは、イノベーションを目的としたイノベーションをしないということです。代わりに当社は、どの問題を解決する必要があるかを見極め、第一原理から物事に取り組み、最先端の技術について理解しながらも支配的な考え方にとらわれることなく、戦術的に妥協することもありません。

ここでは、プロダクト管理部門からの賛同が不可欠です。このアプローチは、長期的にはカスタマーに非常にポジティブな形でインパクトをもたらす技術的ブレークスルーを生み出しますが、設計と実装に時間がかかりますが一方で、Snowflakeを世界で最も革新的な企業の1つにならしめている要因でもあります。設計に関する議論から実装に関する議論に移るころには、すでに将来への影響に関して確信を得ています。おかげで当社はプロジェクトを途中で放棄することはめったにありません。

Snowflakeでは、「done and done(訳注:物事が完全に満足いく形で終了したことの意)」という言葉がよく使われます。完了条件を明確かつ包括的に定義しておくことにより、ぬかりなくインパクトをもって機能をローンチできます。何が「done and done」なのかを知っておくことで、次の大きな仕事と過去にやり残した仕事との間で右往左往してエネルギーを無駄にすることを避けることができます。「Get it done(やり遂げる)」や「Own it(責任を持つ)」もまた、当社の価値観としてSnowflakeエンジニアリング部門の「done and done」アプローチをしっかり支えています。

納期よりも品質優先

模範的なコミットメント管理も重要です。もし正当な理由がある場合、そしてコミットメントとのずれが生じた時、ただちにその旨を伝えている限り、コミットメントを逸しても許容されます。しかしずれが生じる可能性について速やかに伝達しないことでにゴールを達成できないのは問題です。依存関係が複数のチームに及ぶ複雑なローンチの場合は特に、このアプローチは重要となります。

当社では、四半期ごとの計画プロセスにおいて、ゴールを「must-deliver(実施必須)」と「best-effort(最善努力)」の2つに区別しています。もし私たちが新しい商機に迅速に対応する必要がある場合、後者のカテゴリに影響が出るにしても、前者を犠牲にすることはありません。同様に、納期に集中することで品質に悪影響が出そうな場合は、納期を設定し直します。概して「納期よりも品質優先」は、言うは易く行うは難しです。Snowflakeでは、部門横断的な連携がこれの実践に役立っています。

小さなチームと小さなエゴ

多くのエンジニアは、小さなチームで働いている時が最も生産性の高さを感じると報告しています。当社はつながりのない小さなチームの集合体ではありませんが、マネージャーには、エンジニアが(およそ)4人のチームで作業をしていると感じられるよう、作業を編成するよう推奨しています。当社の本社があるシリコンバレーと異なるタイムゾーンにエンジニアリングオフィスを設けたときは、「小さなチーム」のアプローチに特に注意を払い、大陸をまたぐミーティングの必要を最小限に抑え、非同期的なコミュニケーション(ミーティングではなく書面を用いるなど)の推進に注力しました。

大きなエゴは犠牲を伴うものです。過大なエゴがないことは、Snowflakeの文化の1つです。当社の面接プロセスには、その人の態度を見る部分も含まれます。私たちは、たとえば、候補者が平均以上のチームプレイヤーかどうか、また自尊心が強すぎないかを評価します。エンジニアリングチームづくりで謙虚さを重視する理由はいくつかあります。謙虚さを重視して構築したチームでは、地位による権限を持たないメンバーでもイニシアチブを取り、オープンにふるまい、リーダーに進言できるとともに、誰の提案であろうと最良のアイデアが採用されるからです。

謙虚さは人を成長させます。何かを間違えたとしても、そこから学び、前進します。そしてエンジニアリング組織によく見られる驕りを回避できます。職場の驕りの兆候としては、競合他社を見下し、自らの提供能力を過大評価すること、または自身の技術が正しく、カスタマーが間違っていると断定することなどが挙げられます。こうした態度や盲信は、たいてい長期的な業績を理想とは程遠いものにします。対して当社は、謙虚さを保ち、大小の競合企業を尊敬しつつ業務をしようと心がけています。どの競合企業であろうと、公正に、しかし激しく競うことで尊敬を示し、自らのミスや成功から学んでいます。

率先して取り組む

意思決定を現場に任せる

ミッションおよびエネルギーの生産的な活用に関する連携のポテンシャルをフルに実現するためには、エンジニアリング部門のメンバーそれぞれが取り組みに意欲を感じる必要があります。これは、あるチームのミーティングの急増への対処といった小さなことかもしれませんし、会社の買収を提案するなどの大きなことかもしれませんが、当社では、改善すべき何かがあるなら、私たちのいずれかに、それをするのに最良の立場の人がいるはずだという考え方をするよう推奨しています。

鍵となるのは、意思決定を現場に任せることです。変化をもたらすメカニズムとして一般的なものは、小さなワーキンググループを設けることです。最近の例としては、コードレビューのベストプラクティスを定義すること、採用プロセスを合理化すること、社内の開発者エクスペリエンスを改善することなどが挙げられます。新しいそれぞれのワーキンググループの成功と特定のトピックへの対応により、自分たちが自身の運命を切り拓くのだという意識が深まります。そうした前向きな意識と自信は、世界クラスのエンジニアリングチームを構築する上で不可欠です。逆に言うと、多くの組織が自らの持つポテンシャルのわずかな部分しか発揮できないでいると、彼らは運命論者または悲観論者になり、「何も変わらないのに、なぜ頑張るの?」といったことを平気で言うようになります。

ヒエラルキーの障壁を排除する

皆が率先して取り組むことができるようにすることは、健全に機能する迅速な組織づくりをする上で重要な基礎となりますが、ヒエラルキーの障壁が邪魔になる場合もあります。それを排除するため、当社は次のようにいくつかの措置を講じました。

  • 当社は、責任範囲の広い幹部へのほぼ瞬時のアクセスを提供しています。これは、個々の一般社員と上級幹部との距離が縮まるという好ましい副次的効果を生みました。
  • 当社は、エンジニアリング部門とプロダクト管理部門を対象とした全員参加型の会議を隔週で開催しています。そこでのプレゼンテーションのほとんどを担っているのは一般社員です。
  • また、私たちは自虐的なユーモアを推奨しています(自虐的かどうかは別にして、ユーモアのセンスは確実に証明できるものではないので判断が難しいですが)。

Snowflakeで方向性に影響をもたらし、リーダーシップを発揮するのに、地位的な権威は必要ありません。

エンパワーメントや率先した取り組みの好例は、エンジニアリングマネージャー、プロダクトマネージャー、テクニカルプログラムマネージャー、およびUXデザイナーがいかに集結し、各分野を対象としたプランを構築しているかを見れば分かります。チームのモチベーション向上には、このレベルの自律性が求められます。もちろんこれらのチームは、お客様を第一にすること、またさまざまなビジネス上および技術上の要件をすり合わせることについて考える必要があります。私たちは数多くのレビューを実施することで、トップダウンのさまざまな指示を浸透させることと、ボトムアップのエネルギーや独創性を解放することとの間で、バランスと連携を実現しています。

信頼を築き、人を非難しない

関連するトピックに、組織内の信頼関係があります。これは一夜にして築けるものではなく、数えきれないほどの出会い、プロジェクト、状況、そして日々のリーダーの行動から育つものです。Snowflakeでは、意思決定の透明性を高いレベルに保ち、技術的および非技術的な提案について伝えることで、皆が案についてコメントし、影響を及ぼし、学びに集中できるようにしています。たとえば当社の業績管理プロセスについても、全員に詳細に説明しています。エンジニアリング、プロダクト、およびその他のレビューで用いられたスライドやメモは、毎週エンジニアリング部門の全員に配布しています。また前述のとおり、隔週で全員参加型の会議を開催し、Q&Aの時間を設けています。これらを始めとする活動が連携を促進し、情報不足に起因するエネルギーの散逸の防止に役立っています。

「非難」という語は特にネガティブな意味を持ち、ミスからの学びを阻害し、エネルギーを非生産的な行動へと向かわせます。たとえば、Snowflakeの人を責めない事後分析では、誰が何をしたか(またはしなかったか)ではなく、事実を理解することに重点を置きます。定期的に行われているこの分析は、信頼の構築に非常にポジティブな効果をもたらしています。

率先して取り組み、直接対峙する

Snowflakeでよく聞かれる言葉に、「go direct(直接対峙する)」があります。その意味は、特定の事柄を上司や別の代理人に話すのではなく、その解決を担当している人と直接協議するということです。直接対峙することが簡単ではない場合もありますが、成熟した組織にとっては必須事項の1つです。直接対峙してもうまくいかない稀なケースや、行き詰ったり、責任の所在を明らかにする必要がある場合はエスカレーションをするよう、エンジニアリング部門の全員に推奨しています。今や「エスカレーション」という言葉に否定的な意味合いはありません。

率先して取り組むという姿勢は、「私の仕事ではない」という姿勢の対極にあります。当社が推奨している取り組み姿勢は、自分の仕事ではないけれど、成し遂げる必要がある何かがある場合、可能であれば自分で行うか、責任者に直接掛け合うか、責任者が不明な場合はエスカレーションする、というものです。このような姿勢により、製品や会社について当事者として考えるようになります。「自分のことのように製品や会社づくりをしましょう。なぜならそれがあなたの製品であり、会社だからです。」これは、当社が掲げる価値観の1つです。

率先した取り組みは、当社がマネージャーに促している行動の1つです。事実、経験豊富なマネージャーから成るワーキンググループは、当社の経営に関する識見を高める上で鍵となるトピックを協議する際に題材やフォーラムを提案しています。率先した取り組みというトピックは、難しい話し合いに対処すること、約束を成し遂げること、全体的なキャリア成長を促すこと、チームのアイデンティティを確立することと同じくらい重要であると私たちは認識しています。

終わりに

適切かつ不公平感のないインセンティブは、正しい行動を促すのに役立ちます。従業員パフォーマンス評価において当社が注目しているのは、技術的な貢献(マネージャーの場合は人やチームの管理)、プロダクトの品質への対応、そして「シチズンシップ」です。最後のカテゴリは漠然としていますが、要するにSnowflakeとカスタマーのために最適化を図り、率先して取り組み、他者を助けることを意味します。スキーのジャンプ競技と同様、距離と姿勢が重要です。

私たちは、これまで説明してきた原則が、非常に生産的なエンジニアリングチームをつくると同時に、等しく重要なこととして、自然と学び、協働し、助け合える率直な環境でプロとして迅速に成長する上で役立つと確信しています。

すべてが常に意図どおりに行くかといえば、もちろんそうではありません。Snowflakeは非常に動きの激しい環境で業務を展開しながら急成長している企業です。昨日うまく行っていたことが、明日には微調整または完全なオーバーホールが必要になるかもしれません。しかし、この記事で示した基本原則を守れば、私たちはすぐさま適応し、テクノロジーの最前線に留まることができるはずです。今後の結果が証明してくれるでしょう。