救助隊に明らかな船長!
私はここでキャプテンオブボウンドになり、発見すべき中間点があると言います。
将来のために構築し、技術的な選択や悪いデザインに縛られるのを避けたいのです。しかし、シンプルなものを設計するために3か月を費やしたり、2年の寿命があり、フォローアッププロジェクトを行う可能性が低い、迅速で汚れたアプリの拡張ポイントを追加することは望ましくありません。
製品の成功を常に予測できるとは限らず、後で拡張する必要がある場合、区別を見つけるのは困難です。
今すぐビルド...
- プロジェクトは廃棄されます
- プロジェクトの寿命は短い
- プロジェクトには拡張子を付けないでください
- プロジェクトにはリスク影響値がありません(主に画像の観点から)
一般に、社内プロジェクトまたは顧客向けに構築されたものは今のところ開発する必要があります。まっすぐな要件を必ず設定し、必要に応じてそれらに関連付けて、必要なものとそうでないものを把握してください。「欲しいもの」に時間をかけすぎたくない。ただし、ブタのようなコードも使用しないでください。
一般的な問題は、後で必要になり、努力する価値がある場合に残します。
未来のために構築する...
- プロジェクトは公開されます
- プロジェクトは再利用されるコンポーネントです
- プロジェクトは他のプロジェクトの足がかりです
- プロジェクトには、機能強化されたフォローアッププロジェクトまたはサービスリリースが含まれます
あなたが何か公共のもののために構築している場合、またはそれが他のプロジェクトで再利用される場合、悪いデザインが戻ってくる可能性がはるかに高いので、それに注意を払う必要があります。しかし、常に保証されるわけではありません。
ガイドライン
できる限り次の原則に従うことをお勧めします。効率的で適応性のある製品を設計する立場に身を置く必要があります。
- それを知っているYAGNIを、
- キッス、
- かゆみをひっかきたいと感じて、追加を考えるときはいつでも書き留めてください。プロジェクトの要件を振り返り、追加が優先事項かどうかを自問してください。主要なビジネス価値を追加するかどうかを尋ねます。
私は個人的には考えすぎて過剰に設計する傾向があることを知っています。アイデアを書き留めておくと、追加機能が必要な場合によく考え直すことができます。多くの場合、答えは「いいえ」、または「後でクールになる」です。それらの最後のアイデアは危険です。なぜなら、それらは私の頭の後ろに留まるからです。
オーバーエンジニアリングをせずに、後からブロックせずにコーディングする最良の方法は、適切な最小限の設計に焦点を当てることです。後で拡張できるコンポーネントとして物事をうまく分解しますが、後でそれらをどのように拡張するかについては考えません。未来を予測することはできません。
単純なものを構築するだけです。
ディレンマタ
オーバーエンジニアリング
これは、プログラマーがこのようなプロジェクトに取り組む際に一般的にフォローする傾向ですか?
そうそう。これは既知のジレンマであり、製品に関心があることを示すだけです。そうしないと、それはもっと心配です。少ない方が常に真に多く、悪い方が常に真に優れているかどうかについては意見の相違があります。あなたはMITやニュージャージーのような男かもしれません。ここには簡単な答えはありません。
プロトタイピング/ Quick-n-Dirty / Less is More
実行可能な例をできるだけ早くマッシュアウトするのは典型的な傾向ですか?
これは一般的な慣行ですが、大多数のプロジェクトへのアプローチ方法ではありません。それでも、プロトタイピングは私の意見では良い傾向ですが、平均的なマイナス面があります。迅速で汚れたプロトタイプを実際の製品にプロモートしたり、管理上のプレッシャーや時間の制約の下で実際の製品のベースとして使用したりするのは魅力的です。それは、プロトタイプ作成が戻ってあなたを悩ませるときです。
プロトタイピングには明らかな利点がありますが、誤用や悪用の可能性も多くあります(結果として、前述の利点の正反対の多くがあります)。
プロトタイピングを使用する場合
プロトタイピングを使用するのに最適なプロジェクトのタイプに関するヒントがあります。
[...]プロトタイピングは、ユーザーと多くの対話を行うシステムで最も有益です。
[...]プロトタイピングは、オンラインシステムの分析と設計、特に画面ダイアログの使用がより明確になっているトランザクション処理で非常に効果的です。コンピューターとユーザーの相互作用が大きいほど、利益が大きくなります[...]
「これまでのラピッドプロトタイピングの最も生産的な用途の1つは、反復的なユーザー要件エンジニアリングとヒューマンコンピューターインターフェイス設計のためのツールとしてでした。」
一方:
バッチ処理やほとんどの計算を行うシステムなど、ユーザーの操作がほとんどないシステムでは、プロトタイピングのメリットはほとんどありません。場合によっては、システム機能を実行するために必要なコーディングが非常に集中的であり、プロトタイピングがもたらす潜在的な利益が小さすぎることがあります。
そして、周囲に緑色の怪物がいる場合は、プロトタイプを予算内に収まるようにしてください...