はじめに
この記事は #orizing Advent Calenader 16日目の記事になります.
インターン等でチーム開発というものをかじった. そこで感じた事を絡めつつ, チームで働くということに関する話題をあたりまえ体操なことしかかけないが, 一度明文化したいという試み. 具体論は自分の経験に基づくのでIT分野でのチーム開発限定の話になります.
あたりまえ体操を列挙するだけの記事になってしまった.
チーム開発とは
ここでいうチーム開発とは複数の人間がある一つの共通した目的を持って協調して活動することを指します. なので例えば,
- グループでの課題
- 営利目的でない同好会などの組織
- エンジニアやデザイナー等からなる開発チーム
などが該当します.
チーム開発においていちばん大事なこと
認識の同期
チーム開発で大切なただ一つのことはコミュニケーションによる認識の同期です. チームである以上, チーム全体としての能力が最大限発揮できるようにチーム間の認識のずれはなるべく小さい方がもちろん望ましいです.
チーム開発で気をつけること
(なるべく)全てをオープンな文書にする
しばしば, 会議などの議事録や仕様書が文書として残り, メンバーがいつでも見れるといった取り組みをすることがあります. それだけではなく, 業務中に感じたことや知見も文書化するべきだと思っています. 文書化するメリットとして,
- 明確化
- 物事がどこまで決まっていて何が決まっていないのかがわかる
- 全員の認識を同期出来る
- 知見が体系化される
- 永続化
- 同じ議論を繰り返さないで済む
- 忘れてしまったことをもう一度質問する
- 新しいメンバーに対して説明をする
があります. 文書化によって一時のclosedな議論をopenで永続なものにすることができます. 質問についてもDMで質問して終わり, 話を聞いて終わりではなくなるべくその回答を公開, 周知するようにすべきです.
GitLab社
GitLab社は特定のオフィスを持たず全社員がリモートワークの組織です. 徹底した文書化を掲げ, ドキュメント文化が高度に発達しています.
リモートワークのいま学びたい、GitLab Handbookと徹底した文書化への狂気 - Qiita に抜粋されていますが, コミュニケーションに対するメソドロジーが数多く明文化されていて学ぶべきところが多くあります.
質問は相手の労力を最小限に
同期コミュニケーションは, タスク中に割り込む形で発生し, かつ一定のコストがかかります. なのでそのコストはなるべく小さい方が望ましいです. そのため, whatよりは対案を提案する等してyes noで答えられるような質問にすることを心がけるべきです. 例えば, 現在のタスクが終わって今することが無い時にリーダーに「タスクが終わり, 現在手が空いています. 何をすべきでしょうか」よりは「○○が終わったので次はXXを行おうと考えているのですが, 問題ないでしょうか?」の方が望ましいと考えます.
{やる, やっている}ことを明示する
タスクを始める前には, これからどんなことをやろうと思っているかを伝えるなり書くなりして, タスク中は大原則として範囲外の事をしない. タスク中もなるべく作業を分割して現在何をやっているのかを伝え, タスクが終わったらその旨を報告すべき. あたりまえだけど意識していないと良かれと思ってついやってしまいがち. チェックボックス用意してチェックしていくとかはよくやっている.
タスクと依存関係
あまりここらへんの話をしすぎるとプロジェクトマネジメント論みたいになるので避けますが, 当たり前なことだけ挙げると, asigner側は依存関係があるタスクを同時に複数人に割りふらないようにしましょう. asigneeの考えることが増えるので. また, 片方のタスクが質問等で待ち時間が発生した時に暇にならないようにasigneeは依存関係のないタスクを常に2つ以上持つようにしましょう.
同期コミュニケーション
完全に非同期なコミュニケーションの課題が2つあるように感じられます. カジュアルな会話と即時的なコミュニケーションです.
議論のスコープが浅く広くなる非同期コミュニケーションと違い, 同期コミュニケーションではより刹那的なコミュニケーションが求められ, 非同期コミュニケーションではこの部分がカバーされていないように思います. そこでやはり必要なのが音声通話やビデオ会議等の同期的なコミュニケーションです.
同期的コミュニケーションは小規模であればあるほど有効に働きます.
Gather.town
余談だが, 研究の中間発表のポスターセッションでは Gather Town が使われた. 音声通話に距離の概念を取り入れたプロダクトであり, 発表前後にいろいろな人のところに行って雑談をしていた.
もくもく通話
アプリ開発の際は作業時にメンバー(リーダー, 友人と業務委託者)とdiscordで通話を繋ぎながら, 場合によっては画面共有やペアプログラミングをして開発をしていた. これが割と体験がよく, 雑談をしたり気軽な質問をしたりされたりしながら作業出来る. 同時に作業しているのでPRが一瞬でレビューされてマージされるのも体験が良かった.
作業の可視化
プロジェクト管理ツールでは誰が今どんなタスクをやっているか, SlackやDiscordでは誰がオンラインかという情報が得られます. しかし, これは限定的な情報であり欲を言えばリアルタイムで誰が具体的に何をどれくらいやったかが可視化出来るツールが欲しい.
思ったこと
"作業の可視化" について, 作業だけでなく生活でも, 自分は
- 他人の生活リズム
- 今どんなことをしているか(「何時から何時までXXXをしていた」とか)
- 最近の趣味嗜好(マイブーム, 好きな音楽とか)
が教えたいし聞きたいと思っている方なのだけれど, 他の人はどう思っているか知りたい.