おいでなすったー

テーマとか宣言すると一夜坊主で終わることがわかったので、そういうのやめて、書き散らかしていきます

これ分散コンピューティングなんだよなあ

よその会社さんに押し掛けて数時間茶飲み話だけしてくるという謎の行為を繰り広げてきたんだけど、ソフトウェア開発ばなしでいろいろ思うところのある話題があった。

ある開発プロジェクトで、それは高度な仕事が実現できていた例だということなのだけれども、

  • 開発者が世界中から参加していて、タスクの分割や指揮はある国の技術者が仕切るけれども、多数の分業体制で24時間進行している
  • 開発者は2週間ごとにレビューされて不可と判断されるとそっこー退場させられる(実態としては、1か月続くと長期間関与する例が多く、体制についていけない人を最初に弾く関門として機能している性格が強い)
  • ひとつの課題に対しても複数の開発者をアサインしてそれぞれのアプローチで対処に当たる場合があり、上がってきたうちうまくいったものを採用するというやり方をする。そこで採用されなかったものを作ったということが直ちに悪評価になるわけではなくて、報酬も支払われる

といったやりかたをしていたんだって。

いろいろ面白い点は挙げられるんだけど、

  • ビジネスに対してソフトウェアを早く提供するべきである
  • 腕のよい開発者と、いくらかの試行錯誤を伴って品質の良いソフトウェアを提供するべきである

というところを徹底しているやりかたですよね。こんなの相手にしたら日本でのソフトウェア開発全く歯が立たねーなって話をしたんだけど、それは確かにそうで、

日本の受託開発とか準委任の人日商売のソフトウェア開発だと、ある課題があったときに、どういうアプローチが最適か事前に確定できないので何パタンか試してみて採用パタン以外は捨てるなんてことを図式の中に収めることはできない水準でやっていたりしますよね。誰々が5日動いたら5人日売り上がってくれないと困る経営をしており、5人日分の「成果」がないと怪しからんという仕事への理解をしている。

確実に作れるやり方で失敗せずに作らないといけないというソフトウェア開発をしているけど、同じ道具を作ったときにそういう凡庸なものと試行錯誤された優れたものを並べられたら前者は無価値だっていう視点がない。それってにわとりたまごで、最終的に作った道具を使うビジネスが3人のプログラマに試行錯誤させる費用を払えるくらい価値が高いからこそその費用が出てくるし、ソフトウェアができてきてもそんなに儲かる見込みがないのであれば、回り道せずに真っ直ぐ作り上げてくれないと困るという予算しか出ない。あるいは、お金を掛けずによいソフトウェアを作らないので負けるビジネスになっちゃうのかもしれない。

それは請負の構造的問題だよねだって範囲を確定しなきゃ引き受けられないってなるじゃん&日本でもビジネスやる側の人たちが内製化を指向する例が出てきているのはここに対する改善の性格ありますよねみたいな話をした。

弊社も人のこと言えないよねって背景の上でこの話をしていて、なんとなく感覚的に「技術者を遊休状態にせずに売上が上がるようにするみたいな価値観でソフトウェア作ってはダメだ」とか、「確実に実績があるだけではなくて理屈でできるはずだの領域まで手を伸ばしていいものを作らないと事業に使う道具として価値を発揮しない」とかいった考えを、個々の取引先とのやり取りの中で技術者・担当者レベルではある程度共有できている面は実はある。でも事業計画全体の中では、予算を入れたら逐一対応する進捗があるはずだという思想の枠組みを脱するには至っていなくて、結局新しい改良を試みるといった動きは営業上「うまいことやる」ことによって捻出している。

この世に魔法はないので、前提を変えずにより良いものを作ろうと思ったら提供が遅れる。そこは冒頭の例よりも明らかに劣っているところです。我々もビジネスはスピードだという建前はみんな知っている、でもそのスピードのために本気でコストをかけてスピードが上がる体制を組むということができている例は、あまり見ないですね。やることの方を制約してスピードを上げようというアジャイルアジャイル的なものは日本でも一部流行ったかもしれないけど、そこでもコストの枠を打ち払う発想には至らないというのが、今の我々の限界としてあるような気がします。

この話、興味のあるポイントはまだほかにもあって、それでは劣った日本国内にありがちな受託開発は即座に滅びるのだろうか。でもこんな話5年はしてるけどまだ死んでないよねみたいな。すべてはグローバルのもっともすぐれた道具に合わせればいいじゃん、と言われるけど、案外みんなめんどくさくてそれをしないという障壁が働き続けているよね、という話。

あとは、その場で言いはしなかったけど、日本は安定の価値がとても高い・言い換えれば不安定であることのマイナスが大きくみなされる社会なので、頻繁に評価されて入退場がある環境に追従できるのは優秀であると評価されるよりも、不安定で待遇の悪い非正規雇用という見方をされて、そういう環境だと案外優秀な人は集まらなかったりするんじゃねえかな、と思いました。

プログラマは一定水準以上の知的能力がないと役に立たないどころか足を引っ張るとは私も思っていて、向いてない人を速やかに除く仕組みの方がパフォーマンスが高いだろうという考えには基本的には賛成です。ただ日本人のコミュニティでそれをギスギスせずにやるのはとても難しいことだと思うから難しそうだよねという話。