プログラマでありたい

おっさんになっても、プログラマでありつづけたい

プログラムは、サイエンスかアートか?

 IT業界で10年以上働いていますが、根源的な部分で疑問に思い続けていることがあります。それは、「プログラムは、サイエンスかアートか?」という疑問です。なんのこっちゃいと言われると思うので、ここの文脈でのアートとサイエンスが指す物を定義します。
 まずサイエンスですが、端的にいうと同じ手順ですれば誰にでも再現出来るものです。これに対して、アートは似たような物は作れてもオリジナルはその人にしか出来ないものという意味です。単純にこう書くと、プログラムはコピペすれば誰でも同じ動きをするのだからサイエンスじゃんとか、コンピュータサイエンスという位だからサイエンスやんとか言われそうです。
 しかし、プログラム経験のある人は見たことがあると思います。難問を恐ろしくシンプルな方法で解決したコードや、洗練されたオブジェクトの配置で時を経ても古さを感じさせないコード。私も、同様の機能を果たすプログラムを作ることは可能です。でも、人を唸らせるようなエレガントなコードを書くことは不可能です。恐らく今後とも。この点で、プログラムはアートなのではないかと思うのです。
 また立場上、若手にプログラムを教えることも多いですが、教える度にプログラミング能力と感性の関係の大きさを思い知らされます。キラリと光るものを持って生まれている人はいるのです。ただ間違いなく言えるのは、ある一定レベルであれば誰でも達するは出来ます。一方、その上の一歩の壁を破れない人が多数いるのは事実です。絵の描き方は、方法を学べばある程度は書けるようになれるけど、人を感動させる絵を創り出せるのはアーティストだけのように。


 その残酷な真実があるからこそ、フレームワークという物が必要とされているのだと思います。口の悪い言い方をすると、フレームワークは誰でも一定レベルのコードを作れるようにする為の代物です。枠の中を埋めていけば完成する塗り絵のように。
 恐らく進歩の早いITの世界では、サイエンスにまで落とし込めてないのではないかと思います。誰でも簡単にプログラムが作れるような時代が来るといいつつ、まだその時は迎えてないのでしょう。その一つの形がフレームワークであったり、自動プログラム生成ツールであったりするのではないでしょうか。(個人的には、自動的にプログラムが生成出来るのであれば、その機能を提供する何かで良いのではと思いますが。)もしかして、そうなるとプログラムは一部のアーティストだけがするようになるのかもしれません。そんなこんなを考えてみるのも面白いものです。まぁ、どうやら私はアーティストにはなれそうにもないので、サイエンティストを目指しこれからも研鑽していこうと思います。


 最後にツッコまれそうなので、もう一つだけ言っておくと今のIT業界では、アートだサイエンスだ言う以前に一定レベルに達していない者を大量に集めて無理やり作っているという事例も多数あります。海外のオフショア開発に危機感を覚えているのは、この分野の人たちですね。