前置き
モブプログラミング Advent Calendar 2018 21日目の記事です。
はじめに
今勤めている会社でモブプログラミングを行ったことがありますが、結果的に空中分解してしまったのでその経過と原因を書きたいと思います。
会社およびメンバーは?
発達障がい者を戦力として雇用している、テレビに取り上げられた特例子会社です。
発達障がい者の力を活用できる新たな業務としてのソフトウェア開発をはじめてから1年経つか経たないかというところです。
ただ、それなりに経験のある定型発達者のシニアエンジニアがリーダーとして入っている状態でした。
なお、ソフトウェア開発に関わるチーム全員ではなく、一部のメンバーは新規開発のプロダクトの保守の対応をしており、リーダーのシニアエンジニアは両方のチームを見る必要がありました。
どんなプロジェクトだったの?
9年前にローンチした情報系システムで、
- 設計書こそあれど一部分しか渡されず
- SQL直書きによる修正が必要だったけど、みんな手探り状態
- 自動化されたテストなんてしてないよ
- 改修前のコードはコメントアウトして残してね
というすごいレガシーシステムの保守開発を行うプロジェクトでした。
そのシステムを初めて触る人だけで構成されたチームで対応する状態です。
発達障がい者を中心に組まれているチームで、モチベーションにもコミュニケーションスキルにもその人の得意不得意が如実に表れるという状態でした。
なぜモブプログラミングをやろうと思ったのか
モブプログラミングは1メンバーである私からの提案でした。
提案した理由としては
- 初めて使うシステムであり、勝手がわからない
- 技術レベルもばらつきがあり、均一化を図りたい
- 心理的安全を確保したかった
- 技術だけではなく、「ホウ・レン・ソウ」やコミュニケーションの面でも
- いろいろな先進的なことに挑戦してみたかった
といったところです。
で、実際に行われることは決まったのですが、マネージャーやリーダー層の参加がなく、「ホウ・レン・ソウ」に対する解決策にはなりませんでした。
また、メンバーのほとんどが何らかの発達障がいを抱えていますが、当然のことながらコミュニケーションやチームワークが苦手な人がいたということも見落としてしまいました。
しかも、勉強会でさらっと体験したことのある私以外は全員モブプロ未経験のメンバーでした。
私ですら勉強会でさらっと体験した程度だったので、モブプロのすべての要素を実行できなかったことが痛手でした。
モブプロはいかに行われたのか
会議室を借りて、マネージャーとリーダーを除くチームメンバーで集まって進めました。
普通のモブプログラミングのように短い時間で交代せずに、集中の続く限りで一人がコーディングして、残りのメンバーが見ているという形式でした。
大体、一人2時間ぐらいはドライバーをしていたかと思います。
また、ナビゲーターもナビゲーターでコミュニケーションを取ることが上手でない人たちで、自分の担当箇所ではない以上、何もすることはないと思い込んでいるメンバーもいる状態でした。
で、結局1日に6〜7時間はモブプロにつぎ込んでいたような気がします。
モブプロはいかに瓦解したのか
きっかけは、自分の担当箇所ではない以上、何もすることはないと思い込んでいるメンバーがいたことに他のメンバーが怒り出してしまったことが原因でした。
まあ、チームワークが求められる場面で他の事してたらそりゃ怒るメンバーが出てくるのも当然だと思います。
このトラブルによって、他のメンバーから怒られてしまったメンバーはマネージャーの判断で一人で作業をする事になってしまいました。
のみならず、メンバーの中にもいろいろな不信感が広がり、最終的には全員が一人で作業をすることになってしまいました。
とりわけ、リーダーやマネージャーがこのプラクティスに対する理解がなかったというのも痛いところです。
しかも、メンバーはほぼ発達障がい者で、コミュニケーションの不得手さ以外に疲れやすさというところもありました。
そんなメンバーが1日7時間も皆で顔つき合わせてしてたわけですから、疲れてしまうのは当たり前のことでしょう。
さらに、マネージャーやリーダーが加わっていないことも痛手で、「ホウ・レン・ソウ」のコミュニケーションコストは別途発生する状態でした。
この状態では、うまくいかないことも仕方が無かったと思います。
今では
個人のペースで一人ひとりでやってます。
わからないところは聞きに行けるのでなんとかなっている感じですが、私一人が席が離れている状態なので、コミュニケーションコストはややかかっている状態です。
うまくいくにはどうすれば良かったのか
今になって考えれば、モブプログラミングは下手すると我々には難しい方法だったのかもしれません。
私からは、以下の作戦をとれば、少しはましだったのではないかと思っています。
- モブプログラミングを行う時間を長くても4時間以内にして、集中力の減退を抑える
- チームが一丸になれるようにチームビルディングを行う
- でも、たまには一人の時間も作り、その他の雑務にも対応できるようにする
- マネージャー、リーダーも参加して、「全員」で問題を解決できる体制を作る
- モブプログラミングのほうが効果が大きい局面でのみモブプログラミングを行う
- チームワークをうまくできそうなメンバーでモブプログラミングを行う
まあ、何事にも適する場合と適さない場合があって、その見極めが大事かと思っています。
いつかはモブプログラミングが有効な局面が出てくることを信じつつ、日々技術力とコミュニケーション能力と人間力を磨いていきたいと思っています。
最後に
明日の執筆者は martin-d28jp-love さんです。