Frage:
Ethik der "Ententechnik"
Josh Johnson
2018-03-10 05:56:47 UTC
view on stackexchange narkive permalink

Bei der Programmierung handelt es sich bei der Ententechnik um eine Technik, bei der Sie einen offensichtlichen, einfachen Überblick über Ihren Code erhalten, in der Hoffnung, dass er während der Überprüfung die Aufmerksamkeit auf sich zieht und große, zeitaufwändige Designänderungen abschwächt.

Es gab dieses eine Team in meiner Firma, das dafür bekannt war, zum Zeitpunkt der Überprüfung sehr wählerisch zu sein. Wenn wir Lib A verwenden würden, würden sie Lib B wollen. Aber wenn wir Lib B verwendet hätten, würden sie Lib A wollen. Sie sind mit diesem Designmuster nicht zufrieden und möchten ein anderes sehen. Aber ich schwöre, wenn wir ursprünglich das Muster verwendet hätten, das sie vorgeschlagen hatten, hätten sie das andere gewollt. Es war, als müssten sie einige Kommentare hinzufügen, um den Wert zu demonstrieren. Diese großen Änderungen waren problematisch, da aus einer einstündigen Aufgabe mehrere Stunden werden konnten, die sich im Laufe der Tage hinzogen und den Fortschritt blockierten. Und ich weiß, was Sie denken: Warum nicht vorher mit diesem Team über die Änderung sprechen? Wir machten. Wir hatten Besprechungen, um die Änderung zu besprechen, zu erklären, wie das Design die Abwärtskompatibilität aufrechterhält, und um sicherzustellen, dass sie sich gehört fühlten, Input hatten und an Bord waren. Es war egal. Als die Codeüberprüfung eintraf, war alles, was vereinbart wurde, vergessen.

Irgendwann mussten ein Mitarbeiter und ich eine Änderung an einer Bibliothek vornehmen, die wir benutzten, damit wir die nutzen konnten Änderung in unserem Programm. Es war eine kleine Änderung, aber wir seufzten, hockten uns hin und machten uns auf den Weg zur Codeüberprüfung. Wir haben die Änderung paarweise programmiert und kurz durchgearbeitet, bevor wir sie zur Codeüberprüfung eingereicht haben. Da ich die Tendenz dieses anderen Teams kannte, hartnäckig zu sein, hatte ich eine Idee:

Teamkollege: Sollten wir dies hier durch die Kurzschrift-Syntax der neuesten Version der eingeführten Sprache ersetzen?

Ich: Gute Idee ... lassen Sie es vorerst.

Es gab einige andere Fälle. Nichts Kritisches wie das Hinterlassen eines Fehlers, aber Dinge wie das Verlassen der Syntax, von denen wir wussten, dass sie dem anderen Team nicht gefallen haben, lassen Raum für das Extrahieren von Methoden oder das Umbenennen von Variablen. Es hat wunderbar funktioniert. Sie kommentierten jede Ente und wir antworteten mit: "Danke! Jetzt reparieren!" und das war's. Die Codeüberprüfung war in ungefähr 10 Minuten beendet und wir konnten fortfahren, ohne blockiert zu werden.

Aber das brachte mich zum Nachdenken, gibt es ethische Probleme? Ich mache das nicht besonders gerne und für kein anderes Team. In diesem einen Fall konnten wir jedoch eine potenzielle 2-stündige Hin- und Her-Codeüberprüfung in 10 Minuten umwandeln. Ein Gewinn in meinem Buch. Ich bin gespannt, was andere denken oder ob sie alternative Lösungen für den Umgang mit schwierigen Teams haben.

Aus Gründen der Klarheit bearbeiten: Diese Frage wird immer wieder gestellt, daher wollte ich sie hier ansprechen.

Wenn das Team die Zeit aller verschwendet, warum nicht mit ihnen konfrontieren, zurückschieben oder mit dem Management sprechen?

