人材不足と慢性的残業の悪循環を断ち切る

http://hotwired.goo.ne.jp/original/maegawa/050118/03.html
まぁ、端的に言うと「プログラマの生産性には個々人で差があるから優秀なプログラマを優遇しろ」ってことなんですが、果たして「優秀なプログラマ」ってそんな簡単に評価できるんでしょうか?
学生時代は、ある与えられた課題や仕様に対して、短期間にC++Perlスクリプトが書けたりとか、バグの原因の発見能力が他の人より優れていることが「優秀」と思っていたんですが、最近は必ずしもそれが重要な能力じゃないような気がしてきたしなぁ。確かに現場では重要な能力なことは間違いないんだけど、実際にシステム全体の構築に対して何%寄与しているか?というのは難しい問題だと思います。
昔ながらのネットベンチャーでは、アイデアを出す人と、Web画面のデザインをやる人と、プログラムを書く人が居る、その中でアイデアを出す人が世間的な評価が高いという話しを聞きました。学生時代の価値観ではプログラムを書く人間こそが一番偉いと思っていたけど、最近になってアイデアの重要性が身にしみています。もちろん、誰が欠けてもシステムは出来ないんだけど、仕事の難易度としてどれが一番難しいか?というのは一概に言えないわけで。
「いやいや、プログラマだって、プログラムの設計や実装の方法についてアイデアを出しているじゃないか」というご意見もあると思いますが、そこでのアイデアってのは結局プログラムという閉じた世界の話でしかなく、それなりに経験を積めば誰でもある程度の領域には達すると思うんですよね。
むしろ、システムデザインや仕様の定義といったことってのは、プログラムの外の実世界のデザイン能力というものが求められます。こういうのは残念ながらプログラムの経験だけでは良い物は生まれないんですよね・・・。もちろん、プログラムの経験が必要ないというわけではないですが。
今じゃシステムも大規模になってきて、仕様を定義するSEと実際にコードを書くプログラマという分業が進んでいる所もあるので、プログラマが仕様に対して改善を求めたり、SEが実際のコードをいじるというわけにはいかないと思いますが、真に「優秀なプログラマ」とは何かというのは、よく考える必要があるのでは?と思います。