Behandlung eines grundlegenden Konstruktionsfehlers, wenn Sie neu im Projekt sind [geschlossen]

13

Ich habe gerade angefangen, an einem Open Source-Projekt mit ungefähr 30 Entwicklern zu arbeiten. Ich arbeite daran, einige der Fehler zu beheben, um in die "Schleife" zu geraten und ein regelmäßiger Committer für das Projekt zu werden. Das Problem ist, dass ich einen grundlegenden Konstruktionsfehler aufgedeckt habe, der einen der Fehler verursacht, an denen ich arbeite. Aber ich habe das Gefühl, wenn ich das auf der Mailing-Liste hochnehme, werde ich als arrogant abschneiden und einige der Diskussionen, die ich über das Thema geführt habe, sind Köpfe mit einigen der Leute zu stoßen. Wie soll ich vorgehen?

Matt Phillips
quelle

Antworten:

20

Auch wenn Sie sich ziemlich sicher sind, dass dies ein "grundlegender Konstruktionsfehler" ist, denken Sie daran, dass Sie ein Außenseiter sind. Es könnte aus gutem Grund drin sein. Oder, je nachdem, wie alt das Projekt ist, könnte es aus einem guten Grund dort hineingesteckt worden sein, und jetzt ist es aus historischen Gründen immer noch da.

Anstatt "das auf die Mailingliste zu setzen", stellen Sie eine Frage. Etwas wie:

"Hey, ich bin gerade auf X gestoßen, und das ergibt für mich keinen Sinn. Es scheint, als wäre der richtige Weg, dies umzusetzen, Y, aber andererseits weiß ich, dass ich neu hier bin und das nicht will Springen Sie zu irgendwelchen Schlussfolgerungen. Ist dies ein Fehler im Design oder fehlt mir etwas? Kann mich jemand ausfüllen? Danke. "

Ingenieurwesen ist einer der wenigen Orte auf der Welt, an denen Demut immer noch als echte Tugend betrachtet wird, und Fragen zu "offensichtlichen Problemen" zu stellen ist eine wirklich gute Möglichkeit, um gute Antworten zu erhalten und neue Dinge zu lernen.

Mason Wheeler
quelle
2
Das ist definitiv in die richtige Richtung. Ich möchte es nur so machen, dass es nicht als "Ich kenne dein Unrecht und ich habe Recht" herauskommt und trotzdem etwas daraus macht.
Matt Phillips
@Matt: Formulieren Sie es dann wie folgt: "Ich weiß nicht, dass ich Recht habe", und geben Sie Ihr Bestes, um zu vermeiden, dass es sarkastisch oder anklagend klingt.
Mason Wheeler
Ich würde so etwas wie "Ich verstehe nicht, warum das so gemacht wird. Wäre es nicht besser / einfacher / cooler, es anders zu machen? Ich denke, es würde auch bei Bug XX helfen."
Javier
2
Ich denke, Sie möchten vielleicht ein bisschen mit dem Wortlaut spielen, anstatt direkt zu sagen, "der richtige Weg, dies umzusetzen, wäre Y". Wenn Sie daraus eine reine Frage machen "Gibt es einen Grund, warum Y nicht verwendet wird?" Jeder wird ein etwas fragiles Ego haben, wenn er nach seinem eigenen Code gefragt wird und wenn er sich an sein Fachwissen wendet (warum hast du X anstelle von Y gewählt), anstatt es herauszufordern (Y ist / scheint / fühlt sich besser / cooler / einfacher als X) kann eine günstigere Reaktion hervorrufen.
Steven
6

Eines der 48 Gesetze der Macht :

Gewinne durch deine Aktionen, niemals durch Streit

Jeder momentane Triumph, den Sie durch Argumentation gewonnen haben, ist in Wirklichkeit ein Pyrrhussieg: Der Groll und der böse Wille, den Sie erregen, sind stärker und dauern länger als jede momentane Meinungsänderung. Es ist viel mächtiger, andere durch Ihre Handlungen dazu zu bringen, Ihnen zuzustimmen, ohne ein Wort zu sagen. Demonstriere, expliziere nicht.

Dies ist eine, die ich nach vielen sinnlosen Argumenten auf die harte Tour gelernt habe.

In diesem speziellen Fall würde ich raten, ein sehr einfaches und spezifisches Stück Code zu entwickeln, das funktionieren sollte, aber aufgrund dieses Konstruktionsfehlers nicht funktioniert. Wie das alte Sprichwort sagt: "Mit dem Compiler / Interpreter kann man nicht streiten".

Die andere Sache ist, dass man als Mitglied der Gruppe wahrgenommen werden muss, um Einfluss auf eine Gruppe zu haben . Obwohl Sie dem Unternehmen beigetreten sind, werden Sie noch nicht als Mitglied der Gruppe wahrgenommen. Daher ist es vielleicht besser, mit der etablierten Gruppe zu gehen, bis sie lernt, Sie als einen von ihnen wahrzunehmen.

Jason Baker
quelle
5

Können Sie sich erkundigen, warum ein bestimmtes Design verwendet wurde? Auf diese Weise erhalten Sie möglicherweise mehr Hintergrundinformationen, da es einige gute Gründe dafür gibt, warum etwas ausgewählt wurde, das Sie nicht kennen. Ich würde mit der Idee gehen, dass Sie nicht ganz der Experte sind, der das Design heraussuchen kann, aber das Nachfragen ist möglicherweise eine Möglichkeit, mehr zu erfahren, damit Sie schließlich nach dem Fehler fragen können, den Sie gefunden haben, damit die Nachricht nicht gesehen wird als Flammenköder oder Trolling.

