Ich bin der Manager eines kleinen Teams von Entwicklern (5 Ingenieure, mich eingeschlossen).
Vor einigen Monaten haben wir auf Anregung eines anderen Kollegen für unser Hauptprojekt eine obligatorische Codeformatierung in die Codebasis eingeführt. Unser Projekt ist in Python und das Formatierungstool ist black
(nicht relevant, denke ich).
Ich finde es wertvoll, dass der Code in allen Projektdateien das gleiche „Aussehen“ hat, für mich ist es Teil der Qualitätssicherung für das gesamte Projekt. Code-Merge-Anfragen müssen mit dem Tool formatiert werden, sonst können sie nicht zur Software hinzugefügt werden.
Seitdem beschwert sich immer wieder ein Kollege und widerspricht dieser Entscheidung, wann immer sich die Gelegenheit ergibt.
Wie würden Sie mit einer solchen Situation umgehen?
Was würden Sie antworten auf "Codeformatierung ist totaler Mist" , "es ist wie Farben, manche Leute mögen es rot, andere blau, das ist es" , "es reduziert meine Freiheit" , "es macht Code komplizierter zu lesen ohne Mehrwert" usw. ?
Meine Reaktion wäre ehrlich gesagt folgende:
Bob, ich weiß das Feedback zu schätzen, aber als Team haben wir entschieden, dass wir Black als unser obligatorisches Codeformatierungstool verwenden, und diese Entscheidung ist endgültig. Ich verstehe, dass es nicht Ihre persönliche Präferenz ist, aber ich fürchte, dass Sie lernen müssen, damit umzugehen.
Aber wenn ich mich auf eine Diskussion einlassen wollte?
"Codeformatierung ist totaler Bullshit"
Das ist kein sehr konstruktives Feedback, könnten Sie das konkretisieren?
"Es ist wie Farben, manche Leute mögen es rot, andere blau, das ist es"
Natürlich, aber die Standardisierung dieser „Farben“ ist sehr hilfreich, und wir mussten uns für eine entscheiden!
"Es reduziert meine Freiheit"
Das gilt auch für die Zustimmung, Code in derselben Sprache und Version dieser Sprache zu schreiben, aber können Sie sich das Chaos vorstellen, wenn wir es nicht tun würden?
"Es macht Code komplizierter zu lesen ohne Mehrwert"
Das ist nicht wahr. Wenn Sie Code in diesem Format nach einer Weile lesen, wird es überhaupt nicht komplizierter zu lesen sein - tatsächlich wird es einfacher zu lesen sein (Mehrwert dort), weil Sie nur einen Stil für das gesamte Projekt lernen müssen. Das bedeutet dann auch, dass Diffs für PRs viel besser lesbar sind, wir können andere Entwickler einbinden und sie schneller auf den neuesten Stand bringen, und Entwickler werden sich nicht darüber aufregen, welche Art von Formatierung in einer bestimmten Situation etwas hübscher aussehen könnte.
Um es klar zu sagen, wenn sein Feedback konstruktiv war - sagen Sie über das Format "Ich glaube nicht, dass Schwarz für uns aus x-, y- und z-Gründen hilfreich ist, da ein Großteil unseres Codes einem bc-Codierungsstil folgt, mit dem Schwarz schlecht umgeht, haben Sie stattdessen (ein anderes Tool) in Betracht gezogen", dann ist das ein ganz anderes Szenario. Dann sollten Sie sich bemühen, sich an einer Diskussion zu beteiligen, um seine Bedenken zu bestätigen, und mit ihm zusammenarbeiten, um sie anzusprechen.
but I'm afraid that if you want to stay in this team
In meinem Kopf denke ich das vielleicht, aber ich würde es definitiv nicht so sagen, zumindest am Anfang. Dieser Typ scheint jemand zu sein, der schnell eskalieren könnte, und diese Formulierung wird ihn wahrscheinlich schneller eskalieren lassen. Ich würde eher so etwas verwenden wie: „Ich verstehe, dass es nicht Ihre persönliche Präferenz ist, aber ich musste eine Entscheidung für das Team treffen, und das ist es.“ Ich denke, das übergeordnete Ziel ist es, allen dabei zu helfen, die Vorteile zu verstehen und sich der Gemeinschaft anzuschließen. Wenn er weiter rebelliert, dann drehen Sie die Sprache auf.but as a team we've decided that we're using Black as our mandatory code formatting tool
, das OP hat nie gesagt, dass dies eine Teamentscheidung war.Wie würden Sie mit einer solchen Situation umgehen?
Nachdem Sie ihn nett getröstet haben, was Sie bereits getan haben, ist es an der Zeit, ihm nachdrücklich zu sagen, dass er sich darum kümmern soll . Es ist nicht der Kodex einer Person, sondern der des Unternehmens. Als Manager müssen Sie den Code so gut wie möglich von Ihrem Team wartbar machen und neue Ergänzungen, die Sie dem Team in der Zukunft hinzufügen.
"Code-Formatierung ist total b***$hit"
Da ich selbst Programmierer bin, werden in den Unternehmen, zu denen ich beigetragen habe, einige Formatierungsstandards durchgesetzt. Als leitender Entwickler würde ich eigentlich erwarten, dass sie ein Fan sind.
"Es ist wie Farben, manche Leute mögen es rot, andere blau, das ist es"
Als Ihr Manager mag ich Rot, kommen Sie damit klar.
"Es reduziert meine Freiheit"
Die Codeformatierung beeinträchtigt nicht die Freiheit, eine elegante Lösung zu erstellen. Ich rufe BS an, und Sie sollten es auch tun.
"Es macht Code komplizierter zu lesen ohne Mehrwert"
Ähm nein. Da frage ich mich tatsächlich, ob Ihr Hauptentwickler überhaupt ein Hauptentwickler ist....
Um es noch einmal zu wiederholen – Sie haben einen Standard gesetzt, als Manager oder als Team spielt es keine Rolle. Der Lead muss sich darauf einlassen oder vielleicht weiterziehen .
Ich würde versuchen, ihn von den positiven Effekten einer einheitlichen Codeformatierung zu überzeugen. Git-Diffs werden viel einfacher zu verdauen, wenn Commit n und Commit n+1 die gleiche Formatierung haben. Die Wartbarkeit wird einfacher, vorausgesetzt, der Formatierer setzt bewährte Verfahren durch. Letztlich ist die Entwicklung von Unternehmenssoftware ein Mannschaftssport.
Wenn Ihr Code-Formatierer das Definieren von Regeln erlaubt, fragen Sie ihn, ob es bestimmte Regeln gibt, die er nicht mag, und erwägen Sie, diese mit Ihrem Team zu besprechen.
Wie würden Sie mit einer solchen Situation umgehen?
Ich würde versuchen, den widerspenstigen Entwicklerstandpunkt zu verstehen. Sie haben vielleicht gute Punkte zu machen, die ich ignoriere.
Wir haben die automatische Formatierung vor einigen Jahren in unserer Codebasis implementiert und sie verursachte unzählige Probleme, teilweise aufgrund der Art und Weise, wie sie eingeführt wurde, aber hauptsächlich aufgrund der Art und Weise, wie sie unseren Workflow beeinflusste. Es verursachte so viel zusätzliche Arbeit beim Beheben von Zusammenführungskonflikten, dass wir am Ende viele Aspekte der automatischen Formatierung abschalteten, sodass nur Dinge automatisch korrigiert wurden, die nicht mehr Probleme verursachten, als sie lösten. Wir sind auch alle Einstellungen durchgegangen und haben nur diejenigen aufgenommen, denen alle zugestimmt haben.
Ein Problem bei der automatischen Formatierung besteht nicht nur darin, dass sie schlechte Formatierung „wegstandardisiert“, sondern auch gute Formatierung „wegstandardisiert“.
Ein automatischer Formatierer kann den Unterschied zwischen einem versehentlich hinzugefügten doppelten Leerzeichen und einem doppelten Leerzeichen, das hinzugefügt wurde, um ein Element in einer Zeile an einem Element einer anderen Zeile auszurichten, nicht erkennen. Diese visuelle Assoziation kann das Lesen des Codes viel einfacher machen, da es viel offensichtlicher sein kann, dass zwei Dinge in zwei Zeilen zusammenhängen.
Wenn Sie die automatische Formatierung implementieren möchten, müssen Sie das gesamte Team unterstützen.
Sie müssen die Formatierung global in einem Zweig anwenden und erst dann in diesem Zweig zusammenführen, wenn alle die Möglichkeit hatten, die Auswirkungen auf ihren Arbeitsablauf zu überprüfen, ihre Einwände zu erheben und sich auf eine Vorgehensweise zu einigen.
Die meisten Leute würden sich darauf verlassen, Leerzeichen automatisch von den Zeilenenden zu entfernen, nur wenige Leute würden wollen, dass ihre sorgfältigen manuellen Zeilentrennungen für die Lesbarkeit gedankenlos in das inkohärente Durcheinander aufgeteilt werden, das viele automatische Formatierungswerkzeuge erzeugen.
Mein Verdacht ist, dass dieser Entwickler verärgert ist, weil er stolz auf seine Arbeit ist, viel Zeit damit verbracht hat, seinen Code so lesbar und wartbar wie möglich zu machen, und diese automatische Neuformatierung alle seine sorgfältig ausgearbeiteten Formatierungen zerstört hat.
Auch wenn die Syntax von Python bereits einige Anforderungen an die Formatierung stellt, lässt sie dennoch viel Spielraum für den einzelnen Entwickler.
Zusamenfassend. Hören Sie auf die Einwände Ihrer Entwickler, vielleicht können Sie die Codebasis für alle verbessern. Wie PEP 8 – der Styleguide für Python-Code sagt
A Foolish Consistency ist der Hobgoblin der Kleingeister
Es steht aus gutem Grund ganz oben im Leitfaden .
In Anbetracht von jrhs Kommentar werden gelegentlich Leute ausgelacht, die das Programmieren als „mehr eine Kunst als eine Wissenschaft“ bezeichnen, aber ich bin anderer Meinung, wenn es um die Soft-Skill-Aspekte des Programmierens geht. Programme sprechen nicht nur mit dem Compiler/Interpreter, sie sprechen mit Programmierern, die diesen Code möglicherweise in Zukunft reparieren, verbessern oder warten müssen.
Um auf den Kommentar von VGR einzugehen : Ich glaube nicht, dass dies ein guter Ort ist, um Schwarz zu kritisieren . Ich habe dieses Tool nicht verwendet, aber beim Durchlesen der Beschreibung kann ich dort hauptsächlich gute Dinge sehen, insbesondere für die langfristige Wartung und Diffability (der Fluch komplexer Zusammenführungen).
Das hilft jedoch nicht, wenn das gesamte Team nicht auf eine so strenge und kompromisslose automatische Formatierung eingeht.
Wenn ich eine Bäckerei besäße, möchte ich vielleicht, dass meine Bäcker Brote in Standardgröße verwenden. Es erleichtert zum Beispiel den Kauf von Tüten für das Brot. Ich kann einen konstanten Preis für die Brote haben, die ich mache.
Meine Bäcker könnten das Gefühl haben, dass dies ihre Kreativität einschränkt. Einige möchten vielleicht sehr kleine oder sehr große Brotlaibe backen.
Andere Bäcker haben vielleicht das Gefühl, dass sie ein viel größeres Brot bevorzugen.
Das bedeutet nicht, dass es keine triftigen Gründe gibt, einen Standard zu setzen.
Einige Bäcker möchten jedoch darauf hinweisen, dass die von mir gewünschte Laibgröße nicht in den Ofen passt. Ich wäre ein sehr vernünftiger Bäckereibesitzer, wenn ich auf diese Bäcker hören würde.
Ihr Teammitglied hält sich bereits an eine Vielzahl von Standards, die seine Kreativität einschränken und seinen Vorlieben widersprechen können. Dazu gehört die Arbeit im Team. Das bedeutet nicht, dass Sie keine Standards setzen sollten, aber es ist wahrscheinlich ratsam, konstruktives, nicht störendes Feedback zuzulassen und zu fördern.
"Codeformatierung ist totaler Bullshit"
Auch wenn dies einen Sinn hatte (und das nicht tut), deuten Schwarz-Weiß-Aussagen wie diese oft auf ein sehr unreifes Verständnis von:
Wir brauchen professionelle und konstruktive Meinungen, keine fanatischen Axiome.
"Es ist wie Farben, manche Leute mögen es rot, andere blau, das ist es" / "es reduziert meine Freiheit"
Nein, es ist nicht wie Farben. Es geht um Lesbarkeit und um gemeinsame Standards .
Leute, die diese Beschwerde machen, gehen auf den egoistischen Weg und erkennen nicht den Mehrwert gemeinsamer Standards im Umgang mit Code und vor allem, den Code anderer Leute zu verstehen und sie dazu zu bringen, Ihren eigenen zu verstehen.
Die Tatsache, dass jeder seine eigenen Vorlieben hat, ist im Gegenteil genau der Grund, warum Sie Codierungsstandards haben sollten, von Kommentaren über Benennung bis hin zur Formatierung.
Das Opfern Ihrer "persönlichen Vorlieben" muss oft für ein größeres Wohl getan werden, gute Teamarbeit dreht sich alles um Kompromisse für das beste Ergebnis.
Stellen Sie sich vor, wenn:
Es wird verwirrend und ermüdend, weil sich Ihr Gehirn an verschiedene Stile anpassen und ständig zwischen ihnen wechseln muss . Mit einem gemeinsamen Standard müssen Sie sich nur einmal anpassen . In gemeinsam genutzten Projekten setzen Sie aus sehr guten Gründen Standards durch, auch wenn es sich um Open Source-Projekte handelt .
Und was ist, wenn sie dieselbe Datei/Klasse bearbeiten? Wird es mit unterschiedlichen Codierungsstilen enden?
"Es macht Code komplizierter zu lesen ohne Mehrwert"
Ich denke, das, was ich oben gesagt habe, genügt als Antwort auf diesen völligen Unsinn.
Bearbeiten: Bitte schauen Sie sich auch die Antwort von @nitarshs an , sie gibt einen weiteren interessanten Blickwinkel aus gruppenpsychologischer Sicht, den ich interessant fand.
Vielleicht hängt die Ursache des Problems nicht mit der Code-Formatierung zusammen, sondern mit etwas anderem ?
Meiner Erfahrung nach zeigt diese Situation deutlich, dass sich die abweichende Person nicht auf eine reife und rationale Weise ausgedrückt hat, unabhängig davon, ob sie richtig oder falsch liegt.
Ich bin mir nicht sicher, wie lange die betreffende Person schon bei Ihnen und dem Team ist, aber ich denke wirklich, dass Sie die Disposition der Person besser kennen sollten, um zu wissen, wie man mit solchen Situationen umgeht
Mir ist aufgefallen, dass sich auch rationale Menschen irrational verhalten, wenn sie sich über etwas nicht freuen. Sogar sie könnten sich der wahren Ursache ihrer Irritationen nicht bewusst sein.
Oder es ist einfach möglich, dass die Person von Natur aus unreif ist, in diesem Fall können Sie sie dann ignorieren, solange sie ihren Teil der Arbeit richtig macht.
Nehmen Sie sie vielleicht zu einem Drink/Abendessen mit und geben Sie ihnen etwas Pflege und Aufmerksamkeit. Du solltest dich ihnen öffnen und sie sich dir öffnen lassen. Versuchen Sie, Ihre Teamkollegen besser kennenzulernen, und lassen Sie sie Sie und den Rest des Teams besser kennen.
Hier geht es überhaupt nicht um Codeformatierung. Es ist die denkbar schlechteste Form von Mikromanagement. Immer wenn ein Commit durchgeführt wird, ändert ein dummer, geistloser Mikromanager den Code auf eine dumme Mikromanagement-Weise. Und dieser Entwickler ist sauer. (Es scheint, dass einige Leute das nicht verstanden haben - wenn ich "Mikromanager" sage, spreche ich über das Codeformatierungstool).
Ihr Gewinn und der Gewinn Ihrer Teams aus all dem ist nicht von Null zu unterscheiden. Ihr Verlust ist, dass Sie sich gestritten, Ihre Zeit verschwendet und jemanden verärgert haben, der bisher ein anständiger Entwickler war. Im besten Fall verlieren Sie seine Unterstützung und sein Engagement. Im schlimmsten Fall verlieren Sie ein wertvolles Teammitglied komplett.
Einfach das Tool ausschalten und fertig. Es hat und wird mehr Schaden anrichten, als es wert ist. Entscheiden Sie einfach: Wollen Sie zeigen, dass Sie die größten xxxx haben, um herumzuwinken, oder wollen Sie ein Team, das glücklich ist und seine Arbeit erledigt?
Hier geht es nicht um Codeformatierung. Es geht darum, ein guter und effektiver Manager zu sein und eine Entscheidung durchzusetzen, die Sie bezüglich der Arbeitsweise des Teams getroffen haben – was, wie Sie gesagt haben, berücksichtigt wird und dem Team insgesamt zugute kommen dürfte.
Ich denke, das Problem lässt sich am besten veranschaulichen, indem die Einzelheiten aus Ihrer Frage entfernt werden:
Ich bin der Manager eines kleinen Teams von Entwicklern
-- Ich habe eine Entscheidung über ein Detail unserer Arbeitsweise getroffen --
Seitdem beschwert sich immer wieder ein Kollege und widerspricht dieser Entscheidung
Es ist ein Menschenproblem – der schwierige Teil des Managerdaseins. Es ist verlockend zu versuchen, den Inhalt der Beschwerden anzusprechen, weil sie vertrautes, angenehmes Gebiet sind und einigermaßen objektiv argumentiert werden können.
Aber widerstehen Sie dieser Versuchung, denn was Sie wirklich tun müssen, ist, diesem Teammitglied direkt und unmissverständlich zu sagen, dass es die Entscheidung akzeptieren und aufhören muss, darüber zu diskutieren.
Es ist persönlich, es ist unbequem, aber es gehört zum Job und ist das, was der Rest des Teams will und von Ihnen erwartet, das kann ich Ihnen versichern.
Vor einigen Monaten haben wir auf Anregung eines anderen Kollegen eine obligatorische Codeformatierung in die Codebasis eingeführt
Seitdem beschwert sich immer wieder ein Kollege und widerspricht dieser Entscheidung
Das Kernproblem liegt nicht in der Entscheidung an sich, sondern darin, dass die Meinung dieses Kollegen bei einer Entscheidung, die ihn stark betrifft, nicht berücksichtigt wurde. Wurde dies richtig besprochen, mit allen Vor- und Nachteilen sorgfältig abgewogen (das gilt auch für den automatischen Teil der Vollstreckung), oder haben Sie sich einfach einseitig entschieden, „weil es mir persönlich gefällt“? Die Praxis zeigt, dass eine Person eine Gruppenentscheidung sehr viel eher verteidigt, wenn sie das Gefühl hat, dass ihre Meinung gehört und berücksichtigt wurde, auch wenn sie es am Ende nicht zur Entscheidung geschafft hat.
Realistischerweise verlassen Menschen Teams. Die Verwendung solcher Styler erleichtert es einer anderen Person, das Projekt in Zukunft aufzunehmen und den tatsächlichen Inhalt zu verstehen, anstatt die Redezeit zu verstehen, um die Formatierung zu verstehen.
Versuchen Sie, mit einer positiven Antwort darauf zu reagieren, dass Sie sie verwenden. Zum Beispiel „Code-Formatierer sind bs“, „Nun, es kann einfacher sein, einfache Fehler im Code zu finden, wenn Sie wissen, wie er aussehen sollte“ usw. Noch besser, wenn sie direkt für Ihr Projekt/Team relevant sein können.
Wenn es mehr als ein Teammitglied wäre, hätte ich vorgeschlagen, ein Meeting abzuhalten, in dem erklärt wird, warum dieses Formatierungstool verwendet wird, welchen Nutzen es bringt und warum es so wichtig ist, dass Ihre Entwickler es verwenden. Menschen mögen keine Veränderung, wenn sie die Gründe dafür nicht verstehen.
Weit entfernt von einer vollständigen Antwort, aber es gibt hier einen Punkt, der mir auffällt. Die Codeformatierung in Ihren Commits muss in keiner Weise die gleiche Codeformatierung sein, die in der IDE eines Entwicklers verwendet wird, während sie an einer lokalen Kopie des Repositorys arbeiten. Ich weiß nicht, ob ich jemals an einem Gemeinschaftsprojekt gearbeitet habe, bei dem nicht jeder Entwickler seinen Code so formatiert hatte, wie er es wollte. Das Anwenden der Formatierung beim Festschreiben ist einfach genug, um über Git-Hooks eingerichtet zu werden .
Ich finde einen großen Unterschied zwischen dem Beharren auf gut formatiertem Code und einem Auto-Formatierer, der beim Einchecken auferlegt wird.
Bei meiner Arbeit haben wir eine Art Code-Formatierungs-Mandat, das in die IDE geladen wird, aber wenn es wirklich schlecht läuft, können wir wirklich etwas dagegen tun, weil nichts versuchen wird, es zum Commit-Zeitpunkt erneut anzuwenden .
Ich bin bereit zu glauben, dass Sie ein echtes Problem damit haben, dass ein leitender Entwickler Dinge absichtlich so macht, dass sie schwerer zu verstehen sind, aber es ist durchaus möglich, dass der Autoformatierer hier handformatierte Blöcke durcheinander bringt, wo die Die Sprache wurde in etwas anderes verbogen und benötigt daher ein anderes Format, das der Struktur entspricht, die sie tatsächlich hat, und nicht dem, was der Parser glaubt.
Diese Fälle sind von Ihrem Beitrag nicht zu unterscheiden. Je nachdem, was vor sich geht, können Sie möglicherweise mit Ihren anderen Entwicklern sprechen und herausfinden, um welche es sich handelt. Hüten Sie sich jedoch vor der Einstellung "Ich glaube, es ist besser, weil der Chef es tut"; es wird nicht zu dir gesprochen, aber ich habe es schon früher so fallen sehen.
Es ist tatsächlich möglich, dass jeder ein Problem damit hat, und sie alle lassen diesen Typen zum Sprecher werden. Vielleicht kannst du es herausfinden.
Aber wenn Sie nach Ihrer Sorgfaltspflicht feststellen, dass er auf einem Machttrip ist, ist es an der Zeit, ihn loszuwerden.
Sie führen ein offenes Gespräch darüber, was das Wort „Professionalität“ bedeutet.
Ihr "Hauptentwickler" benimmt sich wie ein schmollendes Kind. Er/sie mag über die technischen Fähigkeiten eines Leads verfügen, ihm fehlen jedoch offensichtlich die beruflichen Fähigkeiten eines Leads. Es geht um mehr als nur das Schreiben von Code: Technische Fähigkeiten sind eine notwendige , aber nicht hinreichende Voraussetzung für diese Position. Ein Lead zu sein bedeutet, zumindest für mich, zu verstehen, dass es nicht um Sie geht . Das bedeutet nicht , dass Sie nicht verhandeln und sich für sich selbst einsetzen, es bedeutet , dass Sie sich nicht über Dinge ärgern, die Best Practices der Branche sind, selbst wenn Sie sie privat für Bullshit halten (Sieh dich an, JIRA ).
Ich würde damit beginnen, dass er/sie diplomatisch darüber hinwegkommen muss, dann dazu übergehen, es undiplomatisch zu sagen, und dann zu einem PIP übergehen. Sie haben bereits zu viel Ihrer wertvollen Zeit mit dem Wutanfall eines anderen verschwendet.
Ein Kommentator weist zu Recht darauf hin, dass die Autorität des technischen Leiters möglicherweise auf unfaire Weise untergraben wurde, was zu Verstimmungen geführt hat. Obwohl ich sicherlich zustimme, dass dies der Fall sein könnte, ist es eine unprofessionelle und inakzeptable Reaktion auf die Situation, in der Öffentlichkeit über das Tool zu meckern . Unterminiert zu werden sollte direkt und privat angesprochen werden .
Letztendlich haben Sie als Manager, wie andere Antworten gesagt haben, die Befugnis, einfach einen Codestil durchzusetzen, und wenn es jemandem nicht gefällt, kann er kündigen. Dies ist jedoch wahrscheinlich nicht gut für die Moral oder das Engagement, und ein Mitarbeiter, der seinen runden Code widerwillig in einen quadratischen Stil zwingt, ist wahrscheinlich nicht glücklich oder produktiv.
Zu diesem Zweck wäre Ihre beste Vorgehensweise wahrscheinlich, sie davon zu überzeugen, dass ein konsistenter Stil in einer Codebasis von Vorteil ist. Einige Antworten haben bereits einige Punkte präsentiert, aber es gibt Artikel und sogar ganze Bücher, die dafür sprechen. Sie haben Recht, dass es wie bei Farben ist – jeder hat einen Favoriten, aber wenn jeder UI-Entwickler, der an einem Projekt arbeitet, einfach seine Lieblingsfarbe für das Design auswählt, würde das Endprodukt überhaupt nicht gut aussehen.
Ein paar gute Artikel, die ich gerade mit einer schnellen Suche gefunden habe:
Ich gehe davon aus, dass Ihre Darstellungen der Kommentare Ihres leitenden Entwicklers korrekt sind.
Dies sind nicht die Kommentare eines kompetenten Hauptentwicklers. Das sage ich als erfahrener Software- und Manager von Software-Ingenieuren.
Das Feedback ist unkonstruktiv und höchst ungenau. Ein leitender Entwickler, der den Wert von Formatierungsstandards nicht versteht, ist ein leitender Entwickler, der die Dynamik von Collaborative Engineering nicht versteht.
Es ist durchaus möglich, dass sie berechtigte und umsetzbare Bedenken haben, und ich würde von dieser Perspektive ausgehen. Sie sind ihr Manager; ihnen helfen, ihre Arbeit gut zu machen.
Rufen Sie sie zuerst privat wegen ihres beschissenen Feedbacks an Sie an. Sie machen ihre Arbeit schlecht, wenn sie nur kvetchen.
Zeigen Sie als Nächstes, dass Sie offen für umsetzbares Feedback sind, wie Sie die Implementierung von Codierungsstandards verbessern können, falls Ihr Entwickler welche hat. Wenn sie Zeit brauchen, um herauszufinden, wie sie das am besten artikulieren können, geben Sie ihnen Zeit.
Wenn sie nichts Bestimmtes haben, dann sagen Sie ihnen, sie sollen mit dem Programm anfangen und aufhören zu meckern. Es ist nicht nur unproduktiv. Das schadet dem Team.
Sie sollten auch anfangen, auf ihre Leistung als Führungskraft im Team im Allgemeinen zu achten. Führen sie die anderen Teammitglieder tatsächlich an oder sind sie einfach die Person, die schon am längsten dabei ist? Solche Leute können die Produktivität eines Teams wirklich untergraben, wenn sie nur als Torwächter zum Wachstum fungieren (was diese Person gerade tut).
Aus pragmatischer Sicht liebe ich die Codeformatierung, einfach weil sie den Vergleich von Code so viel einfacher macht. Es wird auch Pushs viel einfacher machen, denn wenn jeder denselben Code-Formatierer verwendet, führt das Hinzufügen einer dummen, belanglosen Änderung zu einer Datei im Prinzip nicht dazu, dass Git denkt, dass sich der Code geändert hat.
Persönlich bin ich nicht verrückt nach dem Aussehen des Codes, aber die oben beschriebenen Vorteile helfen mir mehr als, darüber hinwegzusehen.
Viele andere Antworten diskutieren, ob sich die Codeformatierung lohnt oder nicht. Das ist für diese Frage völlig irrelevant.
Hier geht es um Kommunikation, nicht darum, ihn davon zu überzeugen, dass standardisierte Codeformatierung großartig ist. Geh einen Schritt zurück. Was Sie kommunizieren müssen, ist:
Diese zusätzlichen Informationen ermöglichen es ihnen, die Dinge aus Ihrer Sicht zu sehen, was oft ausreicht, um sie zu beruhigen. Der zweite Teil (Erfolgsmessung) ist notwendig, um zu zeigen, dass Sie sich wirklich Gedanken gemacht haben, und erleichtert es ihnen, Ihnen zu vertrauen. Es ermöglicht ihnen auch, Alternativen oder Änderungen an der Richtlinie zu finden, die Ihre und ihre Anforderungen erfüllen.
Wenn dies fehlschlägt, gibt es zwei Hauptmöglichkeiten, um mit Mitarbeitern umzugehen, die mit einer Richtlinienänderung nicht einverstanden sind:
*Hier geht es nicht um eine Aufzählung von Vorteilen, sondern um Ihre Motivation, die Veränderung umzusetzen. Vielleicht möchten Sie das Team stärken, und deshalb haben Sie das Team über Codestandards und Formatierung entscheiden lassen. Vielleicht haben Sie gerade einen Vorschlag von oben umgesetzt. Vielleicht planen Sie später mehrere Automatisierungs- und/oder Analyseänderungen, die von einer standardisierten Formatierung profitieren. Vielleicht möchten Sie eine standardisierte Formatierung verwenden, um Ihr Team besser an die höheren Stellen zu verkaufen. Vielleicht haben Sie die standardisierte Formatierung vorangetrieben, einfach weil Sie sie mögen.
Codeformatierung ist totaler Blödsinn
Dies kann leicht widerlegt werden, indem Sie einen Beispielcode nehmen (der dem Entwickler unbekannt ist), alle Zeilenumbrüche und Tabulatoren entfernen und mehrere Leerzeichen auf einzelne Leerzeichen reduzieren und den Mitarbeiter bitten, Ihnen zu sagen, was der Code bewirkt.
Es ist wie mit Farben, manche Leute mögen es rot, andere blau, das war's
Ja. Dies ist bei so ziemlich jedem Programmierstreit der Fall. Tabulatoren vs. Leerzeichen, C-Klammern oder ägyptische Klammern, ... Aber die Antwort ist immer die gleiche: Die einen fahren gerne links, die anderen gerne rechts. Beides ist in Ordnung, aber beides gleichzeitig zuzulassen führt zum Wahnsinn.
Oder, wenn Sie seine Analogie wirklich gegen ihn verwenden wollen: Aber die Verwendung von Blau und Rot zusammen ergibt Lila, was bedeutet, dass niemand bekommt, was er will.
Es wurde eine Exekutiventscheidung getroffen, dieses Format auszuwählen. Ihr Mitarbeiter ist nicht befugt, diese Diskussion außer Kraft zu setzen. Ende der Geschichte. Ich würde diese Fragestellung nicht weiter verschweigen.
Ich bin immer offen für konstruktives Feedback, aber das Argument Ihres Mitarbeiters ist hartnäckig, es ist nicht konstruktiv. Lass sie es nicht zu einem Wettbewerb machen, der sturste zu sein. Selbst wenn Sie gewinnen, signalisieren Sie Ihren Mitarbeitern, dass Sturheit ein akzeptables Mittel ist, um Meinungsverschiedenheiten auszudrücken.
Das bedeutet nicht, dass Sie ihm nicht helfen können, wenn es nur eine Frage der Unerfahrenheit ist. Vielleicht finden Sie einen automatischen Formatierer, damit er sein eigenes Format eingeben und konvertieren kann.
Ich habe den Leuten, die ich leite, gesagt, dass ich mich nicht um die Lesbarkeit ihres Codes kümmere, bevor sie ihn einchecken. Ich erwarte nicht, dass sie den Styleguide in jeder Sekunde vollständig einhalten. Solange der Code bereinigt wird, bevor er in den Zweig gemergt wird, ist das akzeptabel. Ich beginne oft mit schnellem und schmutzigem Code und bereinige ihn erst, wenn ich ihn zum Laufen gebracht habe. Manche Leute arbeiten so, und das ist in Ordnung, solange sie am Ende nicht die erforderliche Bereinigung überspringen.
es reduziert meine Freiheit
Niemand hat die Freiheit zu tun, was er will. Die Bezahlung der Mitarbeiter schränkt auch die Freiheit des Unternehmens ein.
Der Aufwand, der erforderlich ist, um den Code von Anfang an zu formatieren, zahlt sich aus, wenn jemand anderes seinen Code lesen muss.
Angesichts der Bemerkungen dieses Mitarbeiters vermute ich, dass er sich wahrscheinlich über die Codeformatierung oder Namenskonventionen anderer Leute beschwert hat. Weisen Sie darauf hin, dass andere über seine Formatierung und Benennung genauso denken werden. Einheitlichkeit bedeutet, dass jeder den Code aller lesen kann, unabhängig davon, ob es die persönlichen Vorlieben aller sind.
es macht Code komplizierter zu lesen ohne Mehrwert
Es ist jetzt schwieriger für ihn zu lesen, weil er es nicht gewohnt ist. Je mehr er sich der Veränderung widersetzt, desto länger wird er damit kämpfen. Die Entscheidung ist gefallen, es passiert, Ende der Geschichte.
Ich würde mich auf den Punkt konzentrieren, dass der Mitarbeiter über das neue Format informiert wurde und nun erwartet wird, dass es sich daran hält. Wenn sie sich nicht daran halten (oder sich nicht ernsthaft anstrengen), fallen alle Verzögerungen, die durch die Ablehnung ihrer Pull-Requests verursacht werden, direkt auf ihre Schultern.
Code-Merge-Anfragen müssen mit dem Tool formatiert werden, sonst können sie nicht zur Software hinzugefügt werden.
Wenn Sie „kann nicht“ sagen, meinen Sie damit, dass es nicht erlaubt oder nicht möglich ist (z. B. wird ein Prüfer die Anfrage immer ablehnen)?
Wenn es letzteres ist, ist das der Stick, den Sie brauchen. Wenn der Entwickler die Formatierungsregeln nicht befolgt, werden seine Anfragen nicht akzeptiert und alle daraus resultierenden Verzögerungen gehen zu seinen Lasten, was zu einer schlechten Leistungsbewertung führt.
Wenn es ersteres ist, dann verlassen Sie sich wirklich darauf, dass jeder freiwillig an dem System teilnimmt, das nur funktioniert, wenn alle dies tun. Sie haben es gerade mit jemandem zu tun, der ausharrt. Es ist möglich, dass er gezielt ausharrt, weil er weiß, dass Sie es nicht erzwingen, sondern nur fragen.
Sie sind ein Manager, also versuchen wir, ihn zu managen (und das), schimpfen Sie ihn nicht einfach ab oder sehen Sie ihn als Problem an:
„John, meine Verantwortung besteht darin, dies für alle so einfach wie möglich zu machen, und für zukünftige Mitarbeiter, nicht nur für einige der Menschen hier heute.“
„Wenn sich die meisten Entwickler den Code ansehen, ist es schneller, wenn sie einige Dinge als selbstverständlich ansehen können, wie zum Beispiel die Art und Weise, wie der Code erstellt wird, und die Art und Weise, wie einige Dinge standardisiert werden. Wenn es jemals notwendig ist, dass jemand den Code [ External Code-Audit? Haftung? Due Diligence?] , es ist besser, wenn es standardisiert ist. Sie haben Recht, einige mögen Blau und andere mögen Rot, und außerhalb der Arbeit können Sie und ich beide so programmieren, wie wir wollen. Aber während wir' Um Code zu schreiben, den ein Team warten muss und zukünftige Ingenieure schnell und genau verstehen müssen, bin ich überzeugt, dass Standardisierung helfen wird, und ich leite das Team – nicht Sie, nicht Bob, nicht Alice, also muss ich machen diese Art von Anrufen, wenn ich das Bedürfnis verspüre - und das tue ich."
„Wenn Sie in Zukunft solche Projekte leiten, können Sie den Anruf tätigen, den Sie möchten, und erwarten, dass andere Ihren Anweisungen folgen. Aber ich hoffe, wenn Sie das tun – und Sie sind gut, also werden Sie es wahrscheinlich tun [ein Kompliment schadet nie, wenn es ist wahr, wenn nicht weggelassen] - dass Sie es sich noch einmal überlegen und die Vorteile sehen werden, die es bringt, auch wenn es eine Disziplin auferlegt, in der Sie im Moment keinen Sinn sehen.
„Ich glaube, es wird bei der täglichen Arbeit ein wenig Zeit sparen, wenn der Code neu erstellt wird, ich glaube, es wird Fehler reduzieren, und ich glaube, es ist professionell. Ich möchte, dass Sie das respektieren, auch wenn Sie damit nicht einverstanden sind Es."
Whitespace ist eigentlich Teil der python
Syntax. Die Lesbarkeit ist bereits in der Sprache gestaltet. Tatsächlich hat Python eigene Empfehlungen zum Formatieren Ihres Codes. Best Practices, Namenskonventionen usw. es heißt PEP (genauer gesagt PEP8). Beginnen Sie dort! PEP zu kennen, ist etwas, das sie ihrem Lebenslauf hinzufügen können!
Wie würden Sie mit einer solchen Situation umgehen?
Ich denke, die vier anderen Entwickler stehen mit diesem Argument auf der richtigen Seite und Sie könnten hier falsch liegen. Nehmen Sie ehrlich das Feedback Ihrer Mitarbeiter an und beherzigen Sie es. Versetzen Sie sich in ihre Lage. Wenn der Gehaltsscheck auf Leistung basiert und dieses Tool diese reduziert, nehmen Sie ihnen im Grunde genommen Geld ab .
Ich denke, ein guter nächster Schritt ist die Entscheidung, ob das Tool weiter verwendet werden soll oder nicht. Wenn Sie es für vorteilhaft halten, erklären Sie warum . Zum Beispiel, wenn der Endbenutzer/Kunde Ihnen bessere Bewertungen oder zukünftige Projekte gibt, weil der Code schön ist – sagen Sie das Ihren Mitarbeitern! Das bedeutet mehr Geld in der Tasche!
Denken Sie daran, dass Ihre KPIs für die Qualitätssicherung möglicherweise nicht mit den Stellenbeschreibungen Ihrer Teammitglieder übereinstimmen. Sorgen Sie dafür, dass sich Ihr Team für seine Projekte einsetzt. Machen Sie es zu etwas, auf das sie stolz sind. Wenn ein starkes Gefühl der Eigenverantwortung eine Arbeitsplatznorm ist, ist Qualitätssicherung eine Selbstverständlichkeit.
Zwei weitere Punkte könnten eine Überlegung wert sein.
Meine persönliche Faustregel, wenn ich ein Team leite, ist, nur dann auf strenge Regeln zu bestehen, wenn der Code von jemandem wirklich hässlich aussieht ... und wenn das passiert, könnten wir uns mit einem tieferen Problem als nur der Codeformatierung befassen. Ein Problem, das von der Personalabteilung und der Einstellung der falschen Person ausgeht. Andernfalls, wenn der Code mehr oder weniger klar und organisiert aussieht und seine Architektur / sein Design gut ist, verursacht die Kleinigkeit bei der Formatierung oft mehr Ärger, als es wert ist.
Konsistenz ist ein schwaches Argument. Für eine Person, die mit einer bestimmten Formatierungsregel nicht einverstanden ist, könnte es sich anfühlen, als gäbe es ein Problem mit Mikromanagement oder mit einem machthungrigen Architekten. Formatierung spielt fast nie eine Rolle - "es ist wie bei Farben, manche Leute mögen es rot, andere blau".
Der wirkliche Vorteil automatisierter Formatierungsregeln besteht darin, dass Programmierer keine Zeit damit verschwenden, Dinge zu diskutieren, die keine Rolle spielen. Zu viel Zeit wird in Code-Reviews zu Kommentaren über Einrückungen verbracht. Viel mehr Gehirnleistung sollte auf echte Probleme mit dem Code konzentriert werden.
Stellen Sie dem Entwickler den Begriff Bikeshedding vor . Machen Sie deutlich, dass Sie seine Kommentare als einen großartigen Beitrag zur Gestaltung von Fahrradunterständen ansehen. Er verschwendet die Zeit anderer. Er ist ein schlechter Teamplayer. Es wird während der Auswertung gegen ihn verwendet.
Zusätzlich zu den anderen Antworten, die The Talk bereits ziemlich gut behandelt haben - eine Methode, um Formatierungen in Ihren Prozess einzuführen, ob es Bob gefällt oder nicht:
Führen Sie Code-Reviews nach dem Vier-Augen-Prinzip bei jeder Merge-Anfrage durch. Sie master
sollten nur mit akzeptierter Zusammenführungsanforderung geändert werden, auf keine andere Weise. Alle Merge Requests müssen einer Qualitätssicherung unterzogen werden, dh ein anderes Teammitglied muss sich den Code ansehen. Erzwingen Sie die Formatierung und lassen Sie Bobs MRs aufgrund falscher Codeformatierung zurückweisen.
Wenn Bob sich weigert, dem nachzukommen, bleiben seine Merge-Anfragen in der Schwebe. Auf die Frage „Warum ist Feature XY nicht fertig, obwohl die Deadline längst verstrichen ist?“, antwortet Bob vielleicht: „Das ist schon eine Weile so, wurde aber von Kollege Y abgelehnt“. Sie können argumentieren, dass es dann nicht getan wird. Dafür ist Qualitätskontrolle da. Kollegen müssen solche Anfragen ablehnen und Bob neu zuweisen, es ist dann Bobs Aufgabe, sich darum zu kümmern.
Es gibt verschiedene Grade von Aggression, wenn Sie sich auf diese Weise verhalten. Wenn Sie also möchten, dass der Ton so freundlich wie möglich bleibt, achten Sie darauf, wie Sie dies umsetzen. Trotzdem - Sie sollten Code-Reviews trotzdem machen.
In einer persönlichen Anmerkung - Bobs angebliche Aussagen über die Nützlichkeit der Formatierung lassen mich glauben, dass sie möglicherweise nicht für eine Hauptrolle geeignet sind oder einfach keine spezifische Ausbildung in bestimmten Bereichen haben. Vielleicht kennen sie die Codebasis in- und auswendig, aber aufgrund fehlender Best Practices haben sie dazu beigetragen, sie in ein riesiges Durcheinander zu verwandeln, und nur sie kennen einen Weg durch das Chaos. So etwas ist gefährlich, da Sie sehr abhängig von einer einzelnen Person werden können, wenn Ihre Codebasis immer weniger wartbar wird.
Ich denke, dass es in diesem Fall vielleicht möglich wäre, einen Git-Hook hinzuzufügen, der das Codeformat in das vom Team beim Commit gewünschte ändert, und einen anderen (nur von ihnen verwendet), der das Codeformat in das von gewünschte ändert das Teammitglied auf Update.
Wenn das Teammitglied so stark davon überzeugt ist, kann es auch eine gute Gelegenheit sein, mehr über den Code-Formatierer und die Git-Werkzeuge zu erfahren, alles Wissen, das später nützlich sein kann.
Hier gibt es viele Antworten, die sich auf gute technische Argumente konzentrieren. Zusammenfassend: Das Team hat eine fundierte Entscheidung getroffen, wie es weitergehen soll, und eine Person lehnt die Teamentscheidung und die Anweisungen des Managers ab.
Das Gespräch, das ich führen würde, geht eher in die Richtung: Haben Sie meine Anweisungen und die Teamentscheidung gerade als "Bullshit" bezeichnet? Haben Sie sich wirklich darüber beschwert, dass die Bezahlung für die Arbeit "Ihre Freiheit einschränkt"? Ich empfehle dringend, dass Sie Ihren Code jetzt gut formatiert einchecken, und ich werde ein Treffen mit der Personalabteilung vereinbaren, um den Respekt gegenüber Ihrem Arbeitgeber, Ihrem Vorgesetzten und Ihrem Team zu besprechen.
Monika Cellio
Alexei Levenkov
Mark Booth
Puck
T. Sar
Thorbjørn Ravn Andersen
njzk2