仕様書作成やプログラミングなどの仕事(タスク)が発生したときに,あなたはその所要時間をどうやって想定しているだろうか。おそらく過去に行った似たタスクを思い出しながら,「半日で終わるかな」,「2日はかかりそうだ」といった具合に予測しているのではないか。
そのやり方が間違っているとは言わないが,所要時間の予測が大ざっぱだと,タスクの実行に支障が出かねない。予測を大幅に超える時間がかかるかもしれないし,そのときに「もともと適当に予測した時間だからオーバーしても仕方がない」と思ってしまう。そしてタスクを完了したときに,その仕事ぶりが良かったのか悪かったのかがあいまいになる。
このように所要時間の予測ひとつとっても,経験やカンに基づく大ざっぱなタイムマネジメントでは大きな成果を上げるのは難しい。タイムマネジメントそのものが,いい加減になりかねない。
図A PSPによって作業の所要時間に関する予測精度は向上する あるプログラマを対象に,100~250ステップのプログラム作成に要する作業時間を予測してもらい,実際の所要時間を計って誤差を把握することを10回にわたって繰り返した [画像のクリックで拡大表示] |
そこで知っておく価値があるのが,米カーネギーメロン大学ソフトウエア工学研究所(SEI)の研究者であるハンフリー・ワッツ氏が考案した作業プロセスの改善手法「PSP(Personal Software Process)」だ。同氏は,組織的なプロセス改善手法である「CMM(Capability Maturity Model)」の考案者として知られる。PSPはCMMの個人版と言えるものだ。数年前から米国のいくつかの大学が取り入れており,若いITエンジニアの間で徐々に浸透しつつある。国内でも,筆者が所属する団体「PSPネットワーク」が普及活動を行っている。
PSPの最大の特徴は,タスクごとに要した時間を分単位で計測し記録することにある。この数字を基に,タスクを実行するプロセスを改善したり,あとで似たタスクを行うときに所要時間の予測に役立てるわけだ。図Aに所要時間の予測に関する効果の例を示した。プログラミング作業に要した時間を記録に残すことで,次に行うプログラミングの所要時間を正確に予測できるようになっていくことが分かるだろう。
タスクを詳細に定義する
図B PSPを使った タイムマネジメントの手順 [画像のクリックで拡大表示] |
PSPの実践手順を簡単に紹介しよう(図B)。第1のステップは,タスクの定義である。PSPの対象となるタスクについて,(1)何のために行うのか(目的),(2)実施するに当たってどんな事前準備が必要か(開始条件),(3)どれだけのことをすれば終了したといえるのか(終了条件),(4)タスクを分解するとどういう作業で構成されるのか(作業内容),(5)別のどんなタスクに成果物を引き継ぐのか,といったことをまとめる。
例えば「提案書の作成」というタスクなら,次のようになる。
目的 : 顧客ニーズを明確にし,実現方法を具体的に提案する
開始条件 : 顧客要求,計画書
終了条件 : 文書化した提案書
作業内容 : 1)顧客ニーズの分析
2)実現方法の検討
3)技術的課題の確認
次ステップ : 概要仕様書の作成
このような定義書はすべてのタスクについて,詳細に書き起こす必要はない。繰り返し行っている手慣れたタスクなら,目的と開始条件,終了条件を書けば十分だ。作業内容まで書くのは,きちんと分析・改善したいタスクだけで構わない。ただしその際には,作業内容の項目ごとに開始条件と終了条件を設定しておくのが望ましい。そうすれば後で,タスク全体だけでなく作業項目ごとに所要時間を計測して分析できる。
第2のステップは,タスクごとの所要時間の予測である。通常は過去に行った類似のタスクを探し,それにかかった時間の平均値を所要時間とする。もちろん統計分析の手法を用いて,最近の傾向を勘案して所要時間を算出しても良い。
その際に,例えば「提案書の作成」といっても毎回同じ分量とは限らないから,1ページ当たりどれだけの時間がかかったかという具合に,一定の単位に分解して考えることが肝要だ。
データから所要時間を予測
ここまでは事前準備。次はスケジュールの策定へと進む。第3のステップは,利用可能時間の把握である。タスクをいつ行うかを決めるには,まず1日単位でどれだけの空き時間があるかを正確に把握する必要がある。
といっても単に予定表を見て,「この日は会議があるから残り10時間くらいは確保できるかな」というあいまいなレベルではダメ。メールを処理する,日報を書くといった細々した仕事にも結構時間を取られているからだ。正確に空き時間を把握するには,丸1日にわたって分単位で自分の仕事を記録して,細々した仕事にどれだけ時間をかけているか確認することが不可欠である。面倒かもしれないが,PSPを実践する上で避けて通れない作業だ。
次に,タスクをスケジュールに割り当てる。これが第4のステップだ。まずタスクを分割した作業項目ごとに所要時間を設定する。その上で作業項目をスケジュールとして割り当てていく。あるタスクに含まれる作業項目は連続して行うのが望ましいが,スケジュールの空き具合によってはそうもいかない場合がある。この辺りは臨機応変でやるしかない。
第5のステップは,タスクの実行と作業時間の計測である。PSPでは,作業項目ごとの開始時刻と終了時刻,中断時間などを分単位で記録していく。できるだけ詳細に記録しておくことで,後で正しい分析・評価が可能になるのである。
タスクの完了後に行う第6のステップは,事後分析だ。例えば,予測した所要時間(つまり過去の実績値)をオーバーした場合には,作業項目にまでブレイクダウンしてどこに問題があったのかを見つけ出す。さらに過去に行った類似のタスクの所要時間と比較して,どれだけ速くできるようになってきたかをグラフに表すことも有効だ。仕事の能率が上がっていることを,データで確認できる。
なおPSPは1人で行うプロセス改善手法だが,十数人以下のグループで実践できるように内容を補完した「TSP(Team Software Process)」もある。