ナイスビア珍道記

ナイ珍って呼んでね

モブプログラミングという働き方 #モブプログラミング

qiita.com

モブプログラミングAdvent Calendar 2018の16日目の記事です。

昨日は id:scrummasudar さんの「1Dayインターンシップでモブプログラミングしてみたよ!」でした。

今日はTDD+モブプログラミングでワイワイする会です。
そっちのことを書こうと思ったのですが、長くなってしまったのでこちらに書いておきます。

さて今さらですが、2017年の4月、Global Scrum Gathering San Diego 2017に行くついでに、例のモブプログラミングの動画で有名なHunter Industriesを訪問したときの話をまとめておきます。

f:id:miholovesq:20170413115927j:plain
日本からYasunobu KawaguchiとMihoが来るよ、のメモ

例の動画

www.youtube.com

www.youtube.com

モブプログラミングって、ペアプロの進化系で、3人以上でやるプログラミング手法でしょ? とお思いの方に、もっと広義の、モブプログラミングという働き方を紹介したいと思います。

Hunbter IndustriesのMob Programming

f:id:miholovesq:20170413103703j:plain
Hunter Industries社の受付棟

Hunter Industriesについて

Hunter Industriesは、サンディエゴから車で小一時間の郊外のサンマルコスという町にある、灌漑製品のメーカーです。ゴルフ場のスプリンクラーとか、農業用散水装置とか、そういったものを作っています。サンマルコスはパロマー・コミュニティ・カレッジとカリフォルニア州立大学サンマルコス校がある一大教育地域で、Hunter Industriesは町一番の雇用を生み出しているそうです。企業城下町みたいなもんなのかな?と思って話を聞いていました。

ソフトウェア開発部門

いかにもメーカーらしい工業団地のような広い敷地に社屋が散らばっていて、とてものんびりした環境でした。その一角にある平屋の建物がソフトウェア開発部門で、内部は2016年版の例の動画に写っている光景そのものでした。2012年の動画では1モブしかいなかったのですが、今はソフトウェア開発部門全体でモブを実施し、すべてのプロダクトがモブによってできているそうです。*1
モブは仕事のある場所とそこに集まる人を指していて、気象条件から灌漑設備の利用を最適化するソフトウェア(たぶん)を作るモブや、スプリンクラーの使用状況をモニタリングするシステム(たぶん)を作るモブなど、言語など要素技術も異なるモブが6つありました。1モブにはPCなど一式の他に、80インチのモニターが3枚と、ホワイトボードなどが配置されていました。
チームメンバーは1つのモブにいることもあるし、他のモブに移動することもあります。部門全体でスキルトランスファーとドメイン知識や技術力の底上げがされる仕組みになっているのです。
ちなみにどのモブも、スクラムのようなタイムボックス型のプロセスは使っていませんでした。ソフトウェア開発プロセスとしてのカンバンを厳密に採用しているというわけでもなく、Todo/Doing/Doneを見える化して1個流しをする、ぐらいのようでした。

採用

わたしの興味は、こういった状況を成り立たせている組織文化にありました。
リアルな採用はコアだから秘密、ということで、インターン採用について説明してくれました。
とはいえ、アテンドしてくれたRichさん自身も入社して半年ぐらいだそうで、本番の採用もそんなに変わらないよ、とのことでした。

f:id:miholovesq:20170413135146j:plain
ワードクラウド

これは、採用の時に使うワードクラウド(のイメージ)だそうで、こういったキーワードに対する興味から切り口を見つけていくそうです。

f:id:miholovesq:20170413135857j:plain
インターン用のジョブディスクリプション

これは、実際にインターンを募集したときのジョブディスクリプションだそうです。
モブで働いていると、業務範囲を線引きできないんでしょう。こういった価値観に対して肯定する人を採用するのだそうです。
ざっと訳してみるとこんな感じです。

  • 心の知能指数(チームに合うこと)
    • 他の人の学習の機会を許すこと
    • 他人の成功のために協働すること
    • 他人に対して適切な態度をとること
    • 他人を導く力(コミュニケーションの一部でもある)
  • コミュニケーション
    • 考えを説明できること
    • 良い質問ができること
    • 聴く力に優れていること
    • 冒険し、質問し、失敗する等を怖がらないこと
  • 技術適性
    • 概念を理解しようとすること
    • パターンを見つけること
    • コードを読めること(特定の言語によらず)

いいこと書いてますねぇ…(しみじみ)。
米国で働いたことがないのでわかりませんが、米国の企業のジョブディスクリプションで他にこんなのあるんですかね?
もっと仕事の範囲がしっかり定められているものだとばかり思っていました。*2

人事評価

人がプロジェクトにもプロダクトにも固定されず、究極の自己組織化によって組織が成り立っているように見えました。
ではそこでどうやって評価をしているのでしょう?

f:id:miholovesq:20170413134531j:plain
ふりかえりチャート

