May 10, 2007

抽象論と具象論



〜via atsushifxの七転八倒 - 同感、というか逃げます(Re: 無い方がマシな命名規則)

(


via 酔狂人の異説 - 無い方がマシな命名規則)

驚くべきことは、引用元の「プロジェクトを破壊するプログラマ」というエントリにおいてこのようなクラス名を擁護するコメントがあったことである。きつい言い方になるが、このようなクラス名を擁護するようではプロ失格だろう。


なんか話の抽象度がかみ合ってない感じ。

まぁ、もともとのエントリでは、意味のない命名規則なんてくそくらえ、ということを言いたいがために、「C001」なる味気ない記号のクラス名を例に持ち出してきていて、それに、対して、アプリケーションドメインによっては、C001なんて名前のクラスも意味がある場合がある、なんて反応してるわけで。

確かに、C001という文字列に意味を持たすのは簡単なんだけど、そういう文脈じゃないし。
例に出てきたC001という区画でどうこう、なんて話だと、「区画」っていうクラスを作って、C001という名前のプロパティを持たせばいいだけで、C001なんて腐ったクラスをわざわざ作る必要もない。

いや、そういうことを言いたいわけではなくて、
つくづくプログラマ(あるいは、あえてSEと言ってもいいけど)ってのは、抽象論と具象論のハザマで仕事をする人種なんだなぁ、と思った。
つまり、大きいプロジェクトでよくある、上流にしかタッチしない(タッチできない?)人種というのは、あくまで抽象論の域からは出てこない。また、言われたことをコーディングするだけのコーダーは、あくまでコードでしか話ができないから、具象論の域を出てこない。

そこで、この抽象論と具象論のハザマで、同時通訳を行いつつ、円滑にプロジェクトを進めるプログラマ(あるいはSE)という存在に光が当たる。もちろん、この役割を担う人物というのはプロジェクトにより様々で、コーダーの具象論レベルまで降りてくることができるプロジェクトマネージャ、あるいはSEとか、もしくは、プログラマの中から、自分の担当しているプログラムの具象論と並行して、抽象論レベルまで駆け上ってくる場合もある。 

なので、やはり優秀なエンジニアというのは、この抽象論、具象論を、相手に合わせて臨機応変に使い分ける、というスキルが必要であり、この『こなせる抽象度の幅』とでも言うべき範囲の広さが、そのエンジニアの優秀さを測るモノサシになるんじゃないかなぁ、と思ったんだが、そんなモノサシ、数値化できねぇ。

なんてことを、とても両者の隔たりのある仕事をやってる今、思いました。

以前に、僕もとある大きな開発プロジェクトのコーディング規約を作る仕事をしましたが、無意味な接頭辞(いわゆるハンガリアン記法的な話)をつける命名規則とか、やみくもに「goto文禁止」とか、って意味ないじゃん、ってことで却下しました。

最近のJavaなでかいエンタプライズ系のプロジェクトだと、へっぽこプログラマの割合が多いので、プログラマの自由を縛る方向で、コーディング規約をつくり、その結果としてバグを作りこまないように、という流れが多いが、それって、結局現場では、中途半端な理解の下でのこぴぺが氾濫するだけなんだよね。
あとは、コーダーの入力キーパンチ数を減らすことがいいことだ、みたいな変な考え方とか。

なので最近、魅力的なJavaなプロジェクトが減ったように思えてなりませんが本ブログ読者の諸賢はいかがなのでしょうか?

ってことで、魅力的なJavaなプロジェクトに興味のある方、ご一報ください。(笑)

Posted by money at 1:42 AM | Comments (0) | TrackBack
Powerd by FC2.com
since 2/Feb/2004