paint-brush
ソフトウェア開発における壊れた Windows セオリー: 詳細が重要な理由@aferreira
1,715 測定値
1,715 測定値

ソフトウェア開発における壊れた Windows セオリー: 詳細が重要な理由

André Ferreira, MSc10m2023/02/27
Read on Terminal Reader

長すぎる; 読むには

壊れた窓理論は、環境障害が犯罪行為、反社会的行為、市民的障害行為を助長することを示唆しています。この記事では、読者の行動が自分が参加している環境にどのように影響するかを読者に理解してもらうことで、反省と変化を促す試みを提供しています。
featured image - ソフトウェア開発における壊れた Windows セオリー: 詳細が重要な理由
André Ferreira, MSc HackerNoon profile picture
0-item


ソフトウェア開発の世界におけるいくつかの問題は取るに足らないように見えるかもしれませんが、人々や社会に重大な副作用やコストをもたらす可能性があります。この記事では、読者の行動が自分が参加する環境にどのように影響するか、そしていくつかのささいなことでさえどのように大金を費やすことになるかを読者に理解してもらうことで、反省と変化を促す試みを提供します.

壊れた窓

若い頃、初めてコンピューターを使う前は、いつも自転車に乗っていました。私の家の向かいには小さな森があり、いくつかの狭い散歩道があり、定期的に自転車に乗っていました.


私は、自分の BMX 自転車が F1 であり、ナイジェル マンセル、アラン プロスト、またはアイルトン セナと競争しているとよく想像していました。その後、フィニッシュライン近くで最高の追い越しを行い、わずかな勝利を収めました。


森の奥には古い倉庫がありました。屋根の近くの上部に小さな窓があり、光が入るようになっていました。それでも、それらは十分に高かったので、中をのぞくことができました。


初めて立ち止まって休憩し、建物を熟考したときのことは決して忘れません。私は次のように考えたことを覚えています。なぜ道路の近くにないのですか?... 誰かが石を投げて、いくつかの窓を壊しました.なぜそれらは修正されていないのですか?神秘的に見えますが、暗いです。私は離れた方がいいです、何かが気分が悪いです。その後、私は自転車で立ち去り、二度とその地域に足を踏み入れることはありませんでした。


何年も経ち、最終的に森は道路によって切り開かれ、ゆっくりと、いくつかの新しい建物がそれに沿って発芽しました.しかし、少なくともしばらくの間、古い倉庫は耐えました。しかし、年を追うごとに、窓に投げつけられた石に屈することを余儀なくされた窓が増えました。


公平を期すために、誰が窓を壊したとしても、後悔に悩まされることはなかったでしょう。いくつかはすでに壊れており、修正されていません。結局のところ、交換の費用は、すべての修理が必要なのと同じです。


そのため、古い倉庫の窓は目標を訓練し、時期尚早の解体支援が成功したとき (別の窓が壊れたとき) を祝う機会を提供しました。


私と他の何人かの同僚にとって、道路は学校へのより短いルートを可能にしました。それにもかかわらず、それは既知のパスであり、奇妙に不安を感じさせた荒廃した建物を避けることができたので、私たちは皆、古くて少し長いルートを好みます.考えたり心配したりすることが少なくなりました。


私は携帯電話の前の時代から、あなたを自分の子供時代に連れて行き、荒れ果てた建物や地域を観察したときに子供の頃に経験したかもしれない同様の感情をかき集めようとする試みとして、この話を共有します。壊れた Windows 理論


一言で言えば、壊れた窓の理論は、環境の混乱が犯罪、反社会的、または市民的無秩序な行動を助長することを示唆しています.壊れた窓がないということは、混乱の可能性が低く、平和と合法性が支持されるということです。古い倉庫の割れた窓のように、すでに乱れが多いと、さらに積み上げやすくなります。


Pragmatic Programmerを読んでいるときに、何ヶ月も前に壊れた窓の理論に初めて出くわしました。ソフトウェア開発の世界に慣れていない場合は、読む価値があります。


壊れた窓の理論の知恵が頭に浮かぶことがよくあります。確かに、犯罪学者や行動の専門家はそれについてもっと多くのことを言うでしょうが、私にとって、それは環境が人間の行動にどのように影響するかの刻まれた図です.


最近の学者の中には、彼らの論文や主張を読まなくても、その理論はもはや成り立たないと主張する人もいますが、私はすでに次のように異議を唱えています。あなたが専門家であることは理解していますが、私の経験ではそれは正しいです。」


「Bing Bang」テレビ番組が好きなら、専門家でさえ間違っている可能性があり、友人によってさえ間違っていることが証明されることを知っています.


この古い倉庫の物語の壊れた窓が反社会的行動を招き、通行人が自動化されたトラブルの予感に導かれるかのように、そこから離れ、心からそれを取り除くように導くことを理解していただければ幸いです.

