無いものは作る・・・、そして仕事の95%は準備期間だったりする

昨日、はがきスタジオ開発チームの取材をしていて、はっと思い出したこと。

「無いものねだりするのではなく、無いものは作ってしまえばいい!」という私自身の開発者時代の信条です。

最近はインターネットが容易に使えるため、昔のように「無いものを作る」よりも「どこかにあるかもしれないから探してみよう」と検索エンジンに頼るケースは少なくないと思います。それで目的に合致するものが見つかればいいのでしょうが、ある程度のスキルレベルに達している人々の場合、多分、目的とするものは見つからないのではないかと想像しています。

それは何故か・・・、要求されているレベルが非常に高度な場合、前例がない開発に直面することがあるからです。

MSDNの膨大なライブラリを検索しても見つからないような機能、つまりWindows APIや言語のランタイムライブラリに用意されていない機能要求を突きつけられたとき、あなただったらどうしますか。

はがきスタジオという製品は一般のお客様向けであり、年賀状や暑中見舞いなどのはがき印刷のための準備をできるだけ短時間に行えるように設計されています。開発担当者はお客様がマニュアルを読まなくともはがきのデザインができるように、ユーザインターフェイスを設計し、実装しています。

私自身もはがきスタジオのユーザなのですが、今回、はがきスタジオの開発担当者と話をして、「おぉ!」と気がつかされたことがありました。製品をお持ちの方でないとわからないかもしれませんが、実ははがきスタジオのユーザインターフェイスは既存のWindowsのコントロールを組み合わせて作られていない、完全にカスタムにGUIをレンダリングしている機能が満載なのです。マイクロソフト内部に既存のGUIライブラリがあったわけでもなく、完全に開発担当者が要求に応じたUIを「無いものは作る」というエンジニアリングによって調布の技術センターで生み出されたものです。

私がプログラマの駆け出しの頃、よくこんな言葉を耳にしました。

「こんなのできっこないよ、だってライブラリにもないし、見たこともないし、要求が間違っているよ・・・」、さて、皆さんはどうでしょう。

要求を否定してしまったら、そこから先に進むことは一生できないでしょう。

エンジニアリングの極意は、「ともかく動かすこと」、それに尽きるのではないでしょうか。文句を言ったり批判や否定するのは簡単です。前例がない場合は特にそうでしょう。しかし、前例がない状況に直面しているエンジニアは実はかなりラッキーなのです。ここぞとばかりに知識を知恵に変える最大のチャンスだからです。

でもその道を進むのは簡単なことではありません。数多くの仮説に基づいた実験を繰り返して、少しずつ要求を満たすものを作っていく必要があるからです。これはかなり地道な作業の繰り返しになります。スクラップ&ビルドというのも不思議ではないでしょう。この忍耐を要求される試行錯誤とうまく付き合えるかどうかで、エンジニアの人生は大きく変わるものだと思います。

非常に地味ではあるのですが、Plan - Do - Seeというサイクルの繰り返しを暗黙のうちにこなせるようになってくると、実は仕事というものは、仕事全体を100%として95%くらいが準備期間ではないかと感じるようになるかもしれません。

えっ?5%で完了するの?と思われる方もいるかもしれません。実はそうではなくて、3%で完了すると思います。残りの1%はfine tune、より成果を洗練させるための部分、最後の1%は全体の振り返りです。

どうして3%で?、それは、準備期間の中での試行錯誤で、ソフトウェア開発であれば多くの問題が解決できるからです。また多くのテストプログラムが必然的に作られ、多くの実証済みの知識が蓄積されることも忘れてはいけません。

反対に捉えれば、準備を怠れば怠るほど、時間が非情に過ぎるだけで、本質的な仕事は進みません。当てのない作業を繰り返すだけになってしまうからです。

「急がば回れ」という言葉があります。とんでもない要求が突きつけられたとき、非常に短期で完成させなければいけない開発案件を突きつけられたとき、焦って行動に入る前に、まず準備する、ということを考えてみてください。より高度な領域に進む人は、モレなく無駄なく重複なく、ロジカルシンキングにおけるMECEということについて学ぶことも重要かと思います。

忙しそうにしていなくて、超人的なパフォーマンスを発揮する人々は、たぶん、準備(あるいは計画)を考えて行動していると思います。その裏に数多くの努力があることはいうまでもありません。

無から有を創造する、これぞソフトウェアエンジニアリングの醍醐味です。

無いものは作る、機会があれば皆さんも考えてみてください。また、普段の仕事を振り返って、皆さんがどれだけ準備に時間を割いているかを測定してみるのもよいかと思います。