プロジェクトを完成させるために、デザインの「素晴らしさ」を犠牲にしてよいのはいつですか?


15

すぐに行う必要のある製品で作業し、うまく機能する場合、物事を迅速に完了してドアから外に出すために、設計の保守性と「ニートネス」を犠牲にするのはいつですか?そして、特にそれを「ニート」にするために使用される技術が私にとって新しい場合、それはどの程度大丈夫ですか?


3
絶対に必要な場合のみ。
FrustratedWithFormsDesigner

1
私が仕事をしているのは普通のことです。「あなたは今すぐ支払うことができます、またはあなたは私に後で支払うことができます」はそれほど真実ではありませんでした。
MetalMikester

迫り来る締め切りのように

1
私は逆の見方をして、いつも言います。プロジェクトが完了していない場合、それがきちんとしているかどうかは誰も気にしません。
drxzcl

1
@MrJ、私は実際にユーザーについて考えていました。
drxzcl

回答:


18

ビジネスをサポートするために雇用されていることを忘れないでください。何らかの形で、あなたのソフトウェアはビジネスの最終利益に影響を与えています。技術的に完璧なソリューションと、製品の市場投入までの時間と、ビジネスから得られる利益とのバランスをとる必要があります。

私の経験では、開発者はしばしば技術的な完成度を心配することに夢中になります。しかし、製品をより早く出荷するために、保守性やパフォーマンスなどの品質属性を犠牲にする非常に正当な理由があります。それはビジネスと製品に依存します。しかし、「常に完璧なデザインを目指して努力する」ことは、あまりにも単純すぎるアプローチです。

結局のところ、重要なのはビジネスに対する価値だけです。短期的および長期的に最大化する方法を見つけ出し、その目標を目指してください。


3
私はあなたの答えの精神に同意しますが、いくつかの詳細が欠けています。You need to strike a balance between a technically perfect solution, and the time to market of your product私は同意しません、それは開発者の責任を超えています。彼らは絶対にそれを意識し続ける必要がありますが、ビジネスの決定を下す責任者に情報を与えるべきです。
-StuperUser

2
たとえば、ブリザードを見てください。彼らはゲームで大きな成功を収めており、優れた品質が最終的には報われると考えているため、市場投入までの時間をあまり気にしていません。おそらくすべての種類のソフトウェアに対応しているわけではありませんが。
ファルコン

1
@StuperUserと@Peter Rowellには絶対に同意しました。多くの場合、決定を下すのはフードチェーンの上位にいる人々に技術的リスク、角を切る問題などを伝えることは開発者の責任です。それがあなたの役割である場合、できるだけ正確にそれを伝えることに集中する必要があります。ただし、ビジネスのバリューチェーンを推進するものを理解すればするほど、そのコミュニケーションはより良くなります。
RationalGeek

1
@Falcon Blizzardは、確かに、安定した、楽しいゲームでの長期的なゲームの早期リリースで短期的な利益を犠牲にする可能性があります。それはおそらく彼らにとって適切なバランスです。しかし、それはすべての場合に適切なバランスではありません。
RationalGeek

4
現実には、ほとんどの新しいソフトウェア製品は、品質の問題ではなく、顧客がそれらを望んでいないために市場で失敗するでしょう。そのため、製品のバージョン1で安定した操作可能なアーキテクチャを作成するために多くの時間/労力を費やすことは、リソースの最適な使用ではない場合があります。ドアから何かを引き出すためにプッシュするビジネスマンは、あなたの多くが彼らがそうであると思うばかではありません。製品を顧客の手に渡って実行可能性を判断することは、非常に賢明なことです。
クリストファージョンソン

12

「技術的負債」という用語は、このようなビジネス上の決定を知らせるのに非常に便利です。あなたが今やらない仕事は、ある程度の仕事を後で引き起こします。財政と同じように、借金を取ることは危険ですが、後で借金を返済できるようになるなら、活用する価値があるかもしれません。

とはいえ、技術的な負債は回収時に1対1の比率ではありません。バグはリリース後に修正するのに費用がかかり、面倒なレガシーシステムから開発する場合の将来の生産性への影響はとてつもなく大きい場合があります。エラーを修正するのに2倍の時間を費やすか、またはおそらく1,000倍の工数とリソースを費やすことになります。

この決定におけるあなたの仕事は、あなたが検討している特定のコーナーカットの影響を理解し、それらの影響をビジネス上の意思決定者に伝えることです。この特定の推定スキルは多くの研究を必要とし、あなたの側で今すぐうまく開発するために働くかもしれませんが、それはあなたのキャリアの間に非常に貴重です。


1
+1。技術的負債は、これを説明する最も明確な方法です。
crazy2be

8

それが受け入れられ、その結果が所有者/クライアント/ユーザーに理解されるとき。

配管工は、修理のためにごみを出す必要があります。私はその間に流し台を使いたいが、壊れる可能性のあるテープを使用して一時的なパイプに入れる時間と材料を私に請求しなければならないだろう。これにより、処分場を修理工場に戻すのも遅れます。詰まらないリスクがあると理解して、追加請求を受け入れた場合。処分が修理されるまでに1日かかり、元に戻すまでにさらに長い遅延がかかります。これは許容範囲です。