テクノロジーと犯罪

私が年を取りすぎていると思われないように、別の例として TikTok Kia チャレンジを使用させてください (これには車の窓を割ることも含まれる場合があります)。


ご存じない方のために説明すると、起亜自動車と現代自動車を標的とした一連の自動車盗難につながった、そのプラットフォームで共有されたビデオに関するもので、主に 10 代の若者によるもので、物的損害、悲しみ、生命の損失、その他の悪質な行為をもたらしました。 TikTokの利益とさらなるプラットフォームの悪評を除いて.


これらの自動車メーカーによる意図的または不運な設計上の決定であるにもかかわらず、それはシステムの脆弱性であり、一般的な USB ケーブルを介して悪用されることに成功しました。


自動車工場のイメージ


大人、または少なくとも責任ある行動は、前述の脆弱性を両方のブランドに開示し、それを修正するための措置を講じることを望んでいたでしょう.もちろん、それは、ビデオの作成者がおそらく有名になることは決してないだろうし、それをしている間も楽しんでいないことを意味していたでしょう.


最近の若者は、たとえ悪の使者であっても、消防士、医師、宇宙飛行士ではなく、インフルエンサーになりたいと思っているのは興味深いことです。頑張れマスコミ! (皮肉を得るのに苦労している人のための私の皮肉の試み)。


したがって、この例では、意図的ではなくても、窓 (および USB ケーブル) が壊れていると、ガラスが粉々になるだけでなく、より劇的な結果につながる可能性があることを認識できます。


それ以来、両社は犯罪行為を最小限に抑えて対処するため、つまり壊れた窓を修理するための措置を講じてきましたが、風評被害と経済的損失を被る前ではありませんでした.

ソフトウェア開発設計: HTTP リファラー ヘッダーの例

ソフトウェアの世界で何年もの間壊れていた例として、HTTP Referer ヘッダーがあります。これは、referrer という単語のスペルミスです。それは私に問題を引き起こしました。おそらくあなたに、そして何千人ではないにしても何百人もの人々に問題を引き起こしました.


私と同じように、あなたもおそらく著者を嘲笑したでしょう (通常は大きな声で、失礼でからかうような発言をします)。また、誰のせいなのかを調べ、何年も経った後でも、忙しすぎるという言い訳や「いずれ直します」という言い訳は非常に人間的なものであると結論付けた可能性もあります。他の壊れた窓についても、以前に同様の理由を聞いたことがあるはずです。


何か間違ったことをする必要があると簡単に教えられているときに、他の人が時間を無駄にすることを誰が気にしますか? それが正しい方法だからです。または、面白い考えですが、辞書を変更してみませんか?そうすれば、それはもう間違いではありません。


選択したテキスト エディターを開き、英語の辞書を使用して、スペルミスのバージョンで文を書きます。単語はタイプミスとしてフラグが立てられますか?

結果はあなたを驚かせるかもしれません。


壊れた窓を修理せずに放置すると、さらに多くの窓が壊れる原因となります。もっと窓を割ってみませんか?きっといつの日か、すべてが修正されなければなりません。


ここに考えられる理由があります!数字なので間違えやすいですが、やってみましょう。


この情報源によると、2021 年の米国のプログラマーの平均給与は 93,000 ドルでした。 1 週間に 40 時間、52 週間の労働で 1 時間あたりの価値が 44.71 ドルになると仮定しましょう (アメリカ人は休暇休暇をあまり取りません)。


この情報源によると、米国だけでも 430 万人のプログラマーがいます。それらの 5% しか取らなかったとしても (値は任意に選択しました)、215,000 人のプログラマーが何らかの形でタイプミスに遭遇し、それを理解して対処するための措置を講じなければなりませんでした。


これらのプログラマーのそれぞれが、副作用に対処し、なぜそれが最初に存在するのかを理解して、平均 1 時間しか失わなかった場合、彼らの最初の出会いのコストは960 万ドルになるでしょう。 30% (1 290 000 人) の場合、その値は5770 万ドルになります。繰り返しますが、米国のみです


別の任意のパーセンテージを選択しても、無駄は膨大です。


お金を両手で数えるように持っている人のイメージ


また、開発サイクルの早い段階で発見された問題は、本番環境で発見された問題よりもはるかにコストがかからないことを考慮していないことに注意してください。また、インフレ調整を追加したり、それに対処するのに時間を費やしているさまざまな国や学生や教授、ウェブサイトを持っていてプログラマーとは見なされていない人々、退職した人、まだ持っている人についても考慮していません。それを学ぶために。


次に、その値を外挿して世界を含めます。どれだけのお金、どれだけの価値、どれだけの人生が、すでに失われ、失われると思いますか?


