software development et architect

ソフトウェア開発と建築。ソフトウェア開発といえば、軽薄短小かつintangibleの代表格。片や建築といえば重厚長大でtangibleの代表格。一見真逆な感じのする両者ですが、根っこは以外に似ています。例えば、その仕事に進め方でも、どちらもまずはじめにデザイン(設計)から始まって、- コーディング(建築では施工)、出荷(引渡し)となるわけです。

ソフトウェア

建築

要件定義

要件定義
概要設計

基本設計

詳細設計

実地設計

コーディング/テスト

工事

出荷

竣工/引渡し

こう見ると、似てますよね。小職も高校生のときは将来、 安藤忠雄Le Corbusier(ル・コルビュジエ)のような建築家になることを夢見ていたのですが、今はしがない開発者です。面白いことに、開発チームにいる人達とお昼に行った時に、小さい時何になりたかったいう話がでて、4人中3人が建築家(or インテリアデザイナー)という結果でした。

建築家にとっては作品(建物)によってその建築家の力量や芸術的な評価が決まるわけですが、開発者はコードであいつはすごいとかなるわけです。小職はまだひよっこ開発者のため、自分で自画自賛するようなコードを未だかけていませんが、最近人が書いたコードの良し悪し(というか好き嫌い?)は分かるようになってきました。面白いことにもコードにも美しいコードとそーでないコードがあるのです。まずは簡単なところからいうと、アイデントとか括弧のそろえとかの見栄えです。if文のネストやインデントがぐちゃぐちゃなコードとか。後は、同じ機能を実現するコードがあちこちにコピーされてて冗長すぎたりとか、エラく複雑にしすぎてたりとか。。安藤忠雄のコンクリ打ちっぱなし系に惹かれる自分としては、シンプルなコードが美しいなと思うのですが。。