私は約 5 年前に大きくて複雑なシステムを設計しました。私は次の 5 年間、野蛮人が私のアーキテクチャを汚すのを防ぐために、「私の」システムに影響を与えるすべてのプロジェクトに自分自身を注入しました。絶え間なく絶え間なく圧力をかける限り、建築物をきれいに保つことができましたが、負け戦を戦っていました。理由は次のとおりです。
1) ほとんどの人は、今日仕事をやり遂げたかどうかで判断されます。3 年前にプロジェクトを時間通りに完成させるために手抜きをしたからといって、だれも叱責されたことはありません。一方で、多くの人がプロジェクトを時間通りに完成させなかったことで叱責されています。
2) コード、アプリケーション、またはユーザーなどに対する所有権があるため、システムを整頓したい場合があります。多くの人は所有権を持っていないため、喜んで何かをハックします。彼らはそれで行うことができます。馬を水に導くことはできますが、世話をさせることはできません。
3)全員にコードを適切に維持するよう説得した場合、新しい人々が参加し、物事を正しく行う方法を教える必要があります。そのため、成功したとしても、常に新しい敵と同じ戦いを繰り広げているため、失敗しているように感じることがあります.
4) あなたは実際には間違っているかもしれません。Microsoft が MS-Paint を堅牢で保守しやすいものにするために 2 倍のプログラマー時間を費やすことは、経済的に理にかなっていますか? 醜いハッキングされたシステムで十分な場合があります。ほとんどの優れたプログラマーはこれを理解するのに苦労しますが、これは通常、彼らが優れたプログラマーであるためです。
5) 物事を一緒にハッキングすることにひねくれた喜びを感じている人がいると断言できます。それは、より速くできるか、それを理解できるのが自分だけであるか、ルールを破る子供じみた必要があるためです。これらの人々と議論することはできません。彼らとの議論に時間を費やすほど、プロジェクトの締め切りが近づき、とにかく何かを一緒にハックすることを余儀なくされます.
6) 彼らよりもあなたの方がシステムをよく理解している可能性は十分にあります。あなたにとって醜いハックのように見えるものは、システムに精通していない人にとっては「軽く踏む」ように見えるかもしれません. または、コードを堅牢にするための余分な努力により、プログラマーは、これまで経験したことのない、理解できない問題から保護されます。リターン コードをチェックしなかったため、何か問題が発生するまでリターン コードのチェック方法を学習しません。その時点で、それは「余分な作業」ではなくなり、「必須の作業」になり始めます。
小規模でタイトな開発チームであれば、それは可能です。しかし、組織が大きくなればなるほど、成功する可能性は低くなります。250 人の IT ショップに、物事を迅速に行うことよりも、物事を正しく行うことを重視してもらうことができれば、あなたの説得力は伝説的です。