2008/04/15

苦しさに比例して

片田舎のプログラマの仕事の話。これは僕の覚え書きのようなもので、教科書めいていてつまらないかもしれない。でも書く。

えーと。
何かモノを作る上で、最も重要なのが『何を作るのかはっきりさせる仕事』。『要求定義』とかいうらしい。
ソフト屋(プログラマ的な人々)がなんか作るとき最初にやる仕事がこれです。

たとえばお客さんが来て、「1000万出すからオリジナル目覚まし時計を1000個作ってくれ」と言ってきたとしましょう。
そこで「はい作ります」と言ってしまったら負けです。ホントに負けるので注意が必要です。休み無しで働かされた挙句、評価も給料も下がったりします。上司がOK出しそうになったら多少手荒な手段を使ってでも即答を避けさせるべきです。ボゴォッってやるべき。
なぜか。

お客さんのイメージしている「オリジナル目覚し時計」の内容がわからないから。
例えば「時間になったらカーテンを開けながら爽やかな音楽を流す」といった大仕掛けなモノかもしれないし、「土日は鳴らないように設定できる」といった複雑なモノかもしれない。
「耳障りなベルの代わりに声優さんの声を超高音質で再生したい」って言い出すかもしれないし、「同じ形の時計が10個1セットで、どれが鳴るかわからないようにしたい」って言い出すかもしれない。
こうやって書くと『何を作るか』というのはハッキリさせないと危なくって仕事なんて出来ないはずなんだけど、数年前まではもらってきた仕事を「はいはいやりますよー」って感じで内容も確認せずに引き受けちゃうケースがうちの会社では結構ありました。

「あー時計ね、簡単簡単」って作り始めたら、あとから「アナログだけだとなんかショボいからデジタル表示もつけろ」とか「朝と夜で文字盤の色が変わる仕掛けをつけろ」とかお客さんはやっぱりどんどんわけのわからないことを言って来るわけですよ。
それでも契約しちゃってるもんだから断ることもできずに変更しながら作りつづけるしかない。しかも契約期間内におわらせないとうちの責任になるとか。もう怒っても泣いてもどうにもならない。大変です。とにかく言われたものを作る。
そのうち3ヶ月ぐらい土日も盆休みも休まずずっと会社にいるとかわけのわからんことになっている自分に気づきます。真夜中に5階の仕事場から帰るとき、「あれ?階段一段一段下りるより窓からジャンプした方が早く下につかね?」とか思いついたりして大変危険です。

まあそんなわけで『何を作るのかはっきりさせる仕事』というのはとても重要。具体的には、時計だったら
「デジタル表示、24時間表記、『:』は1秒点灯させたら1秒消灯の繰り返し、時間設定の方法はまず設定ボタンを押してから……」と、当たり前なようなことも事細かに文章化していきます。
実際にはこの書き出し作業をしてる間にもう契約しちゃってるとかそういうタイミングの違いはいろいろありますけど、要求定義がきっちり出来ているかいないかでそのプロジェクト(とそれにかかわる開発メンバーの)の運命が左右されるわけです。

ちゃんと出来てれば、途中で無茶な変更を要求された時に「これは最初こう決めてましたよね。変えるにはお金と時間がかかっちゃいますけどいいですか?」って交渉できるからね。
まあどこまで細かく書くかってのは状況によります。細かく書きすぎると終わんないからね。
あと、最初から決められないこともあるのである程度は後から変更できる柔軟さも必要……っていうか、変更が無いプロジェクトなんて無いから、押さえるとこは押さえるっていうのが理想であり究極なんだと思います。

こんな辺境のブログで書く内容としてはこんなところかなあ。えらそうに書いてますがなかなか思うようには作れません。
お客さんというのはピュアにワガママであるのが普通なので、まあよくお話するしかないです。わがままな事ばかり言われてうんざりすることも多いけど、まだ世の中に無い製品を考えるってのはある意味面白いお仕事だと思います。
しかし最近、こういう仕事すら減ってるんだよなぁ。どうなることやら。

10時に帰ってきてこんなの書いてるんだからしょうもないよな。しかしこれ、書いてる時に一瞬過去へトリップした(笑)