Allocate your tasks!
これまで私は、いわゆるシステムエンジニアとして、10以上のシステム構築プロジェクトに参画してきました。
その中には、無事成功したものもあれば、大失敗に終わったものもあります。
これまで経験してきた失敗プロジェクトを改めて振り返ってみると、いくつかの共通した問題点があったように思います。
今回はそのうちの一つ、「ひとまず目につくタスクから片付けていく」ということについて考えてみたいと思います。
木だけを見ていると森は見えない
プロジェクトでは、色々なタスクがあります。
また、日々想定していない問題が出てくるものです。
ですので、タスクは常時たくさんある状態といってよいでしょう。
その中で、ひとまず目につくもの、できるものから手をつけていくと…大体そのプロジェクトは破綻します。
なぜか?
理由は、有限のリソースを考慮にいれた作業割り当てをしていないからです。
プロジェクトは、「有限の期間内に何らかの成果を上げる活動」と PMBOK 等で定義されています。
この場合の「有限」は、時間・人的リソース・材料・経費などのことを指します。
つまり、タスクを行うに際しては、このリソースの範囲内で実施しなければならないことになります。
目の前のタスクを「木」、有限のリソースを「森」にあてはめれば、「森」を見て行動しなければならないことが自ずとイメージできるかと思います。
プロジェクトの運営は、「森」を見て行わなければ成功しません。
どうやって「森」を見ればよいか?
では、「森」をみて、具体的にどのように行動すれば良いのでしょうか?
プロジェクト管理の書籍などで色々なテクニックが紹介されていますが、詰まる所、次の点を押さえていればよいのではないか?と私は考えています。
1.各タスクの工数見積もりを行う。(時間・難易度も含め)
2.プロジェクトの目標とリソースに即して、各タスクの優先度を決定する。
3.各タスクをスケジューリングする。
4.タスクを実施する。
5.実際にやってみて問題点があったら、もう一度上記1〜4をやり直してみる。
我々の間でよく使われる「GTD」(Getting Things Done)というテクニックも、大雑把にいえばこういうことですよね。
やることをリストアップし、優先順位をつけ、限られたリソースのなかでこれらをこなしていく。
この点を意識して仕事をできるか否か?
これが、「できる」エンジニアと「できない」エンジニアを分ける1つの境界であると私は考えています。
エンジニアの性として、全ての仕事を完璧に終わらせたいという願望は常にあると思います。
また、ユーザの要望に極力応えたいというのは当然あります。
ただ、その感情に流されて何でも仕事を安請け合いしてしまって、プロジェクトを破綻させることは、プロとしてはよろしくないと思います。
決められたリソースの中で最大限の成果を出す。
これこそが、システムエンジニアの腕の見せ所であり、本当のプロフェッショナリズムなのではないでしょうか。