システム開発では、開発を行う前にスタートからゴールまでの道筋を計画して、その工程を時間軸に落としてスケジュールを作成します。
そして、作成したスケジュールに沿って作業を進め、最終的なゴールに向かいます。
システム開発によっては、作成されたスケジュールをもとに、多くの人達、複数の会社が開発に関わり、ゴールに向かい作業を進めていきます。
また、トラブルが発生した場合には、多くの作業、複数の人達に影響がでる場合もあります。
ただ、システムの開発にはトラブルがつきものです。
計画通りに開発作業が進まず、スケジュールが遅延したりすることもよくあります。
そんなときには、発生したトラブルについて、システム開発に影響がないように解決していかなければなりません。
ただ、状況によっては開発スケジュールに影響が出てしまうこともあります。
今回はこのシステム開発におけるトラブル発生時のスケジュール遅延についてお話をしていきます。
プロジェクトには様々な立場の人が関わってきます。
プログラマーからシステムエンジニア、PM・PLなど。
開発の原動力であるプログラマーが頑張る(計画時間以上の作業を行う)ことで、スケジュール遅延をリカバリしていくというパワープレイもありますが、今回はそうではなくて、プロジェクトメンバー全体としての解決手段という観点でお話をしていきます。
遅延したスケジュールをどのようにリカバリしていくか(要するに予定していたスケジュールより短縮させるか)というところがポイントとなります。
こちらにフォーカスした形でお話を進めましょう。
プログラマー増員によるスケジュール遅延リカバリ方法
結局、トラブルが発生してスケジュールが遅延した際には、原動力となるプログラマーの作業を増やしてリカバリさせるか(遅れている分の作業を進めるか)が大きな力にはなります。
まずは、そこに対して素直にプログラマーの作業量を増やし解決する方法になります。
大きなスケジュール遅延が発生した場合。
これは、当初想定していたよりも作業する時間が増えるということです。
ただ最終ゴールの日付を変えることはできません。
であれば、日々の作業量を増やしていくしか有りません。
従って、プログラマーの作業量を当初の予定よりも増やすことによりトラブルを解決、スケジュール遅延を解消していくというやり方です。
現在開発を進めているプログラマーに「頑張ってください!」と言って、スケジュール遅延をリカバリさせる(現在のプログラマー自身の作業時間を増やす)方法もありますが、ここでは別のアプローチで考えます。
それはプログラマーを一時的に増員させるということです。
例えば、今まで2人のプログラマーで作業をしていたところへ、1人追加して3名のプログラマーによりリカバリー対応を進めるというやり方です。
ただ、新しくヘルプで入るメンバーはもちろんその開発の内容がわからない為、必要な事を覚えるという時間を要します。
本開発作業に慣れていないことから、システムの難しい部分については対応が難しい為、すぐにでも対応できる簡易な箇所のヘルプとなる場合が多いです。
それでも、全体のプログラマーの作業量としては増加するため、リカバリーを行えるというわけです。
また、プログラマーを増員するということは、それだけコスト(お金)が計画よりかかってしまうことになりますし、またそのタイミングで最適なプログラマーが空いているとも限りません。
このようにデメリットもありますが、スケジュールをリカバリするためにどこまでこのデメリットを許容できるかは、プロジェクト管理者の判断となります。
プログラマーの増員でプログラマーの作業量を増やして遅れを取り戻す。
スケジュールやタスク調整を行うことでの遅延リカバリ方法
次の方法としては、プロジェクトのスケジュールや全体のタスクの組み換えを行うことで、スケジュールを短縮して、遅延を解消していくという方法です。
例えば以下のような方法にてスケジュール調整することで、全体を短縮します。
- 後続で予定していた作業を前倒しする
- 本来であれば順番に行う作業を並行的に実施する
これらの調整作業の役割としては、PM・PL・システムエンジニアあたりが検討、決定していくことになるでしょう。
もちろん、単純にスケジュールのパズルだけではなく、短縮スケジュールにした際に本当にそれが実現できるのかの確認も多く行われるでしょう。
- 調整後のスケジュールで作業が行えるシステム上の準備ができているのか。
- 調整後のスケジュールに適したメンバーの配置が可能なのか。
などをしっかりと考慮しておく必要があります。
当初計画からは変わってしまう為、再度ゴールまでの全体像を把握した上で、今発生しているスケジュール遅延を解消するために、どこまでのリスクが取れるかを考えて、スケジュールやタスクの組み換えを実施して、進めることになるでしょう。
スケジュールやタスクを調整することで、全体のスケジュール短縮を行い遅延を解消する。
成果物に対しての調整を行うことでスケジュールのリカバリ方法
プロジェクトの終わりには、最終的な成果物ができます。
これを期限までに完成させることがゴールとなります。
この成果物に対しての調整を入れていくことが次の方法になります。
言い方を変えると、元々想定していた内容からズレた成果物として一旦のゴールをむかえるという方法です。
これらはPM・PLなどのレイヤーでのお話になってくるでしょう。
また、もちろん顧客やプロジェクトの責任者などの合意が必要となりますし、契約などで定義されている内容でしたら、難しい可能性もありますし、可能であっても契約変更が必要にもなってくるでしょう。
また、そのプロジェクト遅延の原因が誰にあるか、成果物がどのくらい重要なものか。など様々な要因が絡んでくるでしょう。
それでも、期日までに間に合わせることを重視した場合。
100点の成果物で間に合わないより90点でも一旦のゴールとする。
というかたちにて、顧客や責任者と合意をしていくという方法です。
(もちろん残りの10%については誰がいつまでに解決するという話は別途していかなければなりませんが。)
例としては、試験の実施フェーズにて、大量の不具合が発見され、これを全て解決していくには明らかに間に合わないという状況です。
その場合、
期日までには大きな影響がある不具合は全て修正して解決はする。
ただ軽微な不具合については、期日後に対応とさせて頂く。
このような整理で、顧客や責任者と合意していくというお話です。
顧客や責任者にもよりますが、開発状況をさらに悪化させることは誰も望んでいない為、最善のゴールへ向かうために何が最適な選択肢なのかを選択できる状態として、早めの判断をすることが大切となります。
期日には100点出ないものを一旦の完成として、残りは期日後に調整する。
さらにスケジュール遅延を発生させない為に
今発生しているトラブルの収束。
そして、スケジュール遅延のリカバリを進めることで話をしてきました。
ただもう1つ考えておかなければならない事は、更なるトラブルの発生です。
リリースに追われている開発現場では、トラブルが連続して発生することがあります。
システム開発を行ったことがある方であれば経験があるでしょう。
リリース前(特に試験時など)には、これまで考えもしなかったような、トラブルがいくつも同時に発生しやすい(見つかりやすい)状況となってきます。
1つのトラブル対処に追われている際には、別の場所でもう1つのトラブルが発生。
さらに違う場所でもう1つ・・・など良くあります。
その際にも基本的には1つ1つ最適なリカバリ対応を行う必要があります。
そして複数のトラブルには優先度付けをすることが重要です。
すべてのトラブルに対して、フルパワーで対処することはできません。
トラブルに対して優先度をつけて、1つ1つ確実に対処することが重要です。
複数のトラブルには優先度付けをして1つ1つ確実に対処する。
まとめ
今回はシステム開発のトラブルから発生するスケジュール遅延。
これに対しての解決の方法について、プロジェクト全体からのアプローチについてお話をしてきました。
内容としては以下でした。
もちろん今回紹介した方法以外でも、様々な解決方法があります。
また、プロジェクトの役割のレイヤーが上がる(プログラマー⇒システムエンジニア⇒PL⇒PM)ごとに解決のパワーは増すのですが、それだけプロジェクトについて大きな課題と認識されていきます。
ただ、プロジェクトをしっかりと完遂させるためには、必要な手段はとるべきです。
そして今回紹介した方法の1つで解決するというわけではなくて、状況によってはあわせ技などの複数の手段で解決していかなければなりません。
プログラマーの人達には、システム開発におけるトラブルが発生した際には、プログラマーだけが頑張るということではなく、別の解決方法も多数あるということを理解してもらえれば幸いです。
以上です。
コメント