auientの日常

ノンジャンルで書きたいことを書くブログ

プログラミングが楽しい5つの理由

「人月の神話」(第1章 p.6)より。

なぜプログラミングは楽しいのだろうか。プログラミングをする人は、一体どんな満足を得ようとしているのだろう。

プログラミングはなぜ楽しいのか、の理由について考察があったので、整理がてらメモしておきたい。

もくじ:プログラミングが楽しい5つの理由とはこれだ!

  1. ものを作る
  2. 他人の役に立つ
  3. 複雑な仕組みを見る
  4. 新しいものを知る
  5. 扱いやすい道具を使う

1.ものを作る

まず言えることは、物を作り上げる純粋な喜びがあるということだ。子供が泥だんごではしゃぐように、大人は物を組み立てること、特に自分でデザインしたものを作り上げることを楽しむ。これは、神が万物を創造されたときの歓喜、つまり葉っぱの一枚一枚、雪の結晶一つ一つがみんな違っていて、しかもすべてが新しいという喜びに近いものだろう。

ものを作ることは楽しい。それが定型的なものであっても、自分が生み出したものは特別で、愛着がある。それが自分でデザインしたものならなおのこと。これはプログラミングに限らず、目に見えるあらゆるものについても言える。

2.他人の役に立つ

第二に、他の人々に役立つものを作ることの楽しさがある。私たちは心の奥底で、他の人が自分の作品を使って便利だなと思ってくれることを期待している。この点からみると、プログラミングシステムは、子供が初めて「パパの仕事場に」と作った粘土のペン立てと本質的には変わらない。

自分の行いが他人に喜ばれると嬉しい、というのも人に本来備わった性質なのだと思う。これもプログラミングに限らないこと。けれど、自分のためにマルウェアや詐欺サイトを作るようなプログラマーは、この種の喜びを感じることはないのだろう。

3.複雑な仕組みを見る

第三には、複雑なパズルのような組み立て部品を完成させ、それが巧妙に転回するのを眺めるおもしろさだ。初めに組み込まれた原理がその帰結まで演じ切られる。プログラムされたコンピュータには、ピンボールマシンじゃジュークボックスの仕組みに魅了されるような何かがある。しかも究極的なものだ。

つまり、一言でいえばピタゴラスイッチだ。もちろん、あえてあそこまで複雑にすることはしないけど、考えた結果の仕組みが意図した通りに連鎖していくと気持ちいい。メカニカルなものを好むのは少し男性よりの趣向なのかもしれない。

4.新しいものを知る

第四には、つねに新しいことを学ぶという喜びだ。これは繰り返しがないというこの作業の性質からきている。いずれにしても、問題というのはつねに新しいものだから、これを解決する者は何かしら学び取ることになる。それは、時には実用的なことであり、時には理論的なことであり、そして時には実用的かつ理論的なことである。

プログラマーは常に学び続ける必要がある」というのはネガティブに語られがちだ。けど、そういう文脈で言われる技術のトレンドとは別のレベルで、何かしらの問題を解決しようとしたときには常に何かの発見があるというのは本質的な指摘だと思う。これを喜びと感じられる人とそうでない人の二種類の人間が世の中にはいる。

5.扱いやすい道具を使う

最後に、非常に扱いやすいメディア(媒体)で作業する喜びがある。プログラマは、詩人と同様に、純粋な思考物からほんの少ししか離れていないところで仕事をする。想像力を発揮することによって空中に城郭を築く。想像のメディアがこれほど柔軟で、こんなに容易に磨きをかけたり手直しでき、壮大なコンセプトの構築をこれほどやすやすと実現できるものはない。
(中略)
その上、プログラムというのは、詩人の言葉とは違って、現実に動いて働きだす。プログラム自体から独立した目に見える出力をもたらす。結果を印刷し、絵を描き、音を出し、腕を動かすといったことを行う。神話や伝説の魔法は、いまや現実となった。キーボードで呪文を正しく打ち込めば、ディスプレイに生命が吹き込まれ、これまでは存在しなかったような、またはありえないはずだったものを目の前に見せてくれる。

プログラマーに対して、彫刻家を例にしてみると分かりやすい。彫刻家が扱う石は大きく重い。もし削りすぎたら元に戻すことはできない。頭で想像したものを思い通り実現するには訓練がいる(これはプログラムも同じだけど)。そして何より、彫像が動き出して家事を手伝ってくれたりはしない。それに比べれば、プログラムのいかに扱いやすく役に立つことか。



本当はプログラミングが楽しい5つの理由と対で、プログラミングが苦しい5つの理由もメモろうと思ったのだけど、長くなったので前後編に分ける。続く。

→ [仕事][読書]プログラミングが苦しい5つの理由

人月の神話―狼人間を撃つ銀の弾はない (Professional Computing Series)

人月の神話―狼人間を撃つ銀の弾はない (Professional Computing Series)