意図的に悪いコードにどのように対処しますか?


21

TheDailyWTFだけでなくSOにも、意図的に悪いコードに関する多くの話があります。典型的なケースは次のとおりです。

  • 無駄な時間を浪費する構造(たとえば、巨大な値にカウントする空のループ)があるため、プログラマーは、タスクを削除することでアプリケーションを簡単に「高速化」できます。
  • 意図的に誤解を招く、間違っている、またはまったくドキュメントを提供して、高価なサポートリクエストを生成する。
  • すぐにエラーを生成するか、さらに悪いことに、すべてが正常に機能していても生成され、ロックを解除するために高価なサポート呼び出しが必要になるようにアプリケーションをロックします。

これらのポイントは、多かれ少なかれ悪意のある態度を示しますが(場合によっては偶然であっても)、特に最初のポイントはかなり頻繁に発生します。

そのような構成体をどのように扱うべきですか?問題を無視するか、問題のあるコードを削除しますか?上司に通知するか、「機能」を紹介した人に話しますか?


10
それは「偶然に」あるのか、それとも「意図的に悪い」のか?私はそれが両方であることができる方法がわかりません。

回答:


7

ほとんどの悪いコードは理解不足によるものであり、解決策は教育です。

意図的に悪いコードは、コーダーの経験やプロジェクトの残りの部分とはまったく関係のない何かのために、まったく異なります。そのため、彼らが意図的にコード妨害している理由を見つけ、その問題に対処する必要があります。これは、多くの場合、そうではないが、オフィスの政治を意味し、それは誰にとってもめったに楽しい状況ではありません。

私が政治側をどのように扱うかは、多くの(上記で述べられていない)状況に依存します。コードをどのように処理するかは、最初に自分が自分が間違っていること-それが本当に悪いコードである-を誤解しいないこと確認してから、明らかな欠陥を修正することです。合理的に可能な場合、不良コードが失敗することをテストします。私が正しく理解したことを再確認するということは、コードを書いた人と話をすることを意味します。これは、意図を前提とせずに、非常に素晴らしい丁寧な方法で行われるべきであり、後で必要とされる根本的な(政治的な)理由を見つけるのに役立つかもしれません。

出荷は象牙の塔の完成よりも重要ですが、対処する価値のある2つのポイントがあります。明らかな欠陥を修正すると、結果の80%が20%の労力で得られます。そのような低品質の果物は、無視する価値はほとんどありません。しかし、さらに重要なことは、根本的な(政治的な)理由に対処しないと、意図的に悪いコードが書き込まれ、さらなる問題を引き起こし、出荷を妨げる可能性が高いことです。


28

私は(20年以内に)意図的に悪いコードに出くわしたことは一度もありませんが、あなたが引用する例は(少なくとも私にとっては、IANALは)雇用主または顧客のいずれかをだまそうとするように見えるので、おそらくあなたは法的上司に指摘する義務。


2
同意した。意図的に悪いコードを書く人はいません。彼らは問題を解決しており、彼らが知っている最善の方法でそれを解決しています。彼らは見当違い、教育不足、無知などの可能性があります。しかし、開発者が意図的に悪いと書いていることを意図的に推測することはできません。
ダン・レイ

8
たとえ合法的でなくても、少なくとも倫理的な義務があります。
クリスファーマー

@ChrisFarmer倫理的義務をより広い文脈から切り離すことはできません。意図的に悪いコードが、経済的または政治的な合法的な集団的抵抗を表す文脈がいくつかあります。(そして、雇用契約は、それが形式化する関係が個人的または構造的に搾取的でない場合にのみ誠実に尊重されるに値します。)
user234461

11

会社の文化に依存します。多くの場合、すべての悪いコードを修正してクリーンアップするのはあなたの仕事ではありません。

Coders at Workから、ジェイミー・ザウィンスキーのオーバーエンジニアリングに関する考えは、この状況にも適用できます。

一日の終わりに、クソものを出荷します!コードを書き直してきれいにすることは素晴らしいことであり、3回目には実際にきれいになります。しかし、それはポイントではありません。コードを書くためにここにいるわけではありません。製品を出荷するためにここにいます。

