#97prog_ja 05 美はシンプルさに宿る

プログラマが知るべき97のこと

今のプロジェクトでPMをやっていて毎朝議題に
「PMの所感」というgdgdなコンテンツを
含めているのだけど何かもっと有効活用できないかと
思っていたところ久々に「プログラマが知るべき97のこと」を
読みなおしてこれについてブログ書いて朝会と連動すれば
いいんじゃないかと思いついたのでブログ書く。
(あと上司にも見てほしい。)


さて、第1回目は「美はシンプルさに宿る」。
これは非常に本質なことで座右の銘にしているぐらい。
自分の経験則だがシンプルでないプロダクトは死ぬ。マジで。


書いた人はヨルン・オルハイム氏。
10年以上ソフトウェア開発している方。
詳しくはhttp://www.olmheim.com 参照。

ヨルン氏の言葉ではないが
「複雑に考えることは簡単である。単純に考えることは非常に難しい。」
という言葉がある。


僕が思うに、複雑なモノを作ってしまうエンジニアはいる。
そういうエンジニアは短い納期の中で自分の目に見えるモノを実装
しようとしているからだろう。
僕の場合はまさにそれで目に見えるモノをそのまま実装しようと
するときによく複雑になってしまう。


今のプロジェクトで僕は非常に複雑な設計を2回ほど
実装しようとしてしまって何回かチームメンバーに怒られた
ことがある。(猛省してます)


1つはRDBの設計でテーブルを役割ごとに用意してしまったこと。
普通に考えればテーブルというのはオブジェクトごとに用意すれば
よいはずなのに業務をヒアリングしたままに振る舞いや役割ごとに
実装しようとしてしまった。俯瞰して見てみるとオブジェクトは明白
で簡単に表現できるデータ構造であったため再設計を行った。


もうひとつはMVAC設計にしようとしてControllerとModelの間に
もう1層つくろうとしたが直感性がなくなってしまったこと。
この設計はエンジニアにプロトタイプ的に実装をお願いしたが
階層が1階層増えたことによりわかりにくくなってしまったため
諦めた。


どれも複雑な実装が行われそうになったが実は目の前の複雑なモノは
熟考してみると意外と簡単だったりする。


初期のプロジェクトの失敗は実験と議論、俯瞰から複雑さを
排除することができた。


美を追求するためにシンプルを追求する。
シンプルを追求するために俯瞰し、実験し、議論することが大切。