Wir folgten zuerst allen üblichen / offiziellen Kanälen . Sie hatten kein letztes Wort bei der Codeüberprüfung (obwohl es für mich ein politischer Verlust gewesen wäre, ihr Buy-In nicht zu bekommen), und alles, was absolut dumm oder gefährlich war, würden wir nicht berücksichtigen, aber manchmal würde es mehr sparen, wenn wir uns der Anfrage anschließen Zeit auf lange Sicht. Ich würde gerne kleine Dinge wie "Leerzeichen gegen Tabulator" oder "Klammerplatzierung" ändern. Größere Dinge, die ich zurückdrängen und nach einem Grund fragen würde, warum es sich lohnt, Zeit für die Änderung zu investieren. Manchmal hat es funktioniert, manchmal nicht. Ich und andere hatten sie entweder bei der Arbeit oder beim Mittagessen oder bei einem Bier einzeln angesprochen und gesagt, dass diese Änderungen des Code-Review-Designs den Fortschritt und die Arbeit beeinträchtigen würden. Ich habe ihr Verhalten dem Management als problematisch gemeldet, und andere haben es möglicherweise auch.

Idealerweise würde ihnen gesagt, dass ihr Verhalten inakzeptabel sei, sie würden den Fehler ihrer Wege erkennen und sich ändern. Aber Menschen sind keine Computer und müssen nichts tun, was ich oder jemand anderes gerne sehen würde, unabhängig davon, wie viel Zeit und Geld das Unternehmen verschwendet hat. Jeder Kritik könnte mit "Wir verschwenden keine Zeit, wir stellen sicher, dass der Code richtig gemacht wird. Das ist sicherlich etwas mehr Zeit im Voraus wert, nicht wahr?" Es ist leider nicht wirklich schwarz und weiß und am Ende, wie ich irgendwo unten erwähnte, entschied ich, dass dies kein Hügel war, auf dem ich sterben wollte. Vor allem, weil meine direkten Interaktionen mit diesem Team selten waren.

Es ist schwer zu erklären, außer es als "wählerisch um der Seligkeit willen" zu beschreiben. Zum Beispiel haben wir versucht, stilistische Dinge zu automatisieren, da dies eine Aufgabe für den Editor ist, aber sie haben sich verworrene Regeln ausgedacht, mit denen der Editor einfach nicht konsequent umgehen konnte. Ich glaube nicht, dass sie bösartig waren. Sachen wie, vielleicht würden sie eine Woche lang Muster A wirklich lieben. Wenn ich das weiß, würde ich sicherstellen, dass Muster A für ihren Code verwendet wird, wo dies angebracht ist. Aber zu einem bestimmten Zeitpunkt lesen sie irgendwo, dass Muster A schlecht ist und jeder Muster B verwenden sollte. Dies wird möglicherweise nicht in vorläufigen Entwurfsdiskussionen angesprochen, und ich würde nicht daran denken, zu fragen, weil ich dachte, dass sie Muster A mögen, aber es würde zur Überprüfungszeit kommen. Sie hatten ein seltsames kleines Lehen und regierten es mit eiserner Faust, aber sie waren schon lange in der Firma und das Management mochte sie. Sie waren letztendlich eine nette Gruppe von Leuten, nur etwas seltsam. Es ist nur eines dieser seltsamen Dinge am Arbeitsplatz, die wahrscheinlich verrückt klingen, wenn Sie nicht auf etwas Ähnliches stoßen.

