発明

知的労働で一番コストもリスクも高いのが「発明」だと思います。で、私の感覚だと「エンジニアリング」という言葉は知的労働に含まれる「発明」を極力抑えて、常に一定の成果を出す技術という(単純に工学とはまた別の)イメージがあります。

常に「発明」を行うと、成果の品質が一定でない上に、ブレークスルーが来るまでゴールが見えないという事態に陥ります。そういった環境での生産性向上を語るなら、最初に考えるべきことは:

  • 発明がしやすいのか
  • 発明が要らないのか
  • 発明以外の部分が楽なのか

このあたりでしょう。それも、どこがボトルネックになっているのかをまず冷静に分析すべきです。

今考えてるのは、いかに「発明」が必要な部分をプロセスから除外できるか。コンピュータで自動化するときにどうしても「発明」だけは難しいので、ここを何とかするのがスタート地点だと思ってます。実際に、開発プロセスやらコーディング規約といった「標準」というもので、わざわざ新しい発明をしなくても一定の品質成果を担保してくれる仕組みがありますし、フレームワークというのもフレームを作ることで「発明」を最小限に抑えてくれる仕組みと私は認識してます。

ただ、仕事やってて一番楽しいのは「発明」だと常に思ってます。おそらく、クリエイティビティという言葉は「発明」に関わる部分が大半を占めているのではないでしょうか。こいつがなくなると、仕事は単調で、逆に生産性を落とすことになりかねません。

ちなみに私は、必要な発明はプロセスのかなり最初のほうに計画しちゃいます。ソフトウェア開発の中間以降のプロセスでは、ひたすらテストデータ作ってたり、ひたすらコーディングしてたりします。もはや無意識です。

今後、進むべき道はこの辺?

  1. ソフトウェア開発に「発明」は不要。単純労働に落として安価+安定生産する
  2. ソフトウェア開発は「発明」が主。ほとんどは機械がやってくれる

まぁ、いずれは「発明」で食べていければいいなと思います。