SkypeのプロダクトマネージャYee Lee氏はFacebookでのコードの出荷の方法を詳細に記したメモの膨大なコレクションをまとめた。Facebookは開発者主導型の文化を取り入れている。Facebookは2つの大きなチームを中心に組織化されている:エンジニアリングチームと運用チームである。プロダクトマネージャとエンジニアの比率は平均して1対7から1対10の間である。すべてのエンジニアはブートキャンプ型訓練を体験し、その間にバグを修正し、シニアエンジニアによる講義に出席する。
”プロダクトマネージャはここでは本質的に必要ありません。” というのはエンジニアの言葉である。エンジニアが途中で仕様を修正することができ、作業の計画を並べ替えることができ、いつでも新しい機能のアイデアを加えることが可能です。 [...] とはいえ、Facebookの文化がプロダクトマネジメントのプラクティスを真に受け入れていることは明らかで、プロダクトマネージャの役割がどういうわけか無視されたり省かれたりするというようなことはありません。
Yee氏の意見では、この企業の文化は誰もがそのプロダクトに対する責任を感じることができるようにできているようだ。鍵となる影響の大きな要素はエンジニアリングマネージャと本当の意味で素晴らしい関係を持つことである。
エンジニアはJavascriptからデータベースコードまで機能全体をエンジニアだけで担当する。エンジニアはテストやバグ修正、自身の作業のリリース後のメンテナンスにも責任を負う。Facebookに品質管理(QA)はあるが、オフィシャルチームとしてではない。実際には、すべての変更に対して義務としてコードレビューがある。Facebookの従業員は次のように付け加える:
ほとんどのエンジニアはバグのないコードを書くことができます。多くの企業ではそうするインセンティブがない、というだけなのです。品質管理部門がある場合には、そこにコードを投げて、エラーを見つけさせるようにしがちです。
Facebookは週単位のリリーススケジュールを採用している。コードはFacebookが利用する60,000以上のサーバに順に展開されていく。その展開は9つの段階に分割されていて、最初の段階はたった6台のサーバから始まる。
プロジェクトは自発的に始まる。ある人が自分のアイデアをもとに活動するようロビー活動を行い、エンジニアはそこに貢献するかどうかを決める。
運用はFacebookの成功にとって明らかに最重要である。
運用チームはまったくよく訓練され、とても尊敬されていて、そして、よくビジネスのことを考えている。彼らが持っているサーバの測定指標は普通のエラーログや負荷、メモリ利用量の統計といったものだけではない — そこにはユーザの挙動も含まれる。
Facebookは今までで最もスケーラブルなWebプラットフォームの1つであり、1日に400億ページ以上も提供する。偶然に、また非常に優れた技術に主導された文化なしにそのような状況に到達することは確かに考えにくいだろう。