Vielleicht nicht vollständig mit Ihrer Hauptfrage verbunden, aber warum sollten Sie das Verhalten dieses Teams nicht eskalieren?Wenn es sich um ein häufiges Problem handelt und Sie bei den Verzögerungen, die sie hinzufügen, auf tatsächliche Zahlen verweisen können, können Sie * möglicherweise * eine konstruktivere Option verfolgen, anstatt sie zu umgehen.
Oh, wir haben zurückgeschoben.Aber je nach Mondphase hatten sie widerwillig zugestanden oder gegen Zahn und Nagel gekämpft.Die Konfrontation mit ihnen über ihr Verhalten führte zu Abwehrmaßnahmen, und die Berichterstattung über ihr Verhalten führte zu angespannten Beziehungen ohne Verhaltensänderung.Am Ende war dies eine der Schlachten, die ich nicht auswählte
Was sind die Konsequenzen, wenn sie ihren Empfehlungen nicht folgen?Müssen sie sich abmelden?
@colmde Ich habe meine Frage mit einigen weiteren Details bearbeitet, aber sie mussten sich technisch nicht abmelden, und manchmal habe ich mich zurückgedrängt und gesagt: "Wir werden mit dieser Lösung fortfahren, um die Blockierung aufzuheben, können sie aber in Zukunft erneut prüfen, wenn Sie dies tun."Ich würde gerne ", aber aufgrund ihrer Amtszeit in der Firma hätte es mir einige Feinde eingebracht, wenn ich das zu oft getan oder sie einfach ignoriert hätte."Wie Joe Stevens oben sagte, war es manchmal eine Sache von mir, loszulassen, "das Richtige zu tun" (jeden Fall des Verhaltens zu melden) und nur zu versuchen, den Frieden zu bewahren.
@JoshJohnson Wie würden sie darauf reagieren, wenn Sie erklären würden, was Sie getan haben und warum?Bei einigen Teams wäre dies ein Schulterzucken und "Ich verstehe", bei anderen eine Kriegserklärung.
Wenn Sie eine Vorabgenehmigung für Dinge wie Bibliotheken erhalten, erstellen Sie ein Projektumfangsdokument, das diese definiert.Alle Beteiligten würden das Dokument abzeichnen. Wenn das Problem später bei der Überprüfung auftritt, können Sie einfach auf das Dokument verweisen.Das Ändern einer Bibliothek könnte eine massive Änderung sein.
@Myles Dies war eine einmalige Sache und keine übliche Praxis, so dass sich die Dinge etwas ändern können (oder auch nicht).Wenn ich mir vorstelle, jemand würde mir das antun und mir dann davon erzählen, würde ich gut darüber lachen, dass meine Vorlieben so vorhersehbar waren, und dann meine Werte in Bezug auf CR neu bewerten, obwohl ich jünger geworden sein könnte.Für sie würde ich mir vorstellen, dass sie sich beleidigt gefühlt hätten und es einer Kriegserklärung näher kommen würde.Aber ich könnte mir auch vorstellen, all die Jahre später bei einem Drink mit ihnen darüber zu lachen.Schwer zu erzählen.Guter Einblick, danke
Fünf antworten:
Bernhard Barker
2018-03-10 18:48:25 UTC
view on stackexchange narkive permalink

Tun Sie das nicht.

Wenn jemand eine (zeitaufwändige) Änderung (oder viele kleine Änderungen) an etwas Äquivalentem oder Schlimmerem ohne Begründung vorschlägt, sollten Sie dies tun wahrscheinlich zurückschieben, anstatt nur die Änderung vorzunehmen. Die Überprüfung ist kein Einwegprozess (oder sollte es zumindest nicht sein), bei dem Sie einfach alles tun müssen, was der Prüfer ohne Frage sagt, selbst wenn Sie ein gutes Argument dafür haben, dies nicht zu tun. Und wer weiß, vielleicht haben sie ein besseres Argument als Sie denken und die Diskussion über die Änderung führt dazu, dass einer oder beide von Ihnen etwas lernen.

