2010年3月23日火曜日

[37signals] 「〜の場合を考えてみろよ」には気をつけよう

(原文: Beware of "Imagine if..."

我々はユーザ管理画面の設計を要件として含む幾つかの新しい案件に取り組んでいる。目下、ちょっとした研究開発プロジェクトが進行中といったところなんだが、さほど現実離れした代物でもない。

我々は UI を設計し、その見栄えと動作は好ましいものであったが、その時点で、我々は疑念を持ち始めた。こんなのが存在する理由は?こいつをこう動かす理由は?そうするよう誰かさんが望み欲する理由は?

ある特定のUI構成要素(こいつはデザインのキモだった)について疑念を持った時にその理由がわかった。「誰かがそう望んだ場合のことを考えてみろよ」というのがこいつを取り除く障害になっていたのだ。危険を知らせる赤旗は、この時すでに上がっていたわけだ。

「〜の場合を考えてみろよ」というのはいつだって危険信号だ。想像はその正しさを証明してくれるものなんかじゃないなどと言うつもりはない。いったんペースを落とし、距離をおいて考え、現実に立ち返れ、今すぐに、と言いたいのだ。

どんなシナリオだって想像の上では成り立つ。考えようとすればどんな突飛なユースケースだって考えつく。でも、それは大多数の人々が「本当に」必要とするものなのか?そのフィーチャーを支えているのは堅固な基盤か、それともふわふわ浮かぶおとぎの国か?

こうした障害物にぶつかった場合、我々は大概「やめとこう」という決定で終わる。もしそれが現実の問題になったとしても、そのフィーチャーは後で追加出来るんだし、その時が来るまでは、我々は想像を弄んでいるに過ぎないということになるからね。取っ掛かりの時点では少しでも身軽にしといた方が良い。本当に必要なものだったら、後々湧いて出てくるものだよ。


訳者コメント:
いわゆる feature creep ですな。気を利かすというのも善し悪しで、そのお陰でてんこもりになった実装アイテムリストを前にして途方に暮れるというのはよくある話です。書かんでも良い UML 書いたりとかね。

JavaScript が Java や c++ に比べて書きやすいというのは、Java や c++ がクラス設計という「気を利かす」フェーズを重視せざるを得ないのに対し、JavaScript は後付でインスタンスなり prototype なりをにょきにょきと伸ばしていけるという点が理由の一つとしてあるのでしょう。完先の Java、アリアリの JavaScript といったところでしょうか。実際に必要になるまでは手を付けるなというルールは作業量削減の第一歩ですからね。

0 件のコメント:

コメントを投稿