悪いコーダーとコードがたくさんあります。そして、あなたが出くわすときにそれらをすべて修正しようとするだけで、現在のプロジェクト/タスクを犠牲にして、製品が「機能している」場合、それは単に価値がないかもしれません。多くの場合、私たちはすべて単なるダクトテーププログラマです。

Joel Spolskyの投稿「The Duct Tape Programmer」も参照してください。


+1私は本当に製品を出荷するというコンセプトのファンです。あまりにも多くの技術的プロファイルがその概念を欠いていると思います。

私も+1。重要なものに対する歪んだ見方を支持する本などの種類の「クリーンコード」が多すぎます。コード品質は非常に重要です。勝者は最高の製品を持っている人ではありません。十分に迅速に出荷される十分な製品を持っている人たちです。
ジョナスプラッカ

4
質問のポイントを逃したと思います- 悪いプログラマーによって書かれたコードだけでなく、意図的に悪いコードについて話しました。
ヒラ

@Hila悪いコードが意図的なものであったかどうかにかかわらず、私の主張はまだ保持されていると思います。割り当てられたプロジェクト/タスクリストにある問題でない限り、すべての不良コード修正してクリーンアップするのはダクトテーププログラマーの責任ではありません。そこにある文化は学術的ではなく、きれいで美しいコードを書くことです。製品/ビジネスの出荷とサポートについてです。私は個人的に私が遭遇したすべての悪いコードを修正したいと思っていますが、私は自分の時間の100%をそれに捧げることはできません-私は単に私に割り当てられたタスク/プロジェクトを完了することができません。
スポンジ

3
@sunpechしかし、意図的に悪いコードをクリーニングすることは、単にコードをクリーニングすることと同じではありません。アプリケーションをより「美しく」することではなく、意図的にそこに置かれた有害なコードを修正することです。心臓胸部手術は命を救うことであり、縫い目がどれだけきれいかということではないので、医者が患者の体内で同僚が忘れたハサミをはずしてはいけないと言っているようなものです。
ヒラ

4

その態度は何か悪いことの症状です。

  • 管理者は開発者の競争を奨励していますか?

  • チームスピリットはどこですか?

  • タスクはチーム自体以外の誰かによって割り当てられていますか?

  • ...

いずれにしても、問題のコードを削除するだけでは十分ではありません。彼のマネージャーに不平を言うことは、確かにチームの精神を改善する助けにはなりません。

私はその人と直接話をし、彼を判断せずに多くの質問をすることでその理由を理解しようとします。チーム全体が積極的にそれを行わなければなりません。

ほとんどの場合、その建設的な振る舞いは実際の問題(最悪の問題)に光を当ててから、それに取り組むことができます。

それが本当に機能しない場合。その開発者をチームから削除します。


4

意図的だと思ったら、おそらく男を解雇するでしょう!誰かが十分なプログラマーではないという結果である場合、私は彼のスキルに取り組みます。上からプッシュされていたら、おそらく新しい仕事を探し始めます。


2

そのような構成体をどのように扱うべきですか?問題を無視するか、問題のあるコードを削除しますか?上司に通知するか、「機能」を紹介した人に話しますか?

コンテキストに応じて、それらのいずれかが最も適切な場合があります。他の可能性としては、別のプロジェクトへの異動の依頼、新しい仕事の取得、疑わしい道徳および/または合法性のさまざまな行為があります。

ただし、実際の事実と関係する実際の人々がわからない場合、あなたが説明している立場にいる誰かが私たちのアドバイス/ 2セントの価値に注意を払うべきではありません。

これがあなたが話している本当の状況であるならば、あなたが何をすべきかについて彼らのアドバイスを尋ねて、あなたのマネージャーと静かに一言を持つ価値があるかもしれません。可能であれば、指を指すことではなく、できること/すべきことについて会話をしてください。可能であれば、名前を付けないでください。あなたのマネージャーがすでに問題に気付いている可能性がかなりあります。

しかし、逆に言えば、あなたはこれを不均衡に吹いているかもしれません。あなたが何かをする前に、それについて長く一生懸命考えてください。あなたがとるステップがあなたに逆効果を及ぼす可能性を含む結果を考えてください...ひどく。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.