品質/標準を無視するソフトウェア開発者は会社にとってより良いのでしょうか?[閉まっている]


10

コードの最適化、標準、ベストプラクティスを最優先しないことを選択したソフトウェア開発者は、最適化、コーディング標準の実装、時間どおりにタスクを完了することを実践したい開発者よりも有用なコードを作成しますか?

個々のパフォーマンスレビューに関して、これらの異なる方法論はどのように比較されますか?

これらのスタイルはピアレビューでどのように比較されますか?

SDLC中により多くのベストプラクティスを実装するためにチームに影響を与える最良の方法は何ですか?


2
@Haylem-私が行った元の編集はより良かったと思います。タイトルが最初の文と同じである場合、タイトルのポイントは何ですか?
BlackJack 2011

1
@BlackJack私はあなたのタイトルを持ち帰り、質問をもう少し洗練させました。私たち3人は、編集履歴の同じ投稿に踏み込んだと思います。今は良いはずです。
Thomas Owens

4
SEはあなたの上司についての怒りの場所ではありません。私たち全員にはボスがいて、ほとんどの人は、彼らがそこに属していないと思う指揮系統の誰かを持っています(私はそうではありません/彼らは素晴らしい/おしゃべりだと思います)。ここでそれらについてうらやましいことはよくない。
SoylentGray 2011

1
@チャド:私はあなたが言ったすべてに同意しますが、OPが彼のボスについて(直接)悪口を言うつもりであったかどうかは完全にはわかりません。
ヘイレム2011

2
@チャド:私はそれを読みました、そして私はあなたの反応を理解することができますが、ジテンドラは彼がしたすべてが人々のコードを修正することであったとは言いません。しかし、機能性を最初に提供することは完全な品質を備えた未完成の製品よりも重要である可能性があるというあなたの議論およびその他のいくつかの回答に同意します。それが早く殺されたか、まだ生まれて失敗したので、誰も光を見ない製品を維持する必要はありません。
ヘイレム2011

回答:


32

いいえ、彼らはプロジェクトの現在の所有者からのみ尊敬を得ます。

彼らは何年もの間ゴミにされるでしょう:

  • 将来のメンテナー、
  • 将来のテスター、
  • 将来のプロジェクトオーナー
  • 将来のマネージャー、
  • そして、将来的にコードベースに関わるほとんどの人。

彼らは同じ治療を受けるかもしれません:

  • 現在のテスター、
  • 現在の技術文書ライター。

@イワン:ありがとう。長期的な思考が常に勝つ。
ヘイレム2011

@haylem-人々は仕事をすばやく変えているので、私はあなたに同意します。新しい参加者がコードをすばやく理解できるように、より優れたコードが役立つでしょう
Vyas

確かにそうですが、彼らのパフォーマンスのために、彼らは残った痛みに耐える彼らの牡丹から遠く離れたところにいます。悲しいが本当!
アノン

6

誤った二分法:品質は直交しています。

                高品質低品質

お得なAWESOME Sketchy

不採算のIffy FIRE FIRST

5
IffyはSketchyよりも良いですか、悪いですか?
HLGEM、2011

1
@HLGEM:収益性は常に収益性よりも優れています。
ドナルフェロー


1
開発者の裏側だけで収益性を割り当てることは、単純化しすぎです。製品管理、展開インフラストラクチャはどうですか?彼らはまた、収益性で果たす役割を持っているのではないですか?
DavidS

5

いいえ。ベストプラクティスは、定義により、プロジェクトをより正確に、より短時間で、より迅速に修正できるので、ベストプラクティスがベストです。これらを無視すると、利益が減少することが保証されます。もちろん、マネージャーはベストだと思うが実際はそうではないプラクティスを処方するかもしれませんし、顧客が支払うものとそうでないものを誤って判断するかもしれません-そしてすべての賭けはオフです。

コーディング標準はよりトリッキーです。コーダーに過度の詳細を指定することは可能であり、効率の低下につながります。しかし、経験があれば、肛門保持型のマイクロ管理から有用なガイドラインを伝えるのが非常に簡単になるため、同じことが当てはまります。実際のベストプラクティスは常に価値があり、疑似ベストプラクティスは通常そうではありません。

あなたはしていない限り、コードの最適化は、通常、やる価値はない測定あなたのボトルネックが何であるかを、確認した最適化を行うことが必要であるとことを測定し、あなたの巧妙なトリックは、実際にpreformanceののrquirementを満たしていること。それ以外の場合(ほとんどの場合)、実行する価値がないため、最適ではありません。