JB King
quelle
4

Das wird dir wahrscheinlich nicht gefallen ... aber hier ist es ...

Ich arbeite daran, einige der Fehler zu beheben, um in die "Schleife" zu geraten und ein regelmäßiger Committer für das Projekt zu werden. Das Problem ist, dass ich einen grundlegenden Konstruktionsfehler aufgedeckt habe, der einen der Fehler verursacht, an denen ich arbeite.

Nein, nein, hast du nicht. Wenn Sie das tun würden, würden Sie nicht so zögern. Die Tatsache, dass Sie sich über den "grundlegenden Designfehler" nicht sicher sind, bedeutet, dass Sie keinen entdeckt haben. Wenn Sie versuchen, auf den Fehler eines anderen hinzuweisen, werden Sie nicht mit Superlativen (wie "fundamental") belohnt.

Was Sie vielleicht entdeckt haben, ist ein etwas besseres Design für das Problem, das Sie haben. Sie sollten es wahrscheinlich gründlich testen - da Sie neu im Projekt sind, haben Sie wahrscheinlich keine Ahnung, wovon Sie sprechen.

Aber ich habe das Gefühl, dass ich arrogant werde, wenn ich das auf der Mailing-Liste platziere

Die Bezeichnung "grundlegender Konstruktionsfehler" wirkt auf jeden Fall arrogant. Im Übrigen ist es nicht die beste Idee , darauf hinzuweisen, dass es sich möglicherweise um einen Fehler handelt. Wenn Sie nicht genau wissen (und sich darauf verlassen können), dass es sich um ein Problem handelt, müssen Sie demütig Fragen stellen und Nachforschungen anstellen, bis Sie es vollständig verstanden haben . Besser als wer auch immer Sie versuchen zu überzeugen.

... und einige der Diskussionen, die ich über das Thema geführt habe, sind Köpfe mit einigen der Leute zu stoßen. Wie soll ich vorgehen?

Halt. Dies ist keine moralische Frage und bringt niemanden um (nehme ich an). Wenn Sie beabsichtigen, ein langfristiges Mitglied des Projekts zu sein, müssen Sie sich zuerst Vertrauen verdienen, bevor Sie es in Frage stellen. Beheben Sie die Fehler, machen Sie einen tollen Job (nach welchen Kriterien auch immer die Gruppenwerte), entwerfen Sie ein paar Features und verdienen Sie sich einen Platz am Tisch.

Bringen Sie dann demütig einen Vorschlag zur Verbesserung des Designs für die Gruppe vor, ohne mit den Fingern zu zeigen oder etwas Gebrochenes zu nennen. Und du solltest besser alle Konsequenzen und die Lösungen für sie durchdacht haben, oder du wirst erschossen, weil du "naiv" bist. Seien Sie bereit für ein Argument, warum Ihr Design besser ist. Seien Sie bereit zu verlieren und würdevoll zu verlieren.

Wenn Ihre Idee wirklich besser ist, wird sie entweder irgendwann von der Gruppe akzeptiert (wenn auch vielleicht nicht vom ursprünglichen Designer), die Gruppe kümmert sich nicht darum, oder die Gruppe ist dumm. Warum möchten Sie in beiden Fällen überhaupt ein Teil der Gruppe sein?

...

Wenn Sie dazu in der Lage sind, besteht die Alternative darin, das verdammte Ding so blutig brillant zu codieren, dass sie vor Erstaunen über Ihre Codierungsfähigkeiten zittern und keine andere Wahl haben, als die elegante Einfachheit und die ewige Wahrheit Ihres Designs zu akzeptieren. Entwickler tun Respekt Kompetenz, aber man muss vorsichtig sein - die Strafe für Inkompetenz (oder unberechtigte Arroganz) ist ziemlich streng. Da Sie diese Frage stellen, ist die brillante und unbefangene Überheblichkeit meiner Meinung nach eigentlich keine Option. ;)

Mark Brackett
quelle
2
"Hallo, danke, dass du mich in deinem Haus willkommen gehest. Während ich durch die Tür gehe, möchte ich alle in der Familie wissen lassen, dass ihr Baby hässlich ist und dass ihn jemand lustig angezogen hat."

Ein Fehler ist ein Fehler, und es ist in Ordnung, ihn so zu nennen. Zu sagen, dass es sich um einen "Designfehler" handelt, bedeutet, einen Finger auf den Mann vor Ihnen zu richten (am ehesten auf den "Daddy") und ihm zu sagen, dass er ein Idiot ist.

Unnötig und kontraproduktiv. Ich schlage vor:

"In Bezug auf das Problem #blah denke ich, dass ich es beheben kann, indem ich XY und Z mache, aber ich bin nicht sicher, wie sich das auf den Rest des Projekts auswirken wird. Wäre das in Ordnung?"

Wo XY und Z das Problem beheben. Lassen Sie sich sagen, dass es sich um einen Konstruktionsfehler handelte. Möglicherweise gibt es eine alternative Lösung. Oder die Annahmen, die hinter dem "Fehler" stehen, sind so tiefgreifend, dass eine Änderung den Fehler behebt, aber alles andere kaputt macht!

Steven A. Lowe
quelle