読了時間:5分
ソフトウェア開発において、良い、速い、安いという前提を実現することは困難である。 3つとも手に入れることはできるのでしょうか? バランスをとることは可能なのでしょうか? ここではそれについてお伝えします。
ソフトウェア業界で働く私たちの多くは、プロジェクトの見積もり、相談、あるいは見積もりに取り組み始めると、市場からのほぼ不可避な要求、すなわち良い、速い、そして安いソフトウェアを開発することに直面したことがあると思います。 この3つの変数を同時に手に入れることは可能なのだろうか。 この考えはユートピア的でしょうか。
この質問に答え、この仮説の実現可能性を確認するためには、まず 2 つの重要な考えを確認することが重要です。 ソフトウェア開発に値段をつけるのは、(カスタム開発ではなく、パッケージ・ソフトウェアを購入しない限り)何かと複雑です。その価値には主観性が存在するだけでなく(多くの基準に基づいて)、プロジェクトを遂行するのがより簡単かより複雑かという違いも存在するためです。
見積もり、成功のための柱
無形の分岐点を考えると、正しい見積もりを行うことは、それが近似であることを考えると、予算超過や時間の浪費を回避するために非常に重要です。 ソフトウェア プロジェクトの見積もりに役立つ 10 のヒント
優れた見積もりが開発プロジェクトの成功の基礎であることを念頭に置き、すべての見積もりが工数に変換されるという事実を無視することはできません。
要するに、プロジェクトの見積もり、計画、実行が人によって行われることを知れば、専門家の品質と専門知識がプロジェクトのコストに影響することが推論できるのである。
良いもの、速いもの、安いもの
ソフトウェアが無形の存在で、特に明確な見積もりがない場合は価格を定義するのが難しいことを理解した上で、良いもの、速いもの、安いものの属性と、それらを組み合わせることが可能だが 3 つすべてを同時に持つことはできないことを説明します。
良くて速い
速さで良いことをすることは可能である。 そのためには、見積もりをしっかり行い、スピードが結果の質に影響しないよう、プロジェクトの実行計画をしっかり立てることが重要です。
品質とスピードを達成する鍵は、プロジェクトに取り組む人材にあり、彼らはプロジェクトに取り組むのに十分な資格がなければなりません。 専門家の質はコストの決定要因であることを忘れてはならない。
スピードは生産性に逆効果になることもあることを考慮に入れる。 理論的には、チーム(とそのメンバー)はある時間で生産のピークに達し、プロジェクトの終わりまでそれを維持する。 速度が速いほど、チームが生産性のピークに達する時間は短くなります。
同様に、調整も分析する要素になります。
同様に、調整も分析する要素になる。並行して作業する人が多ければ多いほど、より大きな調整が必要になる(おそらく調整役としてさらに人を加える必要がある)。 このような場合、多くの経験を持つチームを持つことが必要である。
Fast and cheap
ここで、3 つの変数の組み合わせのうち 2 つ目を紹介します。 何かを速く安く行う最も簡単な方法は、品質なしで行うか、少なくとも、希望するものより劣る可能性があることを意識することです。 ソフトウェアが重要な情報を扱わない限り、あるいは組織の機密性の高い部分に依存しない限り、品質をある程度まで犠牲にすることができます。
速度効果については、将来的にアプリケーションの品質を改善できるため、製品が機能するための主要機能を備えた状態で生産を開始することが可能です。 このような場合、次のことが可能です:
- コードの品質を最小限にする
- ユーザビリティを単純化する
- コードレビューを脇に置く
- 品質管理とテストを減らす
こうすることにより、おそらく基本機能のあるツールを得るでしょうが、100%満足のいく製品を得ることはないでしょう。 使い勝手は最高ではないかもしれませんし、コードの品質、拡張性(変更・拡張の可能性)、再利用性にも問題があるかもしれません。
これは、デモ アプリケーション、コンセプト テスト、重要でないソフトウェア、または時間をかけて拡張可能なアプリケーションに当てはまります。
Good and cheap
私たちの式の最後をあげましょう。 クライアントが安くてよいソリューションを求めている場合、迅速な納品を期待することはできません。
よいものを許容できるコストで行うことはできますが、時間を犠牲にすることになります。 基本的に、時間があれば、計画が立てやすくなり (並行するタスクがそれほど多くなく、調整もそれほど必要ないため)、関係者の生産性のピークがより長く続くことになります。
良いものを安く手に入れることは、時間が重要な変数ではないプロジェクト、また、増分プロジェクトや、部分時間のチーム (内部プロジェクトまたはイニシアチブがある) に向いています。 ソフトウェアの品質か価格か。
まとめ
ソフトウェア開発では、ソフトウェア開発の良い、速い、安いという仮定を達成することは非常に困難です。 そのうちの2つは必ず手に入れることができるが、残りの1つは捨てなければならない。 このように、品質を規定時間内に、妥当なコストで達成することは可能です。そのバランスをとるためには、この3つの変数のバランスをどうとるか、その意味合いと相互の関係を知っていればいいのです。
見積もり、調整、チームの選択、作業方法、ツールや技術の使用が適切である限り、この均衡に到達することは可能であろう。
どのようにそれを行いましたか。