6
ベストプラクティスは、すべてのプロジェクトを短時間で正しく完了させるのに役立ちません。ほとんどの場合、ほとんどのプロジェクトでうまく機能することが確認されているものです。
Thomas Owens

2
「ベストプラクティス」または他の誰かが宣言した最善の方法を盲目的に遵守することは、カーゴカルトコーディングがコーディングプロセスに対してどのようなものであるかを開発プロセスに準拠させることです。実践が何を意味するのか、それが実際にあなたの状況で最良のものであるかどうか、そしてそうでない場合は何を置き換える必要があるのか​​を理解できる必要があります。
Blrfl 2011

5

コードの最適化と実践を気にしない開発者に同意しますか? 番号。

彼らは彼らがする必要がある仕事をしますか?はい。

ビジネスはお金を稼ぐことであり、お金を稼ぐ唯一の方法は製品をリリースすることです。これは通常、プロジェクトのスケジュールが厳しいことを意味します。つまり、何かを行うための最良の方法は、何かを行うための最も速い方法ではない可能性があります。

私はこの開発スタイルに同意しませんが、製品がリリースされている場合、会社からは尊敬されると見なされる可能性があります。


私は最後の仕事でコードの最適化について多くのことを気にしていましたが、仲間の開発者は気にしていませんでしたが、彼らは私よりも多くのプロジェクトを行いました
Jitendra Vyas、2011

1
@Jitendra-すでに作成されたものを一日中最適化していて、新しい機能がまったくない場合、私も満足しません。最適化によってソースコードの行数と文字数が少なくなる以外に何かが得られない限り、何も達成できません。
SoylentGray 2011

3
@Jitendra-私はそれがしなかったとは言いませんでした。そして、読みやすい方法でコードを書くのは素晴らしいことです。自分のタスクがあるときに他の人のコードの外観を「修正」することは、そうではありません。
SoylentGray 2011

1
@Chad-自分のコードを書き直したり、他の人のコードを修正したりするのではなく、最初から適切なインデントを付けて読みやすくし、将来の開発者に適切なコメントを付け、コードを再利用できるようにするベストプラクティスを使用するそして、すべて時間がかかるので、元の開発者しか理解できない混乱コードを記述します。良いコードは常に時間がかかります。
Jitendra Vyas、2011

4
@Ivan:私はこの考え方を直接体験しました。こんなふうになります。同社はグリーンフィールドプロジェクトを開始します。Hotshot Developer Xは、大量のctrl + cおよびを使用して、可能な限り迅速にデータをまとめctrl + vます。製品は非常に短い順序で発売されます。会社は開発者Xにうんざりしています。バグレポートと機能リクエストが届きます。開発者Xは追いつくことができず、解雇され、次の仕事に移ります。次の3年間の開発は、進歩を遂げることができないエンジニアの新しいチームの回転ドアであり、X社はかつてあったすべての市場の利点を失います。
Greg Burghardt 2016

4

いいえ、私は、最短ルートを見つけるだろう離れて、これらの悪徳を高く評価した会社から。


2
+1、要点、そして正解です。品質基準を気にしない会社は、愚かで無知であるか、詐欺です。
ウェイン・モリーナ

3

はい、いいえ、これは少し希望に満ちたワッシーですが、これはベストプラクティスであり、完全なプラクティスではありません。理想的には、常にそれらをフォローする必要がありますが、製品のニーズよりもビジネスのニーズを優先したいという状況が常にあります。

あなたはメンテナには嫌われますが、上司からは愛されます。


3

ベストプラクティスはやや常識のようなものです。2人が詳細に話し合うまでは、誰もがそれを知っておくべきだということに全員が同意しています。2人が完全に定義に同意することはなく、すべての状況に当てはまる論理的な根拠はありません。

宇宙衛星の誘導システムを書いていますか(おそらくそうではありません)?次に、地獄は、この種の作業では決して不十分な品質/パフォーマンスのコードを受け入れることはできません。

使い捨てのウェブサイトを1回のマーケティングプッシュで作成していますか(おそらくこれも行っていないか、質問をしなかったでしょうが、サテライトよりも可能性が高いです)。その後、地獄はい、締め切りに間に合わせるために必要な手段を通じて、その綿毛をドアから取り出します。次のマーケティングディレクターは、おそらく別の会社と別のことを行うでしょう。アートやサイエンスではないこと-支払いを受ける。

