PSP(Personal Software Process)をはじめよう
こちらはプレミアムユーザのみの記事になります。一般公開はされません。他にも多数の機能を備えたプレミアムユーザ登録は月額500円にて。
PSPという言葉は先日知ったのですが、Personal Software Processの略とのことです。コンセプトとしては“ソフトウェアプロセスを個人に適用”することにあります。今回はこのPSPについて紹介をしたいと思います。
ソフトウェアプロセスというと、ソフトウェア開発のためのプロセス(要求定義,設計、プログラミング、テスト、納品)を指します。これまで様々なソフトウェア開発手法が生み出され、そのためのツールが作られてきました。とは言え、今でも決定版というのは存在しません。
PSPについても決定版ということはないと思われます。ですが、ベースになる部分は個人が自立的に成長する中で活用できるのではないかと思います。
目次
PSPの基礎
PSPの基礎はとても簡単です。
-
自分の生産性を把握する
-
生産性を分析し、計画に反映する
-
結果を分析し、犯しやすい過ちを知る
-
犯しやすい過ちを開発過程で積極的につぶす
この4つになります。さらに短くすると、
-
記録する
-
分析する
-
反映、改善する
ということです。
記録する
記録するというのは自分の行っている作業について正確に記録し、かつそれを積み重ねるということです。日々漫然と行っている作業にラベルを付け、その作業時間を記録していきます。これによって自分が行っている作業がどれくらいの効率で行われているかを把握できるようになります。
記録する時に必要な項目は以下があります。
-
タスク登録日時
-
タスク予想終了時間
-
作業開始日時
-
作業完了日時
-
タスク完了日時
その他にはタスクの名前であったり、顧客名等を記録しても良いかも知れません。その辺りは個々人の状況に応じて変わります(PSPはあくまでも個人のツールなので)。これを積み重ねると以下のような情報が分かります。
バリューストリーム・マップ
全体工数における付加価値を与えた時間の割合が分かります。もちろん、平行作業を行っていたりするとこれだけでは見えづらいのですが。少なくともタスクの登録から完了までと、作業開始と終了が全く同じであれば全ての時間が付加価値の追加に費やされたことになります。タスクが登録されてから放置されていたり、作業が完了しているのにも関わらず仕掛品として放置されているとしたら全くの無駄な時間になり、それは機会損失に繋がります。
予想と実際の差異
人の見積もりというのは総じて甘めになりやすいものです。急なミーティング、さぼりたい気分、メール処理、電話…など作業の邪魔をするタスクは急に飛び込んできます。そうしたタスクに無関係な浪費時間も合わせた上で、実際の作業完了日時を算出する必要があります。これを繰り返すことで、より正確な見積もりができるようになります。
分析する
ここでの分析とは上記の予想と実際の差異を知ることや、より効率的な開発を行うにはどうしたら良いかを考えることにあります。また、重要なのが“仮定を立ててみて、それを実行する”ということにあります。個々人の開発プロセスにおいて正解はまずありません。少ない時間でより成果の大きい結果を残すことが重要で、そのための手段は個々人の置かれた状況によって異なります。そのため、自分なりの仮定を立てた上で、次にそれを活かしてみるという作業が必要になります。
クセを知る
良いクセもありますが、ここでは悪いクセについて把握することです。どういった条件下でバグを含みやすいか、テストの過程に時間がかかるか知る必要があります。このプロセスはタスクが完了した後に分かる(ユーザクレーム等)かも知れません。その時にも前もってつけていたタスクを振り返り、何が問題だったかを把握できるようになります。自分のクセというのはなかなか自分では分かりません。また、開発した直後はバグ等含んでいるはずがない、と思いがちです(その願望は大抵外れますが)。だからこそプロセスを記録することが重要なのです。
反映、改善する
記録した内容を分析したら実作業に反映しなければ意味がありません。そのため、分析しやすいように記録を取る必要があります。逆に言えば分析に無用な項目は記録したり、やたらと細かくする必要もありません。反映は実際に結果が分かる場合もあれば、うまくいかなかった手法を止めて別な手法を試すと言った仮定に基づくものもあると思います。いずれにしても変更する点を明確にして、何度も繰り返し試してみる必要があります。
何に記録するか
自分が使いやすいものであれば何でも良いのですが、分析のことを考えるとExcelのような表計算ソフトウェアが良いかも知れません。また、The Software Process Dashboardのように専用のソフトウェアもあります。ただ形式にこだわるよりも、まずは記録を取ることを優先するべきだと思います。記録していく中で、どういった項目が必要か、何を記録するべきかを洗い出していけば良いのではないでしょうか。
PSPを推進するダッシュボード「The Software Process Dashboard」
http://www.moongift.jp/2010/11/2010111400/
まとめ
PSPは個々人が自立して開発生産性を高めることを基礎としています。ソフトウェア開発プロセスは大規模な場合、一定の枠組み(フレームワーク)に当てはめて品質を標準化しようとします。それに対して小〜中規模の場合、個々人のスキルがそのまま品質に影響する傾向があります。そのため、個々人がスキルアップすることは生産性の向上および品質の向上につながります。また個人のスキルが向上するというのは社会人としてのキャリアパス向上にもつながりますので、PSPに取り組む価値があるのではないでしょうか。