こんにちは、結城浩です。
プログラミング技術を使った「競技」の一種に、「ゴルフ」と呼ばれるジャンルがあります。
通常のゴルフというのは、ボールをカップに入れるまでに「できるだけ打数を少なくする」競技ですよね。それと同じようにプログラマのゴルフというのは、ある特定のプログラムを作るのに「できるだけ文字数を少なくする」ことを競う競技です。プログラマが腕をふるって短いプログラムを書くわけです。
複雑な処理をほんの数文字で実現できたとき、難解なパズルを解いたような喜びを味わいます。大げさにいえば 「うーん、これだぜ!」のような幸せを感じることも。
* * *

プログラマのゴルフは競技ですから、通常の業務で書くプログラムと直接の関係はありません。
しかし、通常の業務でも、同じ機能を実現するのに、短いプログラムの方が良い場合が多いでしょう(程度問題ではありますが)。実際、初心者プログラマが何百行を費やして書いたプログラムを、熟練プログラマは一行で実現できるということは珍しくありません。
必要以上に長いプログラムは書くのも時間が掛かりますし、書いた後のメンテナンスにも時間が掛かります。ですから、一行で済むならそれに越したことはありません。
* * *
ただし、話はそれほど単純ではありません。
プログラムを書いていてよく感じるのは、「行数を少なくしよう」と思うと「探し物が多くなる」という現象です。
自分が書く行数を少なくするためには、自分が書くプログラムと同等の機能を持つ「何か」を探し出す必要が生じるからです。(「何か」というのは他のプログラム、ライブラリ、クラス、メソッドなど)
自分がいまから実現しようと思う機能は、このクラスのメソッドを使えば一行でできちゃう!……というためには、そのクラスのそのメソッドを探し出さなければなりません。
熟練したプログラマは、すでに自分の中にたくさんの情報を蓄えており、即座に「最適の一行」を作り出すことができるでしょう。あるいは自分の中にその情報がなくても、経験とツールを駆使して短い時間で「最適の一行」を探し出すことができるでしょう。
最適の一行を見つけ出すことができれば、開発時間は圧倒的に短く、メンテナンスコストも非常に低く抑えることができる。言うことなし……
* * *
……それは、本当でしょうか。
熟練したプログラマとプログラムの関係で見た場合には、その通りです。しかし、視野をもう少し広くしてみると変化が起きます。
熟練したプログラマは「こんなのは一行で済むよ」と宣言する。その「最適の一行」を見つけることができるようなプログラマを、会社はどうやって見つけるのかという問題です。

当然ながら、熟練したプログラマは少なく、また掛かるコストも大きい(熟練したプログラマへの給与は高くあってほしい)。
自分の手を動かすことに時間を掛けるべきか、あるいは短いコードを探すことに時間を掛けるべきか……プログラマがそのトレードオフを探って現実解を求めるのと同じように、会社もまたトレードオフを探って現実解を求める。どれほどのレベルのプログラマを迎えて、どのような業務をまかせるべきなのか。
それはまったく単純な問題ではない。極めて、極めて複雑な問題である。
この複雑さは今後もきっと変わらない。技術は進歩し、変化し続けるだろう。ある「問題」を「解決」する方法をみんなで探そうとするだろう。
アリスが1の手間で実現できることをボブにまかせたら10の手間がかかる。同じ仕事をチャーリーにまかせたら100の手間がかかる。しかしアリスは1人、ボブは10人、チャーリーは100人いるとしたら、どうするのがいいのか。
会社はアリスに100、ボブに10、チャーリーに1支払うだろうか。アリス、ボブ、チャーリーを教育する人や、その能力を見分ける人にはいくら支払うだろうか……
* * *
……ここで話を急に個人へ戻す。
これからの時代で「働く」ということをどう考えるべきなんだろうか。
これからの時代、さらに技術は進歩するだろう。コンピュータとネットワークの力によって、個人の力は増幅する。少しの知識の違いで、簡単に10倍100倍の能力差が生じてしまうだろう。
そんな時代を生きていく中で「働く」ということをどう考えるべきなんだろう。
見極めは簡単ではない。
技術者は技術力があればいい、書き手は文章力があればいい、教育者は教える力があればいい……という単純な話ではない。
突き詰めて「働く」ということを考えていくと、かならず各人の「価値観」の問題に出会うことになる。もっと大げさにいうならば各人の「幸福観」の問題である。
「何がどうなったら、私は幸福なのだろう?」という問いかけである。
さっきは単純に会社が給料を支払うという話を書いたけれど、給料よりも時間がほしい人はたくさんいるだろう。給料よりも時間よりも経験がほしい人もいる。
それは結局「価値観」の問題である。
その「価値観」は個人個人で大きく違う。他人のそれを見て参考になることはあるかもしれないが、誰かから強制されるものではないし、教えてもらうものでもない。
あなたが(わたしが)どうなったら幸せなのか、それは自分で見い出すしかない。
* * *
プログラミング競技の「ゴルフ」の喜びから、ずいぶん大きな話まで広げてしまいました。
あなたはどんな働き方をしたいですか。
どんなことに価値を見出し、どんなことに喜びを見出すでしょうか。
(結城メルマガVol.098より)