それ以外のすべて:交渉可能、特に開発者が初期サポートのオンフックである限り。

あなたが好む聖なるものが再来して、彼/彼女/彼ら/それが奇跡的な方法で開発実践を定義するまで、生死の決定に直接責任のないプロジェクトについては議論の余地がかなりあります使い捨てであるにはそれほど重要ではありません。

生命にかかわるラベル付きのベストプラクティス以外のすべては、通常、会社のポリシー、クライアントの仕様、または個人的な意見のようなものです。それらの多くは、現在多くの人々が同意している個人的な意見ですが、それがすべての状況で不変のガイドになるわけではありません。


2

彼らが会社のためにどれだけのお金を稼ぐかは議論の余地があります。問題のコードを再検討するレベルがある場合、メンテナンスコストが上昇し、誰かが満足することはありません。長期のメンテナンスコストが高いと、事前に適切に行うよりも費用がかかります。

彼らがどの程度尊重するかは、おそらくケース固有です。ただし、ある時点で誰かが気付くでしょう。


2

これらのことを気にしないと、会社は短期的にはより多くのお金を稼ぐかもしれませんが、より多くのバグ修正と保守コーディングのために長期的に会社に多くのお金をかける可能性があります

競合する企業が同じような製品を同時に市場に出すために急いでいる場合、迅速で汚い仕事が必要になることがありますが、そのような行動の将来のコストは慎重に検討する必要があります。


2

それはすべてお客様に依存します。

迅速で汚い(そして通常は安い)ことを好む顧客は、将来問題が発生することを気にしません。

キャビネットの構造を考えてください。

いくつかは、高品質の特注のキャビネットを支払い、感謝します。彼らは広葉樹の引き出しと一流のハードウェアの余分な費用を気にしません。ビルドとインストールにさらに1週間または1か月かかることを気にしません。

多くはしません。多くの人が、大きなボックスショップから手に入る安価なパーティクルボードの大量生産品を選びます。彼らはそれらを2日でインストールしたいと思います。あちこちの小さなギャップは完全に許容できます。彼らは彼らが10年後に崩壊することを気にしていない。

ですから、あなたのマネージャーが開発者を称賛しているなら、それはあなたの顧客が高品質を望んでいないか、マネージャーが顧客に嘘をついているかのどちらかです。

時間だけが教えてくれます。マネージャーが望むことをするか、別の仕事を見つけます。


1
もちろん、ソフトウェアにはサポートが付属している可能性があるため、両方を実行することもできます。つまり、既知の問題にもかかわらず、最初にv1を市場に投入しますが、これにより得られるお金により、将来の問題を修正できるようになります
jk。

1

いいえ、ありません。IMOコードの最適化は、ベストプラクティスは、実際の職人技があるMOSTコードベースを持っているべき重要なこと。それがなければ全体がスラッジに変わり、ダクトテープで固定されます。それは持続不可能なデザインです。腫瘍は小さくて健康なので、腫瘍を無視するようなものです。今は健康ですが、数年後には無視していたのでターミナルになります。

私はこれらのことを気にしない開発者に同意しないだけでなく、彼らが起動することをまったく尊敬していません。組織を離れることを検討するための確実な方法は、私がそこにいた短い時間に関係なく、気になる唯一の人(会社全体で唯一の人ではないにしても)であるチームに囲まれることです。適切なソフトウェアエンジニアリングの概念について。


1

良い読み物:http : //www.joelonsoftware.com/items/2009/09/23.html

しかし、私見、ある人のベストプラクティスは別の人の悪夢です。そして、自明ではないすべてのコードベースは、部外者にとって悪夢になります。

あなたが何を考えていても、それについてジャークしないでください。

編集:私はどちらの側にも寄りかかるかもしれないタスクに応じて、ポジションを守っていません。


「ベストプラクティス」のIMOによって異なります。テストを行う(TDDとは限らないが、一般に自動テスト)、SOLID原則に従う、設計パターンを使用する、抽象化/インターフェースを使用するなどのことは、有能な開発者が行うべき基本的なことです。
ウェインモリーナ、

私がテストを好きなだけ...それらはベースラインではありません。
CaffGeek

1

会社に良いですか?場合によります。

資金が限られているスタートアップの場合は、それを実行して実行します。乱雑であるかどうかは関係ありません。後でリソースが増えたときに修正できます。