時間と予算に間に合うようになりましたが、長期的にはさらに高い費用を犠牲/リスクにさらすことができます。これは非技術者に理解させるのは難しいかもしれませんが、それが営業スタッフの目的です。


5

多くの人々は、何か新しいことを学ぶとき、すぐに道を譲り、いつもそれをやった方法でそれをします。これがパターンである場合、コードが苦しむだけでなく、プログラマとしてのあなた自身のスキルも制限されたままになります。

それでも、結局のところ、成功する唯一のソフトウェアは出荷されるソフトウェアです。


「それでも、結局のところ、成功する唯一のソフトウェアは出荷されるソフトウェアです。」適切に設計されていなかったために、数年後にクラッシュして燃え尽きるまで。アクションの近視。
ウェインモリナ

1
あなたは今までに出荷していない場合、あなたは...数年それを作ることはありません
ジェレミー

あなたが近視眼的管理のためにあなたを長期的に台無しにしない何かを出荷することができないならば、あなたはそもそもビジネスに値するものではありません!
ウェインモリナ

3

ソフト期限が過ぎた後。そして、それでも非常に低い「OK」です。厳しい締め切りを過ぎた後は、当然のことです。それは厳しい締め切りの性質だからです。

さらに、これには技術的な負債が発生します。あなたがgit-er-doneメンタリティーのコーナーを切ることに費やす1時間/日ごとに、次にこのプロジェクトに触れなければならないとき、およそ2倍の時間がかかります。その後、急いで出荷し、すぐにすべてのアヒルテープの修正を開始するのが最善です。数年後、ハックされたプロジェクトに戻ってくるのは悪夢です。もう二度と触れないのであれば、気にしないでください。しかし、私がプロジェクトから離れたのは、転職したときだけです。

ただし、これらのタイミングを計ることはプロジェクトマネージャーの仕事です。締め切りに間に合わない場合は、PMの責任です。それを正しく行い、一度だけ行い、冷静かつ正確に行います。人生は他のものには短すぎます。


2

ここに投稿された他のすべての答えは良いです。プロジェクトの開発者として、あなたがデザインのスチュワード(保護者)であることを付け加えたいと思います。

適切な技術的解決策に立ち向かわなければ、他の誰も約束しません。あなたは常に上司に対して正しい方法で物事を行うことについて議論するべきであり、PMは常に締め切りに賛成して議論するべきです。

合理的な組織にいる場合は、納期を守るのに役立ち、同時に設計からあまり離れていない妥協点に到達することを願っています。

そうは言っても、PMの期限に達していない場合、世界が終わり、プロジェクトが失敗することを想定しないでください。通常、白黒ではなく、ほとんどの場合、PMの締切は柔らかく、調整の余地があります。

私がPMのスケジュールを守っていたほぼすべての締め切りは、ほとんど人工的なものでした。PMが締め切りを押すと、PMは悪いので、彼らは歯と爪を防御し、ふりをします。

PMの外観が悪いからといって、プロジェクトが失敗したわけではありません。これを理解すれば、PMをどれだけ曲げることができるかに驚くでしょう。


1

きちんとしたデザインのクライアントを引用します。その見積が受け入れられない場合、各コンポーネントのコストの内訳(通常はcost == development time)に進みます。彼らが選択した場合、彼らは「アラカルト」からアイテムを取りましょう。多くの人は、テストや設計などの「役に立たない」ことのために時間を節約することに飛びつきます。このアプローチのリスクを説明しますが、リスクを受け入れた場合は、指示に従って進めます。私が不格好な車に十分なお金しか持っていないなら、たぶん8か月で故障するだろうとわかっていても、不格好な車を買うつもりです。クライアントには、これらのリスクを考慮して結果を受け入れる責任があります。

したくないことの1つは、テストされていないジャンクだけを支払った(そして受け取った)ときに、美しくデザインされたソフトウェアを持っているとクライアントに考えさせることです。何かがうまくいかない場合(そうなる可能性が高い)、最初のシナリオでは見た目が悪くなりますが、2番目のシナリオでは見た目が悪くなります。


1

それはません決していいが、時にはあなたは、プロジェクトの仕上げのために妥協する必要があります。悲しい現実は、ほとんどのビジネスマンは完全に無知であり、今何かのために後で保守性を犠牲にすることをいとわないということです。秘Theは、バランスを取る方法を知ることです。多分プロジェクトはそれほどきちんとしたものではないかもしれませんが、ピッペンではない限り、それは価値のある妥協です。


0

それは完全に「あなたや他の誰かが後でそれを変更したいですか?」という質問に依存します。「はい」の場合は、「きちんとした」デザインにするようにしてください。そうしないと、すべてを捨てて6か月後にもう一度やり直さなければならないリスクがあります。

もちろん、きちんとしたものを取りすぎることもできますが、一般的には、ちょっとしたきちんとしたもので後の作業を節約できます。


4
クライアントがあなたに何を言っても、メンテナンスを必要としない製品のようなものはありません。
エドワードストレンジ

@ crazy-eddieまったくない。それはロードされた質問として意図されていました。私は、あなたがその質問に「いいえ」と答える多くの場合を本当に考えることはできません。1つのことだけを目的としていて、二度と使用されないクイックアンドダーティなスクリプトでさえ、後で編集して修復することが考えられます。
ジョーハーマンハウホルト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.