リリース(Shipping)が難しい理由
- 多くの人は「リリース」は簡単なことだと勘違いしているが、実際の基本状態は、リリースが遅延したり中止されたり、あるいは完成度が低くて問題が発生するケースが多い。
- コードをすべて書き終えたり、Jiraチケットをすべて解決したからといって、自動的にリリースされるわけではない。リリースのためには、誰かがリードの役割を担わなければならない。
- リリースは最優先課題であるべきだ。ユーザー体験(UX)に過度に集中すると、かえってリリースが遅れる。
- プロジェクトを成功裏にリリースするには、技術的なリーダーやDRI(Directly Responsible Individual)が必要だ。こうした役割を担うエンジニアがいるチームは、成功確率が高くなる。
「リリース」とは何か?
- 多くのエンジニアは「リリース」を単なるコードのデプロイや機能の有効化だと考えるが、大手テック企業では定義が異なる。
- リリースとは、社内の重要人物が「リリースされた」と信じたときに成立する。VPやCEOが満足していなければ、コードがデプロイされていても実際には「リリース済み」ではない。
- プロジェクトがユーザーにとって大きな成功を収めたり収益を上げればリリースされたといえるが、ユーザーの反応が良くなくてもリーダーシップが満足していればリリース済みと見なされる。
コミュニケーションの重要性
- プロジェクトの目標が何なのかを明確に把握しなければならない。目標によって、進め方やコミュニケーション戦略は変わる。
- 会社のリーダーシップは、プロジェクトの技術的な詳細をほとんど知らない。そのため、信頼を維持するには、正確な見積もり、問題解決、そして適切なアップデートが重要になる。
- 信頼を維持する方法:
- 過去に成功したリリース経験があると有利。
- 自信のある態度を示すべき。
- NASAのミッションコントロールのように、専門的かつ簡潔にコミュニケーションすべき。
- 日次または週次のアップデートスレッドを通じて、能動的に情報提供すべき。
本番デプロイの問題解決
- ほとんどの問題は、予想外の細部から発生する。たとえば、Memcachedのブロックサイズの問題やトラフィック予測の誤り、機微なユーザーデータの問題などがある。
- 問題を素早く解決するには、システムに対する深い技術的理解が必要だ。
- 想定される問題に素早く対応し、その問題が深刻かどうかを明確に説明できなければならない。
今すぐリリースできるか?
- 今すぐリリースできるかを自分に問いかけることが重要だ。もしできないなら、何を変えれば可能になるのかを考えるべきだ。
- 機能フラグとステージング環境を活用し、できるだけ早くフィードバックを得られるようにすべきだ。
- リリース直前には技術作業を減らし、問題が発生したときに素早く対応できるよう準備しておくべきだ。
要約
- リリース作業は非常に難しく、最優先課題にしなければならない。
- リリースの意味は単なるデプロイではなく、リーダーシップチームが満足することだ。
- リーダーシップチームの信頼を得ることが、成功するリリースの核心だ。
- 問題を予測し対処できるバックアッププランが重要だ。
- リリース直前には開発作業を減らし、問題解決に集中できるようにすべきだ。
- 常に「今すぐリリースできるか?」という問いを投げかけるべきだ。
- 恐れを捨て、勇気を持つべきだ。
2件のコメント
Hacker Newsのコメント
印象的な意見を抜粋してみました。
「ある人たちは、単に自分たちのためだけの技術的な縄張りを築いたり、どの階層であれ自分より上にいる人たちから称賛を受けたがったりします。これが『ゲームの進み方』です。このゲームをすることは、結局は組織の死につながり、そもそも企業ライフサイクルが存在する理由もまさにそこにあります。最終的に、こうした人たちは組織を内側から壊し、本当に意見を持っている人や、実際に物事をやり遂げるために最適化している人を押しのけてしまいます。」
「ゲームに勝つ方法は、ゲームをプレイしないことです」