Wenn Sie nicht nur mit ihnen nicht einverstanden sein möchten (oder das nicht Sie können immer den Ansatz "Danke, aber nein danke" ausprobieren:

[Stimmen Sie ihnen zu] Vielleicht haben Sie dort einen guten Punkt. [Problem aufzeigen] Obwohl es so aussieht, als ob es sich um eine ziemlich zeitaufwändige Änderung handeln könnte, möchten wir die Dinge vorerst lieber so lassen, wie sie sind. [Begründen Sie dies Streite nicht mit] , da das, was wir bereits abgeschlossen haben, funktioniert und wir uns auf dringlichere Themen konzentrieren können. [Schluss mit einer hohen Note] Wir werden es uns auf jeden Fall notieren und daran denken!

Natürlich würde dies nicht unbedingt dazu führen

Wenn es sich nur um geringfügige Änderungen handelt , lohnt sich das Zurückschieben möglicherweise nicht, und Sie sollten wahrscheinlich nur die Änderungen vornehmen (es sei denn, Sie erhalten eine ganze Reihe davon bei jeder Überprüfung, und die Zeit, die benötigt wird, um sie zu lösen, summiert sich schnell).

Wenn jemand gezwungen zu sein scheint, für jede Änderung mindestens ein Feedback zu geben (egal wie sinnlos oder schädlich), sollten Sie dies zuerst mit ihm und dann mit dem Management besprechen, da er damit aufhören sollte. Ich habe den Wunsch, Ihre Arbeit sichtbar zu machen (weil eine einfache "alles gute" Bewertung niemandem sagt, ob Sie ein paar Sekunden oder ein paar Stunden damit verbracht haben), aber Sie tun dies, indem Sie regelmäßig subtile aber bemerken Wesentliche Probleme, nicht indem Sie die Zeit aller mit sinnlosem Feedback verschwenden.

Der Schaden bei der "Ententechnik" besteht darin, dass Sie jetzt derjenige sind, der die Zeit anderer verschwendet, was möglich ist Dies hat eine Reihe von Konsequenzen, z. B. dass sie andere wichtigere Probleme in Ihrem Code vermissen, sich Zeit für ihre Arbeit nehmen oder dies herausfinden und zurechtgewiesen werden.

Wenn Sie bereits alle ausprobiert haben Bei dem oben genannten Ad-Nauseam sind Ihnen wahrscheinlich die Optionen ausgegangen, und Sie möchten möglicherweise nur das tun, was für Ihren nicht reparierbaren Überprüfungsprozess funktioniert.

Dies ist die richtige Antwort.So einfach und harmlos diese "Ententechnik" auch erscheinen mag, sie ist letztendlich eine schlechte Form, denn wenn nichts anderes, bleibt das größere Problem von "dieses andere Team verschwendet die Zeit aller mit nutzlosem Feedback" unadressiert.** Verwenden Sie keinen Hack-Fix.Lösen Sie die Grundursache. **
Es mag so scheinen, aber nach den Follow-up-Kommentaren des OP zu urteilen, scheint es nicht hilfreich zu sein, entweder zurückzudrängen oder dem Management Bericht zu erstatten. Das Richtige zu tun kann also mehr Schaden und Zeitverschwendung als Nutzen verursachen.
Das ist richtig.Zurückschieben war für dieses Team im Allgemeinen ein Nullsummenspiel, und sie wurden mit dem Management besprochen und dem Management gemeldet.Der Vorschlag, "mit dem Management zu sprechen und sie ändern oder entlassen zu lassen", kommt immer wieder auf, daher habe ich meine ursprüngliche Frage bearbeitet, um sie detaillierter zu behandeln.Ich hoffe das hilft!
@JoshJohnson bearbeitet.
@Dukeling danke!"[Gründe angeben, mit denen sie nicht streiten können]" ist der Kern des Problems;Ich konnte endlose Gründe finden, warum Code geändert werden muss, wenn ich wollte.Und ich sollte beachten, dass dies eine einmalige Sache war.Es fühlte sich wie eine Macht an, die viel zu groß und schrecklich war, um sie auszuüben.Nachdem ich diese Firma verlassen habe, habe ich niemanden getroffen, der ihnen recht ist.Aber Ihre Antwort hat mir eine großartige neue Perspektive auf die Fallstricke dieser "Technik" gegeben.
Ein weiteres Risiko bei der "Ententechnik" besteht darin, dass absichtlich Fehler / schlechter Code hinzugefügt werden, * um Fehler / schlechten Code hinzuzufügen *.Was passiert, wenn das Bewertungsteam die Ente irgendwie verfehlt?Was ist, wenn Sie vergessen, die Ente zu entfernen, sobald sie übersehen wurde?Jetzt haben Sie Fehler in Ihrem Code, die nicht einmal vorhanden sein sollten.
A. I. Breveleri
2018-03-10 06:33:42 UTC
view on stackexchange narkive permalink

Das einzige Problem ist nicht ethisch, sondern praktisch: Wenn das andere Team jemals in der Lage ist, etwas Nützliches beizutragen, haben Sie die Wahrscheinlichkeit verringert, dass Sie davon erfahren. Andernfalls scheinen Sie völlig berechtigt zu sein, eine Methode zu verwenden, um den Codeüberprüfungsprozess auf Kurs zu halten.

Verfügt dieses Team über eine lange Tradition darin, wertvolle Beiträge zusammen mit seinen Einwänden zu liefern? Ich denke, der Punkt ist, selbst wenn sie es tun könnten, dass es sich nicht lohnt, nützliche Beiträge von ihnen durch Haufen von klebrigem Braun zu pflügen, um an sie heranzukommen.

Als die Codeüberprüfung eintraf, war alles, was vereinbart wurde, vergessen.

Dies lässt mich denken, dass sie reichlich Gelegenheit haben, irgendwelche zu injizieren echte Bedenken in den Entwurfsprozess, weit weg von der Codeüberprüfung. Dies bedeutet auch, dass Sie aufgrund ihres Verhaltens den Codeüberprüfungsprozess manipuliert haben.

Ich sehe in diesem Fall keine ethischen Gründe, Ihre Verwendung der Ententechnik zu tadeln. Im Gegenteil, ich gratuliere Ihnen zur Richtigkeit Ihrer Lösung.

gnasher729
2018-03-10 15:49:54 UTC
view on stackexchange narkive permalink

Es scheint, dass die Art und Weise, wie Ihr Unternehmen Codeüberprüfungen durchführt, und insbesondere die Art und Weise, wie andere Gruppen die Überprüfungen durchführen, eine äußerst lächerliche Zeitverschwendung ist. Lächerlich, nicht lächerlich, weil es so lächerlich ist, dass es sich nicht einmal lohnt, es richtig zu schreiben.

Wenn ich der Manager der beiden Gruppen wäre, wäre ich sehr, sehr wütend, wenn ich herausfinden würde, was los ist. Es ist nichts Falsches an dem, was Sie getan haben, aber Sie sollten es nicht müssen. Ich würde mit Ihrem Manager sprechen und ihm sagen, dass er genau das Gegenteil will, was auch immer Sie tun, und dass dies völlig unnötige Arbeit schafft. Melden Sie die List, die Sie verwendet haben - was auch Zeit verschwendet, nur weniger. Ihr Unternehmen zahlt für alle unnötigen Arbeiten. Sie könnten in dieser Zeit nützliche Dinge tun. Und die andere Gruppe wird herausfinden, was Sie tun, und das wird die Sache noch schlimmer machen.

Ihr Manager muss es wissen und Ihr Manager muss Maßnahmen ergreifen.

Vielen Dank!Und stimmte zu.Dieser Überprüfungsprozess ist nicht optimal, aber nur dieses Team bestand auf diesem Grad an Gatekeeping.Andere Teams waren lockerer und feiner mit allem, solange sie Sichtbarkeit / Einfluss auf die Änderung hatten, es gab Tests und es gab keine offensichtlichen Fehler oder Designprobleme.Ich habe meinen Manager benachrichtigt, der mit seinem Manager und seinem Manager gesprochen hat, und die Dinge würden sich vorübergehend ändern, aber schließlich zurückkehren.
Fattie
2018-03-10 20:28:52 UTC
view on stackexchange narkive permalink

Arbeit ist keine Highschool.

Nehmen wir an, einer Ihrer Kollegen schlägt häufig kleine, nicht hilfreiche Änderungen vor, die sich aus Gründen der Änderungen ändern und den Fortschritt verlangsamen.

Was Sie sagen, ist:

Hmm. Steve, Sie schlagen häufig kleine, nicht hilfreiche Änderungen vor, die Änderungen zum Zwecke der Änderungen sind und den Fortschritt verlangsamen.

Um es zu wiederholen: Arbeit ist keine High School .

Schnallen Sie sich an und erledigen Sie die Arbeit!

Ha du predigst dem Chor.Ich hätte das wahrscheinlich in meine Geschichte aufnehmen sollen, aber das Team war von mir und anderen dem Management gemeldet worden, und ich hatte mich direkt an sie gewandt und etwas Ähnliches gesagt, was Sie vorschlagen (wenn auch netter).Es führte im Allgemeinen zu Defensivität, einem vorübergehenden Aufhören der Nit-Pickyness und einer Umkehrung etwas später, aber jetzt mit angespannten Beziehungen.Ich mochte sie wirklich, aber sie hatten ... seltsame Persönlichkeiten.Am Ende entschied ich, dass ich größere Schlachten zu kämpfen hatte und war bereit, dieses Team als etwas abzuschreiben, mit dem ich kreativ Frieden schließen konnte, wenn sich unsere Wege kreuzten.
heh gut ein @JoshJohnson - total verstanden
`Arbeit ist keine High School` Leider kann es viel mehr wie eine High School sein, als wir möchten.Insbesondere soziale Hierarchien haben echte Macht.Besonders wenn Steve älter ist als Sie, kann es nur zu einem Streit führen, wenn Sie ihm sagen, dass seine Vorschläge nicht hilfreich sind, und / oder wenn er ausführlich darüber spricht, warum Sie falsch liegen und seine Vorschläge wichtig sind, um zu folgen.
hi @jhocking - Ihr Beispiel betrifft jemanden, der Ihnen bei der Arbeit überlegen ist.In dieser Qualitätssicherung geht es um Kollegen.(In Bezug auf * Vorgesetzte * stimme ich Ihnen voll und ganz zu. (1) Machen Sie jederzeit genau das, was sie sagen, ohne Diskussion und mit einer positiven Einstellung oder (2) gründen Sie Ihr eigenes Unternehmen. So ist es. :: /)
HLGEM
2018-03-12 23:10:07 UTC
view on stackexchange narkive permalink

Ich finde Ihre Lösung schrecklich unethisch. Es wird irgendwann zu einem großen Fehler führen, weil Sie das CR-Team mit Ihrer Ente abgelenkt haben. Wenn ich einen Mitarbeiter hätte, von dem ich herausgefunden habe, dass er so etwas tut, wird er so schnell entlassen würde sich drehen.

Nun haben Sie hier eine schlechte Situation. Grundsätzlich könnten Sie genauso gut keine Codeüberprüfung durchführen. Der erste Schritt zur Behebung besteht darin, Standards schriftlich festzulegen, denen alle folgen müssen, und diese dann zu befolgen. Wenn das CR-Team Einwände gegen etwas erhebt, das wie im Standard beschrieben ausgeführt wurde, zeigen Sie auf diesen Standard und fahren Sie fort und ignorieren Sie diese Eingabe. Wenn sie in etwas korrekt sind, fügen Sie dies dem Standard hinzu.

Der nächste Schritt besteht darin, den CR-Prozess besser zu definieren. Was ist angemessen und was müssen Sie ändern? Was müssen Sie einfach kommentieren und ignorieren? Wenn das Team und die CR nicht einverstanden sind, senden Sie das gesamte Durcheinander an das Management, um im Rahmen Ihres schriftlichen Prozesses zu entscheiden. Wenn sie den Schmerz der unnötigen Kommentare und die Zeit, die sie für den Umgang mit ihnen aufwenden müssen, sehen und fühlen, werden sie möglicherweise ernsthafter damit, dieses andere Team in Einklang zu bringen. Je mehr Verwaltungszeit damit verschwendet wird, desto mehr werden sie verstehen. Nehmen Sie sich Zeit, um Ihre Rechtfertigung für das Ignorieren der Änderungsanforderung aufzuschreiben, einschließlich der Tatsache, dass sie das letzte Mal A wollten. Dieses Mal haben Sie ihnen das Muster a gegeben, und jetzt ist das nicht gut genug. Machen Sie sich keine Sorgen über Projektverzögerungen bei diesen Aufzeichnungen. Das Management hat zugestimmt, dass Verzögerungen weniger wichtig sind als die CR zu diesem Zeitpunkt. Sie möchten ihnen anhand ihrer eigenen Erfahrung zeigen, wie sie mit den CR-Änderungen umgehen müssen, warum dies die falsche Wahl war. Denken Sie daran, dass das Problem hier nicht das andere Team ist, das die CR durchführt. Dann ist das Problem inkompetentes Management. Ihre beste Wahl ist es, dies für das Management so schmerzhaft zu machen, dass sie sich endlich von ihren Hintern lösen und etwas dagegen unternehmen.

Können Sie als Nächstes Möglichkeiten finden, andere Personen für die CR zu beauftragen? Dies löst das Problem vollständig.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...