開発現場での要求の変化
就職してから10年以上、組込み系ソフトの開発に従事してきました。この10年でさまざまな変化を体験してきましたが、1番驚愕すべきは、やはり「ハードウェア」の進化です。
組込み系ソフトの特徴として、非力なハードウェアをカバーするべく、少リソース/ハイパフォーマンスな製品が要求されます。加えて、一度世に出ると修正がほぼ不可能なため、品質面についても非常に厳しい要求が加えられます。
私が入社した当時、まだCPUのクロックが10MHz程度、メモリも数百キロバイトと、今では考えられないような低スペックのハードウェアで開発を行っていました。開発環境も同様、フルコンパイルに一晩かかるような状況でした。10年後の現在、ハードウェアは信じられないような進化をとげ、処理能力/リソース量とも格段に向上しました。これらの恩恵により、開発環境も改善され、開発スピードも加速してきました。
しかし、開発者の苦労は一向に改善されませんでした。主な理由の1つに、「開発期間の短縮」が挙げられます。「小リソース」「高性能」「高品質」を満たしつつ、さらに「開発期間の短縮」も満たさなければならず、開発環境の改善による効果を上回る負荷がかけられる結果となりました。そして、事件は起こったのです……。
後悔先に立たず
ある日、致命的な不具合が発生致し、関係各所へ多大な迷惑をかけてしまいました。この問題を解決するために多くのリソースを投入し、また、私自身も問題解決に向けて奔走し、徹夜や泊まり込みといった辛く悲しい状況に追い込まれました。不具合の原因は、ほんの数ステップのプログラムミスでした。たった数ステップのプログラムミスのために、自分を含めた多くの方々にご迷惑をかける結果となってしまい、「あの時、レビューとテストをもっとしっかりやっていれば……」と、何度も後悔したものです。しかし、後悔ばかりしていても始まりません。二度と同じ過ちを繰り返さないよう、開発手法を改善することにしました。
これが、独善への第一歩となったのです。