川村渇真の「知性の泉」

幅広い技術を習得して上手に手を抜く


必要な技術を習得するのが先決

 質の高いシステムを構築するには、プロジェクト管理、ニーズ分析、使い勝手まで含む各部のきちんとした設計、仕様や運用ルールなどの文書化、適切なレビュー、入念なテスト、システム資源の管理などが求められる。これらを全部満たすには、かなり工数が必要だ。しかし、実際の開発では、十分な時間を確保できることはまれである。良くない状況だが、マトモな開発方法を知らない人が多い状況では、残念ながら改善される見込みは少ない。では、どうすればよいのだろうか。
 現実的な方法は、上手に手を抜くことである。各作業の重要な部分は確保し、重要度の低い部分は省略または簡素化する。作成物の最初の概略説明を文書から口頭に変えたり、報告内容を簡単にしたりとかだ。また、レビューなどの回数を減らす手もある。どの程度まで省略したり簡素化するかは、開発対象のシステムによって異なる。重要なシステムほど、手を抜く度合いを低くする。また、どの部分の手間を減らすかも、システムごとに判断する。
 作業のどの部分で手を抜くにしても、適切な作業方法を身に付けていなければ、きちんと終わらせられない。部分的に手を抜くからといって、必要とされる能力レベルが下がるわけではない。やりたくないとか面倒だからという理由で作業を減らすのではなく、時間が不足するので仕方なく省略するのだという点を、まず理解しなければならない。
 手を抜いても作業の質を確保するためには、きちんと作業できる能力が必要だ。マトモな作業方法を知っているからこそ、どの部分なら省略可能か判断したり、一部を省略しても適度な質を確保できる。

能力が高いほど省略する部分が減る

 作業をどの程度まで省略するかは、参加メンバーの能力に大きく関係する。一般的に、能力が高いほど仕事が早いため、同じ時間でも多くの作業ができ、結果として省略する部分が少なくて済む。
 能力の低い人は、悩んでいる時間がかなり多い。仕様書の作成であれば、どのように書いたらよいのか何時間も悩んでしまう。テストが担当なら、どんな風にテストしたらよいのかで悩むといった具合だ。これらは何も生産しない時間なので、できる人と比べると無駄な時間でしかない。逆に迷わずに作業できるなら、すべての時間を有効に使えて、どんどんと仕事がこなせる。両者の差は、相当に大きい。
 たいていの作業では、作業内容の標準化、作業に必要な基本能力、作業の上手な進め方の3要素を満たすと効率的に進められる。仕様書の作成なら、以下のような内容になる。

無駄なく作業するための3要素(仕様書作成の場合)
・標準化:仕様書の書式を事前に規定する
・必要な基本能力:分かりやすい内容で素早く書く
・上手な進め方:設計しながら書き進む

 作業内容や作成物の仕様が標準化されていれば、悩む部分が大きく減るので、効率的に進められる。また、他の人が作成した内容を見るときにも理解しやすく、全体としての効率が上がる。標準化の内容を決めるときには、仕様書がレビューにも使えるように、前後の工程を十分に考慮しなければならない。
 対象作業に必要な基本能力は、仕事の質に大きく関係する。仕様書の作成なら、設計内容を正確かつ分かりやすく書くことが求められるので、作文技術が重要である。他の作業でも必要とされる能力だけに、作文技術を身に付ける価値は大きい。ちなみに、書く中身の善し悪しに関しては、仕様書作成の範疇ではなく、設計能力に関わる部分だ。それは別に身に付けなければならない。
 作業の上手な進め方は、無駄なく作業するためのコツが該当する。仕様書作成なら、設計が終わってから書くよりも、設計しながら書いたほうが効率的となる。また、仕様書として整理しながら設計するので、設計内容の欠点に気付きやすいメリットもある。
 以上のような3要素を各作業で行えるようになれば、かなり素早く作業できる。どの技術でも、この3要素を意識しながら習得すればよいだろう。

どの部分を省略するかは大まかに方針を示す

 チームで開発する場合、省略箇所をチーム全体で統一しなければならない。作業の種類ごとに、どの部分が必須でどの部分が省略可能なのか、大まかな方針を明らかにする。大まかな方針で構わないのは、各人の能力によって省略する度合いが異なるからだ。
 とくに設計では、対象システムに必要な特徴を理解し、性能、機能、柔軟性、信頼性などの項目で、どの程度重視するかを決める。それに沿う形で、省略できる作業を洗い出す。もし信頼性が重要なら、信頼性に関するレビューを省略しないとともに、関連するテストも減らさない。他の要素でも、同様に考慮して省略部分を決める。
 方針の明示方法だが、標準的な作業内容を基準に、省略または簡素化する部分を示す方法がよい。もし標準的な作業内容がないなら、省略した後の作業内容で示す。
 能力の高い技術者に限っては、細かな部分まで口出しされるのを嫌うので、どの部分を省略するかを本人に任せたほうがよい。ただし、あまりにも勝手に行動されると困るので、どのような方針で作業するのかは、チームのリーダーが事前に確認する。もし納得できない場合は、妥協できる点を探すとか、最悪の場合には強制的にやらせる。リーダーと担当者の両方が優秀な技術者なら、意見が大きく食い違う可能性は低いはずだ。

 以上のように、厳しい条件でも質の高いシステムを構築するためには、上手に手を抜いた作業が求められる。そのために必要なのは、開発メンバーの高い能力である。厳しい条件でも質を確保できるように、自分の技術を幅広く磨いておきたい。
 最後に重要な点を1つ。相当に厳しい条件で開発させることは、本来あってはならない。厳しい条件だと成功するのが難しいだけでなく、適切な日程よりも結果的にオーバーしやすいからだ。そんな状況は明らかな失敗であり、その責任を明確にして、再発しないための対処も必要である。

(1999年9月30日)


下の飾り