ITと哲学と

IT系エンジニアによる技術と哲学のお話。

社外で初めてモブプロやってみたら辛かったのですごく学びになった話

モブプロやったことないので、流行りに乗って体験しようとしたら、想像以上に辛かったというお話です。

TL;DR;

目の前のプログラムで解くべき問題に全く集中できなかった辛い。

モブプロとブレストは似て非なるもの。マインドを変えないとできないかも。

よい学びだった。

前提

自分はモブプロ初参加。 チームに参加する人たちとはほぼ初対面。

なんかフワフワ機能を作ってたけど、出来上がったコードくそだったよ辛いなんでや

まずはサクッとFizzBuzzでもやりますかーと始めました。

モブプロ未経験者が多かったので、と、とりあえず始めましょっかーってことでプログラムを書き始めたわけです。

進めるときにずっとおもってました。

なんかこう、普段の何倍もの時間をかけて進み、かつクソコードになっていく。。。って。。。

なんでや。

辛かったこと

口頭で伝えるのむずい

コード書けたら早いんですけどね。 うまく説明できませんでした。

事前に設計するなりして認識が揃っていると違うのかも。

今回は事前設計なんてなかったので、説明が難しかった。

人間系の問題に配慮するあまり、プログラミングで解くべき問題に集中できない感覚

初対面な人たちの集まりなわけで、お互いのことは全く知りません。 その中でチーム作業をするので、結構お互いに気を使って進んでいきました。

せっかく参加しているわけですし、どうしたらみんながやりやすいかな?というのが気になってしまって、コーディングに全然集中できなかった感覚が残りました。

これって生産性あがってるのか?

TDDで難しいことが、より大きな問題として影響してきた気がする

うちのチームはTDDで進めました。

TDDってテストのstepをどう刻むかって結構難しいというか感覚が大事な気がします。

TDDでのstepは、自分の感覚で、自分が自信をもって進められる幅で進めていこうということだったはずなので。

モブに当てはめると、モブが自信をもって進められる幅ってことなんだろうけど、他の人たちの力量もわからなかったので、なんか数倍難しい気がします。

その結果、細かくしすぎて必要以上にテスト書くような形になった気がしたし、時間が無駄にかかった感覚を受けました。

なんかちがうなーこれ。。と。

あと、リファクタへの意識が低かったので、ひたすらアドホックに機能を継ぎ足してコード書くような状況になってしまったのもよくなかったです。

TDDはテスト先に書いたらTDDなわけじゃなくて、Red=>Green=>Refactorといサイクルを回すものなのですが、そこが意識できなかった。

テスト通ったらみんなで逐一拍手してたんですが、テストじゃなくてRefactorが終わったら拍手するサイクルのほうがいいのかも。

拍手したらリズム止まって、じゃあ次何テストしようかってなるので。

いやいやなんか設計おかしいぞこれ。。。と思っている人も結構いたと思うけど。。。

メンバーの一人が、そもそも設計これ見直しましょうよって流れぶったぎって言ってくれるまで、変な方向にひたすら進んでいた気がします。

なんか設計変だなー変な方向に行っちゃってるなーという感じがあったのですが、強く言い出せず。

会話のなかで方針転換するにはどんな発言をすればいいんだろう。。ということをずっと考えていたので、疲れました。

考えたこと

解くべき問題によってはモブプロはそもそも合わない説

2セッション目はちょっと挑戦であまりみんなが触ったことのない言語を選択しました。

するとコンパイルがそもそも通らないよーどうやったら通るんだーという状態に。

コンパイルを通すための方法って一意に決まるわけで、そのタイプの問題を解くためにはモブプロはあまり合わないのでは?と感じました。

というのも、各々が平行して調べて、各々の環境で試して、うまくいったらその人の方法を採用すれば事足りるわけです。答えは1つなので。

これに対してモブで進めていくことに利点があるとは思えませんでした。

使ったことないライブラリーの理解とか、そんなのもモブでやるよりは各々で試すほうが良いのではないかな?どうなんだろう。

逆に、実現方法はいくらでもあって、その中からどれを選択するか?といった課題であれば向いているのかもしれません。

1セッション目にチャレンジしたFizzBuzzもそういう意味ではみんな頭の中に大体実装あるでしょうし、向いていなかったのかも。

ブレストとモブプロは似てるけど正反対のものなんじゃないか説

ブレストは意見が出やすいように、人の意見を否定するの禁止というグランドルールで行われることが多いですよね。

僕はブレストいっぱいやってきているので、そっちで育ってきたわけです。

モブプロはそれでいいのだろうか?という疑問が。

意見をぶつけ合うなかで良いものにしていくのが必要なのかもと感じました。

ブレストみたいに、その意見もいいねーいいねーだとうまくいかないです。 コードがカオスになる。

そもそもブレストでは、発言しにくくならないようにという配慮で、意見の否定は禁止していたりします。

ですが、モブプロでは意見の対立を認めないといけないのかも。 そのうえで、対立があっても発言し続けないと、モブの人はバリューが出せません。

このためには、あくまでコードの否定であり人格否定ではないんだようという、1段階成熟したメンタルモデルが各々に必要になると思いました。

全員初対面でこれをやるのはちょっとつらいわ。。。

というか、普段会社のメンバーでじゃあそれできるの?と言われると、すぐには自信ないです。。

リーダー的な役割必要なのかも?

意思決定が難しかったので、リーダー的な役割はあってもいいのかもと思いました。

なんかお互いに遠慮しあってしまう雰囲気があり、なかなか物事決まらなかったんですよねーなんか。

どうします?うーーん。。。どう思います?的なやりとりが結構多くなってしまった印象でした。

エディタとインタフェース

各自の端末でできるようにしたほうが絶対良い。これは間違いない。

今後の展望

テーマをもうちょっと考えて、普段一緒に働いているメンバーでモブやってみたいなと思いました。

あと、できたらモブが成功しているチームに見学とか行きたい。 現状では上手くいくイメージがなかなかできていない。

おわり。