コードの所有権はコードの匂いですか?
これは、物議を醸すプログラミングの意見のスレッドでこの答えを読んで以来ずっと考えてきたことです。 あなたの仕事は、自分を失業させることです。 雇用主向けのソフトウェアを作成する場合、作成するソフトウェアは、開発者が理解し、最小限の労力で理解できるように作成する必要があります。適切に設計され、明確かつ一貫して記述され、きれいにフォーマットされ、必要な場所に文書化され、期待どおりに毎日ビルドされ、リポジトリにチェックインされ、適切にバージョン管理されます。 あなたがバスにぶつかったり、解雇されたり、解雇されたり、仕事を辞めたりした場合、あなたの雇用主はすぐにあなたに取って代わることができ、次の人があなたの役割に入り、あなたのコードを拾い上げて1週間以内に走ります。彼または彼女がそれを行うことができない場合、あなたは惨めに失敗しました。 興味深いことに、その目標を持っていることが雇用主にとってより価値のあるものであることがわかりました。使い捨てになるように努力すればするほど、彼らにとってより価値のあるものになります。 そして、これは他の質問、例えばこれで少し議論されましたが、私は再びそれを持ち出し、より多くの空白から「それはコードの匂いです!!」という観点から議論したかったのです。まだ深さ。 私は10年間プロの開発者です。私は、適切な新しい開発者が比較的迅速に理解できるようにコードが十分に書かれた仕事を1つ持っていますが、業界のほとんどの場合、非常に高いレベルの所有権(個人とチームの所有権の両方)が普通。ほとんどのコードベースには、新しい開発者がそれらを選択してすばやく作業できるようにするためのドキュメント、プロセス、および「オープン性」が欠けているようです。コードベースを非常によく知っている(「所有している」)誰かが知っている、書かれていない小さなトリックやハックが常にたくさんあるようです。 もちろん、これに関する明らかな問題は次のとおりです:人がやめるか、「バスにぶつかった」場合 または、チームレベルで、チームランチに出かけたときにチーム全体が食中毒になり、全員が死亡した場合はどうなりますか?チームを比較的簡単に新しいランダムな開発者の新しいセットに置き換えることができますか?-私の過去の仕事のいくつかでは、そのことがまったく想像できません。システムには非常に多くのトリックとハックがあり、「知っておく必要がある」だけなので、採用する新しいチームは収益性の高いビジネスサイクル(たとえば、新しい安定したリリース)よりもはるかに長くかかります。要するに、製品を放棄しなければならないとしても、私は驚かないでしょう。 明らかに、チーム全体を一度に失うことは非常にまれです。しかし、これにはもっと微妙で不吉なことがあると思います-これは、このスレッドでこれまで議論したのを見たことがないので、このスレッドを開始することを考えさせたポイントです。基本的に、コードの所有権に対する高いニーズは、技術的な負債の指標であることが非常に多いと思います。システムにプロセス、コミュニケーション、優れたデザイン、多くの小さなトリックやハッキングが欠けていて「知っておく必要がある」などの場合は、通常、システムが次第に深く技術的な負債に陥っていることを意味します。 ただし、コードの所有権は、プロジェクトや会社に対する一種の「忠誠心」として、またあなたの仕事に対する「責任を負う」肯定的な形として提示されることが多いため、完全に非難することは一般的ではありません。しかし同時に、方程式の技術的負債の側面は、コードベースが次第にオープンになり、作業が難しくなることを意味することがよくあります。そして、特に人々が前進し、新しい開発者がその地位に就く必要があるため、技術的な負債(つまり、メンテナンス)コストが高騰し始めます。 ですから、ある意味では、コードの所有権に対する高いレベルのニーズが、一般的なプログラマーの想像力の中で、仕事の匂いとして公然と見られていれば、私たちの職業にとって良いことだと思います。「仕事に責任と誇りを持っている」と見なされるのではなく、「技術的な負債を介して自分自身を定着させ、人工的な職の安全を確保する」と見なすべきです。 そして、テスト(思考実験)は基本的にすべきだと思います:もしその人(あるいはチーム全体)が明日地球の表面から消えたとしたら?これはプロジェクトの巨大な-おそらく致命的な-怪我になりますか、それとも新しい人々を連れて来て、彼らにdoccosとヘルプファイルを読んでもらい、数日間コードを遊んでもらうことができますか?数週間でビジネスを開始します(1か月ほどで完全な生産性に戻ります)。