誰もが経験したことがあると思いますが、進捗の遅れ。
いくら作業を効率よく行おうとしても、結局遅れを出してしまうことはよくあることです。
致命傷になる前にとるべきことはたくさんあります。
ぜひ、その考え方を身につけて、遅れを出さないようにしていきましょう。
スケジュールは必ず余裕を盛り込む
システム開発が始まると、全ての工程が終了するまで、スケジュールが組まれます。
どういう流れで作業を行い完成させていくのか予定を立てるわけです。このスケジュールは、なにもシステム開発に限った事ではなく、どんな仕事でもスケジュールというものが存在します。
その予定に沿って、作業が進んでいるのかを管理するのが「進捗管理」です。
プロジェクトリーダーやチームリーダーは、この進捗管理が重要な仕事のひとつになります。
しかし、なにも進捗管理を人任せにするということではなく、各自が行うことでよりスムーズに作業が進みます。
そこで、作業を予定通りに進めるための考え方をぜひ学んでいただきたいと思います。
まずは、大前提として、
スケジュールを立てるときには、必ず、何かアクシデントがあることを想定することが大事です。
設計でもプログラミングでも、あるいはテストでも必ず予期せぬアクシデントが発生します。
期限ぎりぎりまで、その作業をしていたら、なにかアクシデントが発生してしまえば、その時点で遅れが発生します。
例えば、実際に運用されているシステムの障害が発生した場合など、超緊急対応を余儀なくされます。
現行の障害が発生したから、スケジュールを遅らせることはできません。
また、既に遅れているメンバーのサポートや調査などの割り込み作業等はよく起こります。
それらをあらかじめ見込んでスケジュールを立てることを意識するということです。
割合的には、どれくらいの余裕を持たれればよいのかは、作業期間の2割はほしいところです。
具体的にいうと、
プログラミング期間が全体予定として、5日間あったとします。
1日の稼働を8時間で計算すると、5×8時間=40時間。その2割とすると、
40時間×0.2=8時間
つまり、1日分の余裕が必要となります。
ですので、個人的なスケジュールを考えたときに、4日間でプログラミングを行うようにスケジュールを立てるということです。
ですが、ここで疑問に思う方もいると思います。
そもそも5日かかる見積もりの作業量を4日で行うのには無理があるのでは?
という疑問です。
ですから、考え方を学ぶ必要があるのです。
5日の作業を4日で終わらせるにはどうすればよいのか考える
さあ、考えてください。
そもそも5日必要な作業なんです。
そのようにリーダーたちが全体的にスケジュールを立てたのです。
ひとつの考え方は、作業を分割するということです。分割をすることで、自分でも作業を進めやすく、管理しやすくなります。
また、次工程にもよりますが、次工程が単体テストの場合、単体テストを行いながら、残りのプログラミングの作業を行うということです。これは次工程で吸収するという言い方をします。
例えば、自分が担当しているプログラムを4つに分けてみます。あくまで自分レベルで分けられる単位に分けます。関数が4つあるのであれば、関数単位でもいいでしょうし、ソースが4つあるのならば、ソース単位でもよいでしょうし、一日単位に細かく区切ってみるのです。
その区切った単位を1日の作業にします。1日1つを終わらせられれば、4日で終わることができます。
しかし、そんな単純な話ではありません。
当然、スキルの問題もあるでしょうし、他の人にとっては難易度の低いプログラムかもしれませんが、あなたにとっては、難しいものかもしれません。
ですから、区切った4つの作業は1つあたり1.5日かかるかもしれません。そうすると6日かかることになります。
1日は余裕を持っているので、1日の遅れになってしまいます。
この1日の遅れを取り戻すために、残業や土日出勤などで物理的に時間を増やすことも常套手段として存在します。しかし、残業や休日出勤は効率が上がりません。
思うように進まないのです。やる気がでないと言ったほうが良いかもしれません。
かえってミスを連発してしまい、さらに遅れを出してしまうかもしれません。そうなったら目も当てられません。
では、どう考えればよいのか?
はっきり言いますが、そもそもその作業を5日で行うことは不可能ということになります。あなたにはできないのです。
あなたのスキルにあった作業ではないということです。それを事前に把握するためにも、作業を区切るのです。
間に合わない区切ったひとつの作業を誰かにやってもらうか、次工程である単体テストをやりながら一緒に仕上げるか。しかし、そんなことができるのか?
できます。
早めにリーダーに報告をすることです。できません、と。
アラームを挙げるということです。
チームで考えたときに、あなたがひとりで抱え込むことで生じる遅れは、誰かが行えば、全体的に見れば予定とおりに進むかもしれません。
そうすれば、4つの作業ではなく、3つの作業を行うことであなたは遅れないで済むのです。
この考え方は、とても重要です。
意地やプライドで何が何でもやってみせると息巻くのは一見カッコ良いことですが、それで遅れを出してしまったら、カッコ悪いのです。
自分のことだけを考えると、どんどん状況は悪化します。全体で考える癖をつけてください。
なにも恥ずかしいことではありません。
これができない人が多いから、どんどん現場は炎上していくのです。
システム開発とは複数のメンバーで行い、目的を果たすためのチーム開発なのです。
そのことをよくよく覚えておいてください。
チームで考えるのです。
この視点がとても重要なのです。
ですが、新人や内気な人はこれが特に出来ません。言うと、怒られるとか、自分が無能と思われるのが嫌だとか、自分中心にものごとを考えてしまいます。
しかし、システム開発の本質を思い出してください。
それは問題を解決することでした。
問題を解決することとは、目的を果たすための手段なのです。
ユーザーの困ったことや悩みを何とかしてあげることなのです。
あなたが無能であろうとなかろうと、ユーザーには関係ありません。
関係あるのは、きちんと頼んだとおりにシステムが出来ることだけです。満足のいくシステムが出来上がることだけなのです。
ですから、ユーザー視点で考えると、あなたにできることは、できないことを把握することなのです。そして、そのできないことをできる誰かにお願いすることなのです。そのためのチームです。
あなたが、リーダーであるならば、スキルがまだ高くないメンバーに無理なスケジュールで作業を行わせていませんか?チームに上下関係は罪でしかありません。
フラットにすることで、誰もがチームのことを考えられる体質につながります。それは、やがて、ユーザーに喜ばれる、本当の意味で感謝されることにつながるのです。このことをよくよく覚えておいてください。
もし、あなたは本当はできるのに、楽をしようとリーダーにできませんと言っても通用しないこともよくよく覚えておいてください。やらないのは言語道断ですから。
まとめ
あくまで、ここで挙げた考え方は、一例です。
これが全てではありません。ひとつの考え方です。
スケジュールは必ず余裕を持たせて考える。
作業を分割して行う。
スケジュールに間に合わない作業を把握する。
間に合わない作業は、リーダーに相談をする。つまり誰かにやってもらえるようにヘルプを頼む。
できない作業があるということは、できない作業をあなたに割り振ったリーダーの責任でもあるのです。
そう考えると、あまり深刻にならないで済みます。
そういう考え方、視点をもってください。遅れを出さないように、作業を行うにはどうすればよいのかということです。
そういう思考を持てば、さまざまなことに応用が効くようになります。
そのための、プロジェクトチームです。
それがあたりまえのようにできるチームは成功するでしょう。
カテゴリ:進捗管理