当たり前だが、何事も前工程が大事である。
ソフトウェア開発の世界では V 字モデルというやつがよく出てくる。
図の通り開発プロセスを V 字で表している。左上から右下にくだり、さらに右上へとのぼっていくのがソフトウェア開発のプロセスだ。
図の矢印の対応は左側で決めたことが右側のフェーズでテストされることを表す。つまり、V 字モデルの開発プロセスでは最初に決めたことが最後にテストされることを示している。
最初に決めたことが最後にテストされる、ということを具体的に書く。例えばあるソフトウェアの開発で「コストを xx % 削減する」とかいうことを開発を始める前に決める。そして、開発が終わってから実際に削減されるかどうかがわかるということだ。
裏を返すと、最初に決めたことに問題があるとそれは開発中、開発後にさまざまな形で現れる。ひどい場合は、コスト削減のために開発したツールで却ってこれまでの方法よりもコストがかかってしまったりする。
ソフトウェア開発の名の通り、開発をすることに重きが置かれがちだ。しかし実際のところ、開発をし始めた段階で既にその計画は決着がついていることの方が多い。開発を始める前の段階で考えられることを考えきれてない場合、だいたいいたずらに時間だけが過ぎていくプロジェクトになっていく。
別にソフトウェア開発に限ったことでもない。プレゼンの資料を作るときは「何を伝えるか」を真剣に考えるのが最も重要だ。(普段やってないけど)文書を書くときも文書を書き始める前にどれだけ準備するかが重要だ*1。聞くところによると、営業プロセスにおいても前工程のほうが大事だったりするらしい。
インタビュー記事を早く上げるのも、インタビューをする前に書くことを決めておくことが大事らしい。わかる。
改めて結論を書くほどのことでもないけれども最後に一応まとめる。
何かを作るとか、何か作業を始める前に、結局それをやる前に十分考えたかどうかが重要だ。
もちろん、やり始めて 1 分で終わるようなことに 1 時間とか 2 時間とか考えてもしょうがないし、1 時間後に締め切りなのに考えている余裕もないことがほとんどだろう。
しかし、程度はあれど課題が難題であればあるほど、時間的余裕がないと感じる時ほど、一度立ち止まって作業をする「前」の時間をなるべく多く作ることが重要なのではないかと思う。考えきれないまま作業を始めるのは、結局自ら失敗への道、不要な困難を引き受けることになる。
とわかっているのだけど、結構頻繁に不要な困難を引き受けたり、引き受けている人を見たりする。成否がわかっているので、暗澹たる気持ちになる。
*1:ゼロからサッと書き始めてそのまま書き終えるのを僕は森博嗣以外には知らない。