プログラマは技術者じゃない!?
ある日ヨメさんに
プログラムの技術って何?プログラムが優れているかどうかって、どうやって判断するの?機械や電化製品なんかは目に見えるし、素人目にもいいか悪いか何となく分かるけど、プログラムはいい悪いがよく分からないし、そもそもプログラム技術ってのが理解できない
と聞かれたので、yasuhoは
ソフトウェアが一定の品質に達しているかどうかを判定する手法はあるけど、一般的にソフトウェアのUIや技術が優れているかどうかは主観によるので、明確な判断基準はない
と答えたら、ヨメさん曰く
じゃあプログラマって技術者じゃなくて芸術家だね
納得してしまったよ(笑)
コードが美しいとか、アーキテクチャが優れているとか、良く出来たUIとか、多くの人が同意できる技術はあるけど、絶対的な基準がないのがコンピュータソフトウェア。開発の現場にいる人は分かると思うけど、ある機能を実現するために最適な解というのは存在しなくて、ぶっちゃけ声の大きい人の意見が採用されるのだ。もちろんハードウェア製品にもそういうのはあるんだろうけど、ソフトウェアは特にその傾向が高いと感じる。
システムを柔軟に変更できるのは、ソフトウェア最大の長所であり、短所でもある。ソフトウェアは柔軟性があるからこそ、多種多様なニーズに適用でき、新しい製品を創造しやすいが、次々と改変することでソフトウェアは肥大化し、複雑化する。やがてどうにもならなくなって、捨てられ、また新たなソフトウェアが作られる。今使っているソフトウェアは、一過性のものに過ぎない。
一つにはソフトウェア技術というものがまだまだ未成熟というのもあるだろうけど、今後もそんな感じで続いていくのかなとも思う。いずれにせよ、第三者の目から見ればソフトウェア技術は難解な芸術のようなものにしか見えないんだろうね。
個人的には
技術なのか芸術なのか、なんてことはあまり重要じゃなくて、そんな混沌とした曖昧な世界がソフトウェアなんだと思う。
絶対的な基準がないというのは、個人には実はとても都合がよくて、誰もが自分の信じたプログラムをデザインできるということ。ビル・ゲイツが言おうが、スティーブ・ジョブズが言おうが、関係ない。自分がこれでいいと思ったものが正しいとか正しくないとか、それは他人に言われるものじゃないのだ。
「あなたは技術者ですか?」と聞かれたら「私はプログラマです」としか答えようがないな。他に例えようがないからね :)