2018/03/17

規模と質とプログラム

素晴らしいプログラムを見ると感動する。思いもしていなかったものが実現されているとはっとし、なぜそれが可能なのかを理解し、自分がなぜそれを先にできなかったのかを悔やむ。プログラムを書くことは理知的ながら感情的で、抽象的だが肉体的なものだ。

仕事をしながらプログラムを書いていると、自分は効率が最優先になる。効率を上げることは書く時間を短縮することも去ることながら、書いたコードが最大限の効果を発揮することを思考することにある。ソフトウェアは無限にスケールする。実現できていることが役に立つなら、想像もしない多くの人に利用される。今日書いたコードが明日には顔を見たこともないひとに意図せずに触られ、生活に組み込まれ、利用される。結果は数字となって解釈可能になり、どのような反応があったのかを限りなく私たちが認知可能な範囲のものを数字に落としこめる。

伸び続けなければならない組織であることは、効率的なコードを書くことを強いる。効率は競合優位であれば増し、組織を効率に浸す。それは自らを加速して、他を圧倒し、組織を超えて成果になる。それは効率的な市場を作る元になる。これは逆説的で、伸び続けなければならない組織がある背景には競争と、市場のカバレッジ及び拡大のあり方が前提になっている。つまり、伸びなければならない組織というのは制約からそうなっている。

プログラムの本質は何かをできるようにすることだ。ソフトウェアで何かを実現することだ。

私たちは人を、そして自分を、多くの人を満足させたことで評価する。これは危うい。評価しているように思える。多ければ多いほどそれは競争優位になり、利益になり、インパクトであると言う。でもそれは結果による評価になる。なので私たちはプロセスをみて評価を試みたり、方法についてあれこれ組織内や、あるいは組織外のアプローチについて議論し、評価をしてみる。結果に基づかない評価は本質的ではない。結果は、プログラムが何を生み出したかにある。

ソフトウェアで何かを実現できるようにすることは、結果の面でわかりやすくなりすぎる。それは実現されたものが鮮明であり、まわりを納得させるものであればあるほど、自明に思える。実現された以前と以後では世界が変わっていて、ソフトウェアの世界に落とした時点でソフトウェアの加速度に置き換えてしまっている。ソフトウェアの加速度を更に良くし、更に継続可能にする技術ばかりが評価されてはいけない。ソフトウェアで問題を解決可能にするように問題を設定し、見せることが本当に価値の源泉である。

伸び続けることばかりを関心の中心に置くと、つい生まれた世界を見誤ってしまうことがある。たとえ10人のためにつくったソフトウェアであっても、それがその人達の世界と価値観を変えたなら、やはりそれは今までとは全く別の世界になっている。スケールさせる技術ばかりに目を奪われていないか。そのときに実現できたことの尊さとソフトウェアの素晴らしさを忘れていないか。収益構造に目を取られて何かを変えること自体の効用を見失っていないか。そして何より、一人のエンジニアとして規模を重視しすぎていないか。

規模を重視するのは素晴らしいことだ。それはインパクトそのものだ。そして伸び続けなければならない組織ではスケールアップかスケールアウトのどちらかしか選択肢はない。そういう制約のなかであっても、自分が書いたプログラムがその10人に生んだひらめきと、生き生きとした感覚と、そして何を具現化したのかということを書き手の実感として失ってはいけないのだと、改めて思う。