今日は、チーム9人全員で「プライベートメソッドのユニットテストは書くべきなのか? ディスカッションができた」記念日
今日はとても素敵な一日になりました。
私を含めたチームメンバー9人が、一つの技術的な話題に対して30分話し合う会を開けた日。
何より嬉しかったのは、この会そのものが、メンバー間でのやり取りからほぼ自然に出てきたことなんです。
回想:本当に「スモール」だった時期
私の今のチームは総勢9名のチームなのですが、大まかに分けても4種類くらいののサービス(検索から予約、管理画面も。)を担当している、プロダクト的にはかなりマッチョなチームです。
これらのサービスはどれも「似ている」のですが、歴史的にバラバラに作られてきたため、アーキテクチャやフレームワーク、コードの思想は全部バラバラです。
以前は、このバラバラなプロダクトを、チーム内でもバラバラに担当がついていて、2~3人の少人数チームが3つ、という状態でした。
「似ている」ものをバラバラに作っているので、同じようなものをお互い作っていたり、同じようなことでお互い困っていたり。
しかも1つ1つに対して、到底足りない人数で必死にサービスを回している。
なんとかこの状況を変えたい、という思いで、少しずつ少しずつ、バラバラだった組織を混ぜ始めました。
初めはデイリースクラムも、振り返りも、3回ばらばらでやっていたのを、ちょっとずつくっつけてみたり、隣のを覗いてもらったり。
お仕事も、少しずつ隣のプロダクトを触ってもらったり、コードレビューしてもらったりしていました。
いい感じで衝突し始める
さて、気づけばすっかり一緒にやるのが当たり前になった我がチームのふりかえりミーティング。一昨日のミーティングでこんな意見が出ました。
「ユニットテストで使うライブラリや、書き方を統一したい。人によって違いがあることで、問題が起きた」
キターーーーーーー!!
以前は2~3人でキレイに分担されていたのが、どんどん混ぜこぜににされている昨今。当然こういう衝突は起こりますよね。
解決すべき問題なので、Tryとして、改めてみんなで話し合う場を後日持ちましょう! ということにしていたのですが…
コードレビューでもぶつかる!
その翌日、さらなる『事件』は起こりました。ある案件のコードレビューで、「プライベートメソッドのユニットテストは書くべきではない」というレビューがつけられ、これに対してレビューイから「自分は書くべきだと思う」という『反撃』がありました。
おそらく自分がこのチームに来てから、コードレビューで『反撃』を見たのは初めてだったと思います。
これ以外は
「◯◯に直してください」→「直しました」
しか本当に見てこなかったような。
ユニットテストについて話し合う場を持ちましょう といっている矢先に こんなホットなトピックが起こったのですから放っておく手はありません。
第一回ユニットテストについて議論する会 という会議依頼を勝手にメンバーに送信。
議題は、「プライベートメソッドのユニットテストは書くべきなのか?」です。
みんな意見は持っている
きっと落とし所は見つからないだろうな と思っていたので、今日の私の目標は、とにかくみんなに意見を出してもらって、お互いの考えを知ってもらうことでした。
はじめに、皆さんどっち派ですか?と聞いたところ、ちょうど半々くらいに。いい具合に、コの字型の素敵なソファーのオープンスペースでミーティングしていたので、左と右で別れて座ってもらいました。
とっさの思いつきでしたが、各自の立ち位置が可視化されて(そしてちょっとテレビのバラエティ的なおもしろさもあって)、これは良かったと思います。
はじめは言い出しっぺの彼に「なぜプライベートメソッドにユニットテストを書くべきではないと思うのか」を話してもらいました。
それに対して、「賛成でも反対でもいいけど、彼の言っていることの意味はわかりましたか?」と確認したうえで(+私からちょっと補足したうえで)、意見がある人に、自由に発言してもらいました。
そこからは、賛成も反対もどんどん意見が出る出る。
どうしても声の大きい人と物静かな人がいるので、さり気なく全員一回は話してもらえるようにちょっと振りつつ、皆さんに意見を出してもらうと…
・あれ、賛成派も反対派も同じ事言ってない?
・そもそもPrivateメソッドって何よ?
・俺のPrivateメソッドとお前のPrivateメソッドと、サイズが違う…?
・実はPublicとかPrivateとかが問題では無いのでは!?
という感じになってきたところで30分終了。もっとまとまらないと思っていたのですが、いい感じで次に繋がるトピックが出たところで終了したのでした。
なるべく自分の意見は入れずにファシリテータに徹してたつもりなんですが…
すげー楽しかったなぁ!