この記事は BeProud ではどう仕事しているかの3部構成シリーズの2部目。github のZach Holman さんが書いて頂いた 「 How Github Works 」シリーズの BeProud版。1部目は「 Hours are Bullshit 」の解説の「 BPで働くのがどうか (How BeProud Works) 」でした。今回は 「 Be Asynchronous 」という話の解説。
Communication
“コミュニケーション(英: Communication、交流)とは、複数の人間や動物などが、感情、意思、情報などを、受け取りあうこと、あるいは伝えあうこと。”
“コミュニケーションの定義は多種多様であるが、広義には、記号などの何らかの因子の移動を伴う、 ある分けられる事象間の相互作用の過程を意味している。”
From Wikipedia
片道のコミュニケーションのプロセスでは、情報のソースからメッセージを受信側に発信しようとします。メッセージを発信する前に受信側が分かるような記号に変換します(普段の会話の場合は自然言語に変換します)。変換後に、記号を発信して、受信側はメッセージを受け取って、記号の解釈を行えます。
そして、受信側がメッセージを解釈した後、必要なアクションをしたり、情報を集中したりしてから、返信をします。
Be Asynchronous
Asynchronous は「非同期」という意味。仕事の非同期なやり方ってそもそも何か? まずは、「同期」コミュニケーションを説明します。 同期コミュニケーションの場合は、メッセージの発信側は仕事を進めるには、受信側の返信を待たなくてはいけない。なぜなら、返信に仕事に必要が情報が含まれます。同期コミュニケーションの問題は受信側が返信できるまでに時間かかったり、受信側の作業が遅かったりしますので、発信側の待つ時間が多いです。この待つ時間は無駄です。そして、発信側や、受信側はこの時間は無駄と何となく分かっているので、受信側が早く返信をするために、受信側に圧力をかけて、適当な返信が出てくるのが多くて、さらにコミュニケーションが発生してしまったり、仕事の質が下がったりするのも無駄になります。
それでは、「非同期」コミュニケーションは何でしょう? 非同期は発信側と受信側が仕事を平行にできる方法です。非同期コミュニケーションの場合は、仕事Aをしている発信側がメッセージを発信した後に、他に進める仕事Bに切り替えて、進めます。受信側は現在の仕事Cの切りがあった時に、発信側のメッセージを受け取って、処理して、返信を返します。そして、発信側は仕事Bの切りがあった時に、受信側の返信を受け取って、仕事Aを進めます。
こういう方法で、他人の作業を中断させなくてもいいし、発信側と受信側が時間を効率的に使うこともできるし、それぞれ時間の使い方は自分で管理できる。
でも、それは みんなが既に使っている Email に似てません? と思う人もいると思います。 一般的にいうと Email は非同期なコミュニケーション方法ですが、非同期なコミュニケーションはあくまでも、コミュニケーションをする人たちの認識の上にコミュニケーションを取る方法だと思います。「お前、メールを返事しなさいよ」ってフォローが必要な場合があるでしょうけど、返事がすぐ来ることを期待すると、非同期コミュニケーションをやろうとするといらいらするばかりです。適切なタイミングで返信することに対して、一緒に仕事をしている人たちの信頼がある程度必要と思います。
Chat
気づいたと思いますが、発信側がメッセージを送った時に受信側が同時にメッセージを受け取らない。仕事の切りがあった時に、メッセージを処理するので、メッセージの内容を受信側が受け取るまで、どこかに残す必要があります。それはシステムの役割。メッセージのおく場所として、チャットや、Emailや、チケット管理や、タスク管理システムを利用する。チャットは一般的に使えるもので、チケット管理システムを利用しても、チャットでコミュニケーションを集中するのがいいですね。
チャットを使うと、同僚にメッセージを書けば、お昼を食べに行っても、戻る時に、チャットのログを見れば、仕事をそのまま進められる。
Meetings are f**king toxic
Zach さんが書いていただいた内容はもともと 37signals という会社の ブログ の Meetings Are Toxic という記事を参考している内容です。
直接話す場合は、返事がすぐくるけど、考える時間はあまりなく、会話に参加する人数分の時間も取られちゃう。ミーティングの場合、ミーティングが1時間だったのに、1分や5分しか貢献していない参加者や、まるまる参加しなくてもいい人たちが出てきます。しかも、たくさんの人が集まっているのに、何も決められなくて、何も解決していない場合も多いです。
もし、どうしてもミーティングをやらないといけない場合は、下記のことを勧めます。 話が進まないミーティングをすぐ止める
- 時間を厳しく制限する
- なるべく短くする (30分がおすすめ)
- 抽象的な話をやめ、具体的な話をする
まとめ
非同期コミュニケーションとミーティングを避けるのが時間の効率をアップするために、非常にいいアイディアと思います。ソフトウエア開発をする時に、時間がボトルネックになる場合が多いので、非同期コミュニケーションを使えば、効率があがって、仕事が全体的に速くなるのが間違いない。例の仕事Aは優先高くて、仕事Bと仕事Cがどんだけ遅くなっても、速く終わらせたいのであれば、非同期に合わないでしょう。非同期の考え方は短期で仕事が遅くなっても、長期で仕事が速くなればいいことだというのが大前提です。
ミーティングを避けると喜ぶ開発者が多いでしょう。固定な時間で仕事を中断させると自分で時間の使い方をうまくコントロールできなくて、上に述べたことで無駄が多くなる。ただし、非同期なコミュニケーションや、ミーティングをやらないのが、次にどうするか、どういうものを作るんだなど、仕事が決まった限り働きます。何をするかというのがきちんと決まってないとうまく進まないと思います。クリエイティブなことをやったり、企画だったり、マネージメントをしている人はミーティングや、直接話す場面を避けることが出来ないでしょう。