UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【システム開発】様々な国と地域の人たちで構成されている大規模プロジェクトの進め方

JSConf2021の最後に発表された元Chromium開発者の@kinuさんの基調講演が非常に印象に残っていて、これを忘れないように書き起こしておこうと思う

内容はChromiumの開発組織におけるプロジェクトの進め方というもの

Chromiumは様々な国と地域の人たちで構成されている大規模なマルチプロジェクトである

このような環境でどうやってプロジェクトを進めていくかのお話し

彼らはきっと一流であろうが、魔法を使っているわけではなく、我々と同じように苦労と工夫をしてプロジェクトを進めているというところに大変興味をもった

進め方の基本

進め方の基本は以下の2つとのこと

  • プロポーザルを作る
  • それをシェアする

シンプルだが、とても注視されているとのこと

プロポーザルについて

Chromiumはプロポーザルを書いて、それを基に議論を繰り返す

プロポーザルはある意見(一人のこうしたいという気持ち、新しいニーズ、もやもやしたもの)からだんだん形をつくっていくが、そのときに大事なことが3つある

  1. 誰が利益を得るのか(Who)、何をするのか(What)、どうしてなのか(Why)を明瞭にする
    What→Whyは自動的にはでないので深掘りする
  2. ゴールまでのプラン(How)を示す
    プロトタイプやデモをつくるもいいが、つくりすぎても手の届くところで止まりがち
    今までできないことをできるようにすることのワクワクを大事にする
    <やり方>
    ・自分がプロトタイプできるところ深掘りする
    ・できないところは一旦そのままにして、誰とどうやってやればうまくいくのかを考える
  3. どうやってそれを維持するのか
    維持のためには運用コストを考えなければならない 物事を考えるときは楽しい面と暗い面がつきもの
    ただ、暗い面をあれこれ考えるばかりではなく、暗い面を楽しい面に変えることができないかを常に考えながらやることが大事
    これもプロジェクトを維持していくためには必要な作業

より複雑なケース

明確なソリューションがない場合は、ブレインストーミングとその収集をする

ただ、1回のブレインストーミングでうまくいくことはなく、複数箇所でブレインストーミングが必要になることがほとんど

このとき個々にやって収集して議論してもうまくいかないので以下の2つが必要

  1. その問題を所有して整理するオーナーを決める(解決方法は持ってなくて良い)
  2. どういうプロセスで議論するのかを決める

議論のコツ

議論のコツとして2つが紹介された

North star
海を航海しているときの北極星のように、議論がバラバラに進まないように、とりあえずみんなが目指すべき大きな目標を定める

同意しない人が一人もいない、シンプルで強い目標がよい

忙しいとみんな空を見上げるのを忘れてしまうので議論するたびにリマインドするとよい

Decision tree
物事を決めるときに、はっきりと決めておく
そうすることで、悩むことがなくなるし、物事の落馬がなくなる

意思決定は一度きりではなく、合意のスナップショットが何度もあるイメージ

意見が違う人がたくさんいてなかなか決まらない場合はスモールルールに戻るとよい

例えば

  • 決まった時間やってみて、その結果をもちよって話す
  • 常にプランBを検討しながら進める

など

コミュニケーションについて

とにかくオーバーコミュニケートする

必要だと思ったらなんでも書き残す

必要だと思ったときに、必要になった人が誰でも見返せるようにする

コツ

  • オーバーコミュニケートが大事だということをオーバーコミュニケートする
  • すべての情報の元になる場所を作る
  • 知っておいたほうが良いと思う人たちはとりあえずCCにしておく(Always-cc

ただし、

  • オーバーコミュニケートはオーバーミーティングではない
  • Always-ccは、すべての人が議論に参加しなければならないというわけではない
  • 誰でも情報がみれるとは、すべての人が知ってなければならないというわけではない

コミュニケーションがうまくいってない場合

心がけること

  • 返事できないと返事する
  • この人に聞いたほうがいいかもと言う
  • はっきり頼む
  • そのままにしない

個々の意見が出ず、はっきりしないときは「マクドナルド理論」がよい

マクドナルド理論>
ランチで迷っているとき「マクドナルドどう? 」ととりあえず提案をする
→解像度が上がって意見がいいやすくなる

これくらいコミュニケーションがはっきりしてないとプロジェクトがスケールしない可能性がある

コミュニケーションで大事なこと

どのような場面でも、どのコミュニティでも「心理的安全性」が大事

どんなプロポーザルでもフィードバックや質問を歓迎し、それらを真摯に受け止めるべき