記事
  • essa

今はコードがお偉いさんなんだからMOBは雁首揃えろって話

Mob Programmingって初めて聞いたけど、とてもいい方法に思える。

コードを書く時に、今現在の仕様はわかっていたとしても、今後どうなるか、どういう方向に発展するのか気になって、ビジネス的にその分野に詳しい人の所に聞きに行ってから書きはじめることがあるし、性能的に大丈夫かDBに詳しい人の意見を聞いたり、何か迷った時に過去のプロジェクトで似たようなケースをどっちの方法で解決したか調べたりすることもある。

書き出すとすぐ終わる短いコードでも、書き出す前に、聞きにいったり議論したりする時間が随分かかっていることもある。この時間をかけないと、結局、後で変更になるので、先に聞きにいくのがベターなんだが、チーム全員集まってひとつのコードを書けば、そういう時間を省略できるような気はする。

だから、これが生産性が高いということは感覚的にはすぐ納得できるのだが、一方で、これを導入するために人を説得するとしたら大変だろうな、とも思う。

二人でやるペアプログラミングでも、「それって一本のプログラムを二人で書くってことは、工数が二倍になるんじゃない?」って言われて言葉に詰まったことを思い出す。Mob Programming は、二倍じゃなくて数倍になるので、それを上回る生産性向上がどこから来るのか説明する必要がある。考えただけで頭が痛い。

それで、急にヒラめいたのだが、これって「今はコードがお偉いさん」と言えばいいのではないだろうか?

たとえば、大企業の地方の工場に本社の社長が視察に来るとする。そうしたら工場の幹部が10数人玄関の前に整列して、社長が来るのを待つだろう。社長の車が渋滞で遅れたら、幹部の単価×数時間が無駄になるのだが、誰もそういう工数のことは気にかけない。それどころか、前日にリハーサルまでやったりする。

「お偉いさんには、あらゆる場面で人をたくさんつけるもんだ」というのは説明不要の常識である。役員には秘書がつくもんだし、その秘書も事務作業をやる人から経営的に高度な判断までできる幹部候補生の秘書室長まで、さまざまなレベルのさまざまな技能を持った人がたくさんつくもんだ。

社長にプレゼンする時に、何か質問されて「えっと、今はその、担当者がおりませんので、この件は後日回答」なんてことは許されない。即答できるように関係者全員部屋に集めておくもんだ。

コードを書く時に、多少関係薄そうでも、関わりそうな担当者は有無を言わさず全員集合、というのは、コードがお偉いさんだから、万が一でもコード様に失礼があったり待たせたりすることがあってはならん、と考えれば受け入れやすい。

これは非合理な儀礼ではなくて、社長の時間は貴重で社長の決断の影響範囲は大きいのだから、社長に合わせてしたっぱが振り回されるとしても、それによって社長が正しい判断を素早くできるのなら、会社全体としては最適な方法だと言える。

今はコードの影響力の方が社長より大きくて、社長が右へ行けと言っても、コードが右へ行けるようにできてなければ、会社は右へ行けない。コードが右へ行けるように組んでおくことが会社の将来を左右する。社長よりもっと上の「お偉いさん」が来るとしたら、そりゃチーム全員その部屋に集まるのは当然で、それを一人の担当者にまかせておく従来のプログラミングの方が異常のようにも思えてくる。

コード様が社長より偉いということは、プログラマにデスマをさせればわかると思う。デスマの中でプログラマは苦し紛れにどこで手を抜いたらいいか必死で考える。ひどいコードができるのは当然だが、全てのモジュールが全部一様にひどいということはない。たいていそこにはひどさの濃淡があって、手を抜いたモジュールはもうボロボロでメンテ不能で、二度と修正、拡張できない。会社はこのコードに縛られてそのまま業務を継続するか、高い金を払って作る直すかで、どの業務がそういう目にあうかは、デスマの中では意識モーローのプログラマの気紛れな決断に左右される。

同じ決断を一番いい形でやるのが Mob Programming で、全体の品質も高くなるだろうが、それより会社の方向性とプログラムの拡張性が同じ方向を向いていることが重要だと思う。

企業活動とは、さまざまなステークホルダーからの矛盾を含む要求のトレードオフを取ることであり、その焦点となる場が、昔は経営幹部の臨席する会議であったが、今はコーディングがその決断の現場になっている。ここで企業がどっちを向くかが決まる。

ここになるべく多様なステークホルダーの代理人を臨席させることが重要だ。

開発チームは、全員が金太郎飴の一様なプログラマになることはほとんどなくて、それまでのキャリアや担当するサブシステム等によって、自然と特定のステークホルダーの代理人になっていく。全員が技術に立脚しながらも観点が散らばるということが重要で、チーム全員が一つのコードを書くというのは、そこでなるべく多くの情報を集約した上で重要なトレードオフを取っているということだと思う。

誰も何も言わずドライバー一人がたんたんとコーディングを進めていくだけだとしても、そのコードに含まれる決定事項がメンバーを通して、さまざまなセクションにフィードバックされていくことに意味がある。

結局、今のように一人でコードを書くってことは、コード様が「ここはどうなっておるのだ?」と言った時に、「えっと、今はその、担当者がおりませんので、この件は後日回答」を連発しているということで、コード様が「お偉いさん」だとしたら、これは随分失礼な話だ。

あわせて読みたい

「プログラミング」の記事一覧へ

トピックス

ランキング

  1. 1

    1台で4000戸分?EVは本当にエコか

    大西宏

  2. 2

    庵野秀明 学校嫌なら逃げていい

    不登校新聞

  3. 3

    母子家庭の扶助減額は理解不能

    赤石千衣子 CHIEKO AKAISHI

  4. 4

    貴乃花の妻 女将からは評判最悪

    女性自身

  5. 5

    清水建設問題 下請け告発で発覚

    山口利昭

  6. 6

    貴乃花親方へ批判報道に妻が怒り

    女性自身

  7. 7

    よしのり氏 山尾氏守り「満足」

    小林よしのり

  8. 8

    小池劇場の終焉を天敵記者が激白

    AbemaTIMES

  9. 9

    貧乏暮らしが生活保護の基準か

    中村ゆきつぐ

  10. 10

    死んでも祟る 富岡八幡宮の確執

    SmartFLASH

ランキング一覧

ログイン

ログインするアカウントをお選びください。
以下のいずれかのアカウントでBLOGOSにログインすることができます。

コメントを書き込むには FacebookID、TwitterID のいずれかで認証を行う必要があります。

※livedoorIDでログインした場合、ご利用できるのはフォロー機能、マイページ機能、支持するボタンのみとなります。