優しい魂がどこかで「ところで、私たちはそれを修正し、古い方法はバージョン X で非推奨になります」と共有する日を待ち望んでいます。私にとって、簡単な間違いの責任者がこのタイプミスで覚えておくべきほど卑劣でない限り、それを修正するのに最適な時期は昨日だったからです. (Apache Foundation や Nginx で働いている人を知っていますか? お願いします! しつこく言ってください!)


「目的を念頭に置いて始める」ことには、他の人のために、自分がしたこと、しなかったことも含まれます。


ただし、これはソフトウェアの世界の例にすぎず、ユニコーンではありません。

企業の成熟と壊れた窓

私の経験では、成熟度が高く、関係者の経験が高く、ソフトウェアの寿命が長いほど、ウィンドウの破損が長期間続くか、対処されない可能性が高くなります。


いいえ。私は、早期に頻繁にリリースすることに満足している人々の後ろに立っているわけでも、横に立っているわけでもありません。完全な機能を考えずにほとんど壊れたウィンドウをリリースしていることを知っていることは、アジャイルであることではなく、ずさんであることです。


はい、多くの理由が浮上し、上記の声明と矛盾することは承知していますが、利益を得る決心をしたサイバー攻撃者によってもたらされた天候の変化に抵抗するものはないと私は信じています.より明確に: 新興企業のコードベースは常に犯罪の機が熟しています。


しかし、成熟した組織に関して言えば、壊れた窓を抱えている成熟の現実の背後にある最も強力な要因は、投資収益率の低さと、利用可能なリソースの注意の必要性を決定し強制するその他の差し迫った優先事項です。


また、確立された組織は、規制とコンプライアンスに拘束されており、具体化した場合に幅広い社会的影響を与える特定のリスクを負うことを制限しています。また、これらの企業がスタートアップをインキュベートして特定のニッチを獲得し、規制や活動がより安定するまで待ってから実際に買収することを好む理由もここにあります。


複数のドシエが積み重なった画像


社会は失敗した人を支持しません。私たちは勝者を祝います!ですから、間違いや失敗をしたときに防御的になるのは人間です。私たちは、私たち以外のすべての人が、ペナルティやフリーキックを決して見逃さないことを要求します.また、プログラマーはお互いに親切ではありませんが、これは彼らだけの問題ではありません。


したがって、チームまたは個人が、「実際にはバグではない」、「実際には欠陥ではない」、「設計上の決定であった」、「そのように使用できるとは思っていなかった」などの理由で応答することは予想外ではありません。 」、「誰もそれをしないだろう」、「誰も傷つけない」、「意図したとおりに機能している」など。


そして、壊れたウィンドウが修正されない場合、プログラマーはユーモラスなこっけいなやり方で、それを「機能」と呼びます。


ばかげていると思いませんか?何が起こっているのか見てみましょう。


くつろいで座って、自分自身の偏見に抵抗しようとすれば、おそらく多くの人が同じことを観察できるでしょう。生きて問題を解決している多くの人間は、壊れた窓を確実かつ簡単に認識できます。また、一部は決して修正されないため、人々は心配するのをやめ、頭の未処理分からそれらを取り除く方法を探します。


個別に、または直接制御できない人生の他の多くのことと同様に、それらについて考え続けると、それらはあなたに重くのしかかるからです。

結論

では、この否定的で望ましくない一般的な行動が受け入れられなくなるのはいつでしょうか?人が墜落して死亡した時だけですか?


もしそうなら、まあ、決して修正されないことがいくつかあります... 負け続けましょう、より正確には、他の人が負け続けましょう.


倉庫の所有者だけに影響を与えた粉々になったガラスから、車両の所有者、それらを奪った人々、そして最後に他のプログラマーまでの間で、たとえ小さくても詳細に対処することで違いが生まれます.


次に何か間違ったことをしたときは、すぐに修正するか、それをした人に修正してもらうことを検討してください。


そして、他の人もそうしているのでポイ捨てはやめてください。


そして、それらが専門家なら、彼らに挑戦してください!彼らは人間であり、間違いを犯し、気づいていないかもしれません。彼らが馬鹿げた反応をする場合は、「どういたしまして」と答えてください。


もし私がこれまでの人生で行ったすべてのタイプミスやその他のばかげたことに対して支払う罰則があるとしたら…


しかし、私は常に 1 つのことをしようとしています: それらを認識したら、それらを修正します。あなたもすべき!


ささいなこと、それらは重要です。そして、正確ではないにしても、彼らの存在が何を意味するのか.


「壊れたウィンドウ」 (悪い設計、間違った決定、または貧弱なコード) を修復せずに放置しないでください。 - Dave Thomas と Andy Hunt による実用的なプログラマー

(小さい子も含みます)