SIerと「コードの匂い」

破壊力抜群の一言によりものすごいブクマを集めたshi3zさんのエントリ、長文日記
周囲からこの言葉はネタっぽく扱われているけど(ミサワ化されたり)、なんか実感がこもっているんだよね。

すると彼は一瞬ドキッとした表情を見せ、それからマジシャンらしいポーカーフェイスに戻って言葉を止めた。
 「なぜ僕が危ういと思うんですか」
 「本当にコンピュータサイエンスの研究者になりたいのかな」
 「え、どうしてそう思いますか」
 「君からはコードの匂いがしない」
実は、と彼は語り始めた。もともとはコンピュータサイエンスとは無関係な別の学科に通っていたのだけど、途中からコンピュータサイエンスに興味が出て、学科を変更した。実はプログラミングの経験は殆どないのだ、と。

長文日記

なんか、とても詩的な一節。

さて、SIerなんて阿漕な商売をやっていると、「コードの匂い」がしない人にとてもよく出会う。システムの匂いすらしない人もいる。仮にもコンピューターを使って仕事をしているのだから、せめてシステムの匂いくらいはして欲しい物なんだけど、政治の匂いだったり、人買いの元締めの匂いだったり、そういうものを漂わせている人に出会う。
もとより、人をひと山いくらで売り買いしてこき使う業界なのである。そこではコードの匂いは漂うものの、その大半はプログラマのそれではない。人海戦術事務仕事の延長であるコーディング作業としてのコードは醜悪で、破壊的ですらあるけれども、それなしでは業務が成り立たない。数少ないプログラマーは、同類の匂いをかぎ分けるのには敏感だ。いや、かぎわける、ということ自体必要ないくらい、そもそもが違う。どこがそれを分けるのかは難しいところだけれども、プログラマープログラマーじゃないか、ということははっきりと違う。

客の側にもそういう匂いはある。システムとして何が大事かを抑えているけれども実装には興味ない課長、データの入出力とその運用についての調整はばっちりだけど実装は良く分からない担当者、ホスト出身だけど勘が良くていかにもコード書いてきました、な担当者。いやいや、とても恵まれてますよこの現場は。
理由を挙げて調整したはずの工数を「他が楽になったはずでしょ?返して」とわけわからない事をいう課長、自分の進捗の遅れを「XXさんがQAの回答遅らせたから」って言い訳する担当者(ちなみにQがあるかを聞いたのは締め切りの一週間前、Qが来たのは締め切りの2時間前)、これは旧システムの残骸だから新システムでは不要!と自信満々に言い切った1ヶ月後にやっぱり必要だった。なんで指摘してくれなかったの?と逆切れする担当者。システム屋としての匂いすら皆無。

コンピューターサイエンスの研究者、というとなんだかかっこいいけど、研究者ってのはキュレーション()してちゃダメなんである。自分である程度の事が出来てなんぼ。それは研究者だけではなく実践の場でも同様。

これも何度か言った話だけど、SIなんてある程度1つ言語が出来れば後は大体応用が効くし、システムなんてそういうものでしょ、という人が多い。けれども、実のところ超上流のシステム設計が上手くいくかは、それがどのように実装されるべきかまでイメージされているかどうかにかかっている。コンセプトはご立派でも、実装のところで不可能ないしはその理想を果たせない(例えば、拡張性・保守性に優れる、というコンセプトは大概現場の問題で実現しない)ような、あるいは実装の時に考えればいいやそれ、となってしまっているようなシステムは絶対にまともには完成しないのである。