家でプログラムを書いているという話をすると、仕事中毒だと言われることがある。わざわざ休日に家で仕事をしているつまらない奴だと思われているようで癪である。
でもプログラミングだって立派な趣味だ。絵を描いたり、作曲したりするのと同じ、創作活動だ。夢中になって時間を忘れてしまうことだってある。
残念なことにプログラミングというと、どうしても仕事のイメージが強いらしい。
確かにプログラミングがどういうものなのか知らない人からすると、テキストエディタに意味不明の文字をカタカタと打ち込んでいる姿はあまり魅力的には映らないのだろう。
よろしい。では、文字カタカタの何が楽しいのか、ノンプログラマーにも伝わるように説明してみよう。
プログラミングの楽しさの正体は多分、思った通りにプログラムが動いたときの達成感だ。特に、これまで何時間もかかって面倒くさかった作業を、プログラミングを駆使して一瞬で終わらせることができたときは「俺、天才!」と自惚れてしまうこと必至。
これは何かを発明した時や優れたアイデアを思い付いたときのワクワク感に似ている。そして、お金をかけなくてもパソコンさえあれば、自分の手で実際にそのアイデアを試してみることができる。たとえばDIYだったら、木材とか色々な工具が必要だけれど、プログラミングはパソコンだけでいい。
それと、プログラムのコードには審美性がある。プログラミングをやったことがない人にはイメージしづらいかもしれないけれど、同じことをするプログラムにも「美しいコード」と「醜いコード」があるのだ。それは美術的な美しさじゃなくて、機能美に近い。
ある物事の仕組みを知ったとき「へぇ、よくできているなぁ」と感心した経験があると思う。合理的で美しいコードを見たときも、そうしたちょっとした感動がある。たとえば同じことをするプログラムでも、素人が書いたら100行だけど、上手い人が書いたら30行で収まったりということもザラにある。自分も、そうしたより合理的で美しいコードを書けるようになりたいというのも、プログラミングを学習する一つの動機だ。
プログラムコードには、それを書いた人の設計思想が色濃く反映される。だからプログラムのソースコードは表現物として著作権でも保護される。
コードを綺麗にしたって一銭にもならないのだから、さっさと次のプログラムに取りかかった方が経済的だと考える会社も多い。だから職業プログラマーが書くコードが必ずしも綺麗だとは限らない。(昨今ではソフトウェアは納品してからも改修が続くのでソースコードも保守しやすいように綺麗にしておくという考え方も一般的になってきたらしいが。)
一方で趣味で書くプログラムには人件費がかからないので、自分の好きなだけこだわることができる。
もちろん、平均的には職業プログラマーの方がスキルが高く、良いコードを書くと思うけれど、本当に綺麗なコードを書けるのは、意外とアマチュアの方だったりするかもしれない。
同じことをするにしても、どういった書き方ができるのか、どう書くと分かりやすくメンテナンスが楽なのか、どうすればもっと綺麗なコードになるのか。そういったことに頭を使い、工夫を凝らすのは楽しい作業だ。家でやる分には、好きなだけ時間をかけても、誰にも文句は言われない。
コードは手段であって目的ではないのだが、私は家でプログラムを書いていると、コードにこだわるあまり、いつまでたっても成果物ができないということもある。完全に本末転倒である。
でも良いんだ。どうせ趣味だから。楽しいから。