アテンドしてくれたRichによれば、半年に1回、1on1でメンターと面談をするそうです。メンターは自分が信頼できる誰かを自分で選ぶんだそう。自分より立場や年齢が上でも下でもいいし、相互である必要もないそうです。
上の写真は、1on1でメンターと会話をしながら描くチャートのサンプル。描きながら説明してくれました。
まず上部(赤で囲った部分)に半年分のタイムラインを書きます。そこに、イベントややったことなどを思い起こしながらプロットしていきます。
次に真ん中(青で囲った部分)に、タイムラインを踏まえて、自分を後押ししてくれた出来事と自分を引き止めてしまった出来事を書き出します。この例で出ているのは前者が「引っ越しをしたので通勤時間が短くなった」、後者は「うるさい*3」とかです。
それを踏まえて最後に、下部(オレンジで囲った部分)にS.M.A.R.T.*4、つまり、具体的で測定可能、達成可能、関連性があり期限のあるゴールを設定します。たとえばここで例として挙げられているのは「IPRに関する本を2017年の10月までに3冊読む」とかです。
1on1はこのゴールを設定するところで終わり、それをDirectorに提出します。Directorとしては「なんでこの人は本を3冊読むんだろう?」と思っても、そこは彼らを信頼し、その達成度によって評価を行うとのこと。
この面談の中身は面談をされる側が公開したければ公開してもいいし、まったく非公開でも良いそうです。
信頼が醸成されている職場なのだなぁと感銘を受けました。

半年に一度のふりかえりのシーズン、Richが「ちょうど先週やったんだ」と見せてくれたのがこれでした。

f:id:miholovesq:20170413141447j:plain
マーケットプレイス

これはマーケットプレイス(市場)と言われていて、各メンバーが、仕事に関わる得意なこと、仕事に直接関連しないが得意なこと、教えてもらいたいこと、の3つを書いて貼り出すのです。これによってお互いを知り、お互い学び合う、教え合う、という文化が醸成されます。

ということで、以上の話はこのイベントで話した内容とほぼ同じです。

www.eventbrite.com

むしろよくまとまってるサイトがあったのでリンクしときます。

su-kun1899.hatenablog.com

昔からあったMob Programmingがなぜ今?

そもそもXPのプラクティスとしてPair Programmingというものがあり、その派生形としてThought WorksのMoses M. HohmanとAndrew C. Slocumによる2001年の論文"Mob Programming and the Transition to XP"で紹介されているのがMob Programmingです。
なので、普段から3人以上で集まって作業している人たちにとっては「なぜ今?」という疑問が浮かぶのも無理はありません。
今再注目されているのはWoody Zuillが提唱しているもので、Woodyは今年の7月にもAgile Japanで講演しています。
その時のレポートがこちら。

takaking22.com

わたしはAgile Japanには行かなかったのですが、翌日行われた小さなミートアップで、Woodyと話をすることができました。
そこでわたしが彼にした質問がこれです。

「モブプログラミングというプラクティス自体はもともとありますよね? Hunterにも行って見てきたのだけど、6モブもあって働き方も素晴らしかったです。気を悪くしないで欲しいのですが、あなたの提唱しているHunter由来のモブプログラミングは、もともとあったモブプログラミングとどう違うんですか? なぜ大文字のMob Programmingなんですか?」

「やってることは同じさ」と彼が話をしてくれたのは、こんなことでした。雰囲気を出すために意訳でお伝えします。(わたしの英語力で聞き落としているところがないことを祈るけど。まあ大丈夫でしょう。)

「Hunterの昔の動画は見たかい? 1モブの時の。あのチームは寄ってたかって*5仕事をしていた。それがすごくうまくいっていたんだ。そしてそのチームは"Mob Team"と呼ばれていた。あのチームのやり方がいいから他のチームでも真似しようとなった時に、あの"Mob Team"のやり方を"Mob Programming"って呼ぶようになったんだ」

はあ! 目から鱗。 あのチームが「モブチーム」じゃなかったら別の名前が付いていたかもしれないのかー。という話でした。

ちなみにWoodyはHunterを去り、今は跡を継いだDirectorのChris LucianがHunterのMob Programmingを伝承しています。Chrisが基調講演を務めるのはこちらのイベントです。

2019.scrumgatheringtokyo.org

ソフトウェア開発部門のDirectorであるChrisは「Managerをやめたんだ」と言っていました。Directorと名乗っているのは、おそらく従来型の管理者としてヒエラルキーの上に立つのではなく、責任者として組織の方向づけをするのが彼の役目だと理解しているのだと思います。詳しくは聞きませんでしたが、創業30年以上の企業だし、他部門との調整に苦労しているところもあるのだと思います。"クソの傘"としても働いているのだろうと推測します。
これはまあわたしの想像なので、どんな話が聞けるか楽しみですね。全然推量が間違っていたらごめんなさい!*6

残念ながらチケットは既に売り切れですが、興味のある方は当日はハッシュタグ#RSGT2019 hashtag on Twitterを追ってみてください。

明日はchihiroさんの「モブプロでFizzBuzzした話」です。

*1:一部の小さな組み込み系は工場でやってたりするそうだけど

*2:だから珍しいのかな?

*3:何がうるさかったんだっけな

*4:Specific/Measurable/Attainable/Relevant/Time-Boundの頭文字

*5:"mob"は自動詞で「群がる」の意

*6:ポジティブな方向に間違っていますように!