ただし、多くのドメインでは、典型的な顧客は次のとおりです。
- 日常の運用上の懸念に興味がある-短距離戦術...戦略ではなく、
- 即時の解決策のみに関心があります。
- 一般に、一次元の抽象的なない思想家。
- 永続的で質の高いソリューションを思い付くのではなく、主に「仕事を終わらせる」ことに関心がある。
そして、率直に言って、彼らは通常、このように考える十分な理由があります。まず第一に、彼らはビジネスを運営しており、それは遠い将来ではなく、今日と明日に収益を生み出すはずです。第二に、彼らは技術の専門家ではありません-何が可能で何ができないのか、そして特定のアーキテクチャ/設計/実装の選択の結果が何であるかを知りません。これは私たちが知っていることです。
したがって、答えは-驚くことではない- コミュニケーションです。
お互いを教育し、お互いに少なくとも基本的なレベルまで相手の視点を理解させるために、あなたはたくさんのコミュニケーションをとる必要があります。あなたは彼らに可能な選択肢の短期的および長期的な結果を説明する必要があります。そして、あなたは彼らが理解する言語を使用する必要があります。
- あなたが言うならば、「これは、コードが読みにくくかつ拡張可能ハック、だろう」、彼らは言う、「ええ、何でも」。
- あなたが言うならば、「これは長期的な開発と保守をより高価にすると、バグを導入するリスクを増加させる短期修正、だろう」、彼らは言う、「HAは、のは、考えてみましょう」。
- そして、「このソリューションは現在100ドルかかりますが、遅かれ早かれ利子付きで返済しなければならない500ドルの技術的負債を導入します。欲しい」、彼らは「今、私たちは話している!」と言います。。
OTOHは、ビジネスの観点について1つまたは2つ教えてくれます。ビジネスは使いやすく、十分な -ほとんど完璧ではない-ソリューションを求めている。そして、彼らはおそらく「完璧は善の敵」であることを誰よりもよく知っています。したがって、技術的に完璧なソフトウェアを作成するのではなく、クライアントの問題の解決策を提供することが私たちの仕事であることを忘れないでください。時々、これら2つは同じに収束しますが、より頻繁には収束しません。これは多くの人に悲しいと思われるかもしれませんが、ビジネスの現実です。私にとっては、なんとか顧客の問題を解決でき、それが彼らの生活を目に見えて楽にしたと思うなら、私は彼らと同じくらい幸せです。OTOH私が思い描いていた完璧なデザインを実装できたのに、翌週に会社が倒産した場合、それは誰にとってもほとんど勝利ではないでしょうか?
賢明なビジネスオーナーは、あなたが彼ら自身の言語を使って説明するなら、なぜソフトウェアをきれいに保ち、ユニットテストを書き、リファクタリングすることが重要なのか理解します。長期メンテナンスには不可欠です。そして、賢明な顧客はビジネスの長期的な保守性を気にしているので、投資が生み出す価値を見たとき、彼らは確かにそれに投資することをいとわないでしょう。ただし、リソースと時間の両方が限られているため、最も重要なことに優先順位を付けて集中する必要があります。しかし、それはあなたとあなたの両方にとって重要である場合にのみ重要です。
モジュールAのリファクタリングが必要な場合があります。そこにあるコードはひどく、読んだばかりのデザインパターンを使用して、簡潔でエレガントでクリーンなコードにリファクタリングする方法が驚くべきアイデアです。ただし、そのモジュールが何年も触れられておらず、確実に機能する場合は、モジュールBに焦点を当てたほうがよいでしょう。モジュールBは来週、非常に重要な新機能で拡張され、多数のバグが含まれます既に。