“表現者”としてのエンジニア

ある日、どんぶらことTLを流れてきて出会ったこのエントリに、自分の中でなんだか霞がかっていたものが少しだけ晴れて見通しが良くなったような、なんとも形容しがたい軽い高揚を感じた。


モジックス Zopeジャンキー:プログラマというのは物書きである

抜粋

Googleという会社は日本の会社とどう違うのか、という非常に根本に迫った質問があり、それに対して村上氏は「日本ではプログラマからSE、主技、部長というようなキャリアステップがあるが、USではプログラマはずっとプログラマだ」ということをおっしゃっていました。プログラマというのは物書きなんだから、ということです。つまり著述業であるということです。松本清張がずっと松本清張であるようなものだと。


この筆者は過去のエントリでもこういった関連の主張をしている。この考え方に100%納得・同意するかと言えばそうではないけれど、自分の身に置き換えたときにしっくりくる部分は多々感じる。つい嬉しくなってエントリしてしまったw そもそもプログラマというのは独自性を持つことは悪であり、一般的で誰にでも通じるコードを書くことこそ善であり、“御作法”に乗っ取ったコーディングをすることが大事。そう思ってきたから。それが間違ってるわけじゃないけど。


システム開発はものづくりだ。
その中でのプログラマの役割は、レストランにおける料理人、というポジションがイメージしやすいのではないだろうか。
提供する料理のコンセプトを決め、レシピを作り、材料と調理法が決められ、それに従って最終的に料理を“作る”料理人だ。
レシピがしっかりしていれば、それなりのものは出来る。だけど、最終的に本当においしい料理が出来るかは料理人の腕次第だ。
これは、設計がしっかりしていればそれなりに“実用に足る”システムが出来上がるが、納期の遵守につながる完成度の高いプログラムを、パフォーマンスと保守性(作った本人以外の人が見てもわかりやすく、修正・改良が容易であること)を保って作るのはやはりプログラマの腕に依るところが大きい、と置き換えることができよう。


ただ、“表現者として”、“物書きとして”、と言ったときには、これに加えてモノを作る者にとっての“美的感覚”のようなものが介在する。保守性を保つ為と言えばそうとも言えるが、如何にロジカルで洗練された美しいプログラムを組めるか、ということに、作り手ごとに微妙に異なる感覚があるのだ。これは趣味・嗜好の問題でもあって、自分が意図して書いてる部分が、ある人にはちょっと気持ちが悪い、何となく嫌な書き方であったりする。処理内容や機能上は同じでも、である。
(設計段階にも勿論そういうところはあって、これはむしろ「アーキテクチャは意思決定である」という言葉もあるくらい、ぶっちゃけどうでもいい問題を“決定”していくというプログラミング以上に“美的感覚”に依るとも言える。)


“優秀なプログラマ”とは、短い時間と少ない行数で整合性のとれたわかりやすいプログラムを書ける者のことだ。
開発を進めていくと、当然ながらプログラムは洗練されていく。同じような処理を使いまわすことになるから、最初に書いたものよりも無駄が少なくコンパクトなプログラムを手早く書けるようになる。ここで、たまに開発初期のプログラムを見ようものなら困ったことになる。色んなアラが目について修正したくなってしまうのだ。機能的には何も変えないにもかかわらず、である。こうして工数がかさむことも、ごく稀にあったりなかったりww(これには保守性を上げるという実務的な理由もあるんだよ!w) 


システム開発において、肝となるのは設計だ。これが整合性のとれてない酷いものだったら、いくらプログラマが優秀であっても正しく動くシステムは完成しない(というか優秀なプログラマならそれは気づくはずだけど)。正しい設計がなされ、バカな営業による無茶な仕様変更がなされなければ、多少手離れが悪いことはあってもそれなりのモノが出来上がる。そしてサービスを創る、という面でいうと、それは要件(仕様)定義の範疇になる。だから、サービスを創り出したいという人はその部分をやりたがるし、プログラマがある意味軽視されるのも、ビジネス上仕方ないのかな〜、と思わないでもない。それでもオレらが作らないとモノは出来ないんだゼ!という思いはあるw


それでも、プログラムを書いてるときが楽しいということが、しばらく不思議というか・・・忸怩たる思いでもあった。
処理の中身は既に図やアルゴリズムの殴り書きで出来上がっていて、プログラミングはそれをコードに落とすに過ぎない(この処理の中身というかフローを考え、作ることもまた楽しい仕事だ)。まぁ大抵は作業が着々と進むし、モノが出来上がっていくから、頭の中や紙の上でごちゃごちゃやってるより仕事してる感あるからかな〜、と思ってた(たまにわけわからんくなると、とりあえずプログラム書きながら考える)。でもプログラム書いてるときが充実した楽しい時間であることは、それがある種の表現手法だから、なのかもしれない。如何に美しい文章を表現するか、というね。そして、保守性が高く手離れの良いプログラムを書けるプログラマはビジネス上の価値も高く、故にアメリカでは日本よりもプログラマの地位が高いという。(もちろん技術的に高レベルなことを要求されるということもあるんだろう。日本でプログラマというとキャリアの過程みたいにとられるし。。)


個人的には文章を書くことも嫌いじゃないし、芸術家(Artist)という素晴らしい表現を生む人種に尊敬と憧れもある。
プログラマのみならず、企画・設計をする人もひっくるめて“エンジニア”と言ったときに、それを表現者と捉えると、自分の中で何となくワクワクが増すような、そんな気がするんだよね。厳しい世界でもあるだろうけど、面白く美しい表現を創ることができるように精進していきたい。まずは、過剰な自己表現はしないけど、整合性のとれたコンパクトで美しい“文章”を書けるようにね。



じゃ。


注)
ちなみになんでもかんでも楽しいわけじゃなくて、苦しいこともあるし、やる気でない時もあるし、「え?出来んのこれ?」って思うこともあるし、「うわ、めんどくせ。。」が口癖になった時期もあるw まぁそんなこんながより作る喜びを大きくしてくれるんだろうけど。



関連
Chikirinの日記:“自分の表現法”と出会う