約30人の開発者が参加するオープンソースプロジェクトに取り組み始めたばかりです。「ループ」に入り、プロジェクトの定期的なコミッターになる方法として、いくつかのバグの修正に取り組んでいます。問題は、私が取り組んでいるバグの1つを引き起こしている基本的な設計上の欠陥を発見したと思うことです。しかし、メーリングリストでこれをas慢にすると慢になると思います。この問題についての議論のいくつかは、一部の人々と首を突っ込んでいます。これについてどうすればいいですか?
約30人の開発者が参加するオープンソースプロジェクトに取り組み始めたばかりです。「ループ」に入り、プロジェクトの定期的なコミッターになる方法として、いくつかのバグの修正に取り組んでいます。問題は、私が取り組んでいるバグの1つを引き起こしている基本的な設計上の欠陥を発見したと思うことです。しかし、メーリングリストでこれをas慢にすると慢になると思います。この問題についての議論のいくつかは、一部の人々と首を突っ込んでいます。これについてどうすればいいですか?
回答:
これが「基本的な設計上の欠陥」であると確信していても、あなたは部外者であることを忘れないでください。そこには正当な理由があります。または、プロジェクトがどれだけ古いかによっては、その時点で正当な理由でそこに置かれた可能性がありますが、現在は歴史的な理由でまだ残っています。
「これをメーリングリストに掲載する」代わりに、質問をしてみてください。何かのようなもの:
「ねえ、私はXに偶然出会っただけで、私には意味がありません。これを実装する正しい方法はYのように思えますが、私はここで新しいことを知っています。結論にジャンプします。これは設計の誤りですか、それとも私が見落としているものがありますか?
エンジニアリングは、謙虚さが依然として真の美徳と考えられている世界で数少ない場所の1つであり、この方法で「明らかな問題」について質問することは、良い答えを得て新しいことを学ぶための本当に良い方法です。
48の力の法則の 1つ:
あなたの行動を通して勝ち、議論を通して決して勝てない
あなたが議論を通して得たと思う瞬間的な勝利は、本当にピュロスの勝利です。言葉を言わずに、他の人にあなたの行動を通してあなたに同意してもらうことは、はるかに強力です。実証し、説明しないでください。
これは、多くの無意味な議論の後、私が苦労して学んだことです。
この特定のケースでは、動作するはずであるが、この設計上の欠陥のために動作しない非常にシンプルで特定のコードを思い付くようアドバイスします。古いことわざにあるように、「コンパイラー/インタープリターと議論することはできません」。
もう1つは、グループに影響を与えるには、グループのメンバーとして認識される必要があるということです。あなたが会社に入社したとしても、人々はあなたをまだグループのメンバーとして認識していません。したがって、彼らがあなたを彼らの一人として認識することを学ぶまで、確立されたグループと一緒に行く方が良いかもしれません。
あなたはおそらくこれが好きではないでしょう...しかし、ここに行きます...
「ループ」に入り、プロジェクトの定期的なコミッターになる方法として、いくつかのバグの修正に取り組んでいます。問題は、私が取り組んでいるバグの1つを引き起こしている基本的な設計上の欠陥を発見したと思うことです。
いいえ、違います。そうした場合、あなたはそれをためらうことはないでしょう。あなた自身が「基本的な設計上の欠陥」について確信を持っていないという事実は、あなたがそれを発見していないことを意味します。他の誰かの間違いを指摘しようとするとき、最上級の言葉(「基本的な」など)を使用するために友達を買うわけではありません。
あなたが発見したかもしれないのは、あなたが抱えている問題のために、わずかに優れた設計です。ただし、おそらく徹底的にテストする必要があります。プロジェクトを初めて使用するので、何を話しているのかわからない可能性があります。
しかし、私がこれをメーリングリストで非難すると、私はas慢になります
それを「基本的な設計上の欠陥」と呼ぶことは、間違いなく慢だと思います。さらに言えば、それがバグである可能性があることを指摘することは、最良のアイデアではありません。それが問題であるという事実を知らない(そしてバックアップできる)場合は、完全に理解するまで謙虚に質問して調査する必要があります。あなたが説得しようとしている人よりも良い。
...そして、私がこの問題について行った議論のいくつかは、一部の人々と首を突っ込んでいます。これについてどうすればいいですか?
やめる。これは道徳的な問題ではなく、誰も殺していません(私は推測します)。プロジェクトの長期的なメンバーになりたい場合は、質問する前に信頼を獲得する必要があります。バグを修正し、(グループが評価するメトリックに関係なく)すばらしい仕事をし、いくつかの機能を設計し、テーブルの席を獲得します。
次に、指を指すか、壊れたものを呼び出すことなく、謙虚にグループにデザインを改善するための提案を表示します。そして、あなたはすべての結果とそれらに対する解決策を熟考したか、または「素朴」であることで撃shotされるでしょう。デザインが優れている理由について議論する準備をしてください。失う準備をし、優雅に失う。
あなたのアイデアが本当に優れている場合、最終的にはグループに受け入れられますが(おそらく元のデザイナーには受け入れられません)、グループは気にしません。または、グループはバカです。どちらの場合でも、とにかくグループの一部になりたいのはなぜですか?
...
可能であれば、代替手段は、気の毒なものを素晴らしく鮮やかにコーディングすることです。コーディングの腕前に驚いて震え、エレガントなシンプルさとデザインの永遠の真実を受け入れる以外に選択肢がありません。開発者は能力を尊重しますが、注意する必要があります-無能に対する罰(または不当な慢)はかなり厳しいです。しかし、あなたはこの質問をしているので、私は見事でand然としない慢ルートは本当に選択肢ではないと推測しています。;)
「私をあなたの家に迎えてくれてありがとう。私がドアを通り抜けるとき、私は家族の誰もが彼らの赤ちゃんがく、誰かが彼を面白い服を着ていることを知らせたい。」
バグはバグであり、それを呼び出しても問題ありません。「設計上の欠陥」が原因であると言うことは、あなたの前の男(ほとんど「パパ」と似ている)に指を向けて、彼がばかだと伝えることです。
不要で逆効果です。私は提案します:
「問題#blahについては、XYとZを実行することで修正できると思いますが、それがプロジェクトの残りにどのように影響するかわかりません。これは大丈夫でしょうか?」
XYとZが問題を修正する場所。それが設計上の欠陥だったとあなたに伝えましょう。別の解決策があるかもしれません。または、「欠陥」の背後にある仮定がプロジェクト全体で非常に深く実行されるため、それを変更するとバグは修正されますが、他のすべてが壊れます!