多くのユーザーがソフトウェアの品質に依存している成熟した製品の場合、すべてが「適切に」行われる必要があります。

個々の開発者にとってより良いですか?実際には関係ありません。同僚がしていることと同じようにして、管理者に放射性降下物を処理させてください-それはあなたの仕事ではありません。あなたがいつも他の人のがらくたを修正しているなら、あなたは遅いと見られ、他の人があなたの上に昇格されている間、あなたはまだそこにいる人になります。プログラムを入手するか、それが悪い場合はできる限り外に出てください。


「乱雑かどうかは関係ありません。後でリソースが増えたときに修正できます。」理論的には、確かに。実際にこれを実行することはありません。いったん何かを押し出すと、それを維持したり、新しいものを追加したりできなくなるため、戻ってそれを修正するためのリソースがなくなるからです。
ウェイン・モリーナ

同意しません。それは確かに、私が関わってきた多くの中小規模のWebプロジェクトで発生しました。また、コードベースを主要な方法でリファクタリングしている企業の有名な例も数多くあります。 PHP言語などを最適化します。実際、私たちが毎日使用している成功している成熟したアプリ(Webおよびデスクトップ)のほとんどには、v1の祖先と共通するコードがほとんどないと確信しています。
timh

おそらく、しかし、6年間の企業開発の中で、コードを時間の経過とともにリファクタリングできた会社が1つだけ見つかりました。他のすべての場所では、コードが管理できない場合でも、「壊れていないものの修正」に専念できるリソースがありませんでした。
ウェインモリーナ

0

開発者とプロジェクト/状況によって異なります。

異常な時間には異常な対策が必要です。

したがって、何かを今すぐ配信する必要があり、誰かが最新の流行語フレームワークを14以上活用しているエンタープライズグレードのJavaアプリケーションを過剰設計している場合、単純なpythonスクリプトがその仕事をしますが、開発者が手抜きして考えているのと同じくらい悪いですバグのあるコードは通常の時間に実行されます。

開発者であることの一部は柔軟です。あなたはツールの奴隷になってはならず、盲目的に慣行に従うべきではありません-それらがあなたを失敗させるケースは常にあります。ルールを破って折り曲げるタイミングを知ることは、多くの経験に伴う価値のあることの1つです。

あなたの場合-速度が重要であるために彼があなたよりも多くの価値を提供する場合、将来のメンテナンスの増加したコストを考慮した後でも、彼はより良い補償に値します。反対側で-あなたが彼の混乱を掃除することに行き詰まっているなら-あなたは経営者とのコミュニケーションの問題を抱えています。

ケースバイケースです。コーディングスタイルを除いて-言い訳はありません。


0

申し訳ありませんが、この質問へのほとんどの回答に同意する必要があります。

ソフトウェアの主な価値は、柔軟であることです。

正当な理由がない限り、他の人のコードを書き換えるべきではないと思います。機能を実装するために何らかの理由でモジュールを変更する必要がある場合、あなたは現在、そのモジュールの所有者です。それを変更し、一部を書き換え、すべてを書き換えます。

これまでにない柔軟性の観点から低品質を生成することはありません。ソフトウェアに何かを捨てるようなものはありません。クライアントが一時的なものであり、特定の日付以降は必要がなく、品質を気にしない場合は、「悪い」と言うか、コードがあなたや他のプログラマによって一度は変更されないことを書面で伝えます本番環境に展開されているか、訴訟を起こす権利が​​あります。

これらの回答のいくつかで私が見ている最も悪い仮定は、いくつかのクリーンなコードがどういうわけか開発の速度を低下させるということです。実質的なプロジェクト(6時間を超える作業)の場合、クリーンなコードは長期(1週間を超えるもの)の開発を高速化します。私はそれを何度も何度も見ました。

品質の悪いコードは、職業や同僚に失礼です。申し訳ありませんが、本当です。

ですから、柔軟性の点で、品質が悪いことはありません。


1
絶対とは絶対言うな。アプリ全体がゴミ箱に捨てられます。あるシステムから別のシステムへのデータ変換は、一度使用されると腐敗します。
JeffO 2016

多くの場合、コードをクリーンに保つと、短期的には開発速度が少し低下します。重要な部分は、不明瞭なコードが長期的にはるかに大きな削減を引き起こすことです。私はそれについて言及している他のいくつかの回答を見ています。
Ixrec 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.