ソフトウェア設計者にプログラミングの経験が必要か否か

Mixiでだいぶ白熱した議論があったのでブログにもエントリします。もちろん私個人のエントリですのでここに書いてあることは私の意見です。

そもそものトピックとは別なのですが
「ソフトウェア設計者にプログラミングの経験が必要か否か」
をめぐって白熱した議論になっていました。

そこでのやり取りを通して得た最終的な私の結論は
コンピュータサイエンスに対する理解がソフトウェア設計に当たっての必要条件であろう。」
ということでした。そして私個人の意見ではコンピュータサイエンスを理解する一番の早道がプログラムのマスターだと思います。ただしそれは手段の一つであって必ずそうでなければならないという意味ではないです。

オブジェクト脳 ネット脳

そこから発展して以下のような意見が出ていました。
>建築の設計が大工の経験が無くても出来るのと同じです。
>全く演奏できない奴が作曲できるのかという話になるわけだ。
>包丁を握ったことのない人がつくるレシピがおいしい料理になるでしょうか。
この捉え方に大きな相違点がありそうです。私はoldTypeなのでプログラム言語は結局代入と0判定とジャンプとして捉えています。OOPも最終的にはここに落ちるのですが設計の観点では抽象化のレベルが一段違っています。OOPの理解にはだいぶ回り道をしましたがデザインパターンがわかるようになってからだいぶ腑に落ちるようになりました。初めからOOPに触れている人はそこを土台にして理解しているでしょうし、実際にそういう人もいました。彼は、オブジェクト脳というかNewTypeというかとにかく私とは違う道を通っていると感じます。そして今からソフトウェアエンジニアになる人は、物心ついたときからインターネットやケータイに触れているので、また違う道を通ってくる予感がします。ネット脳とでもいうのでしょうか。それでもきっとゴールは同じだと思うし深いレベルでは相互に理解できるはずです。

結局「コの業界のおきて」から掟は変わっていない

あとはいくら経験があってもだめな人がいるんですよね。それでプログラムができるからって設計ができるわけじゃないだろうと主張する人が引かなかったのです。それは確かにあたっていて自分より年もキャリアもはるかに上の人が「なんでこんな頭の悪い設計書を書くんだろう」と思うこともありました。プロのプログラマが必ずしも優秀なわけではないですね。野球やサッカーをずっと続けていてもみんながプロ野球選手やプロのサッカー選手になれるわけではないですからね。才能がない人を切れればIT業界も変わるのでしょうけど。
コの業界の掟
http://www.pro.or.jp/~fuji/mybooks/okite/index.html