Wie geht man mit einem älteren Kollegen mit potenziell schlechten Arbeitsgewohnheiten um?

Als Hintergrund bin ich der Teamleiter.


Es gibt einen Senior Developer in meinem Team, der seinen Code überhaupt nicht pusht.

Er verpflichtet sich direkt zum Master-Branch und fügt Code in einen Production-Branch ein, ohne dass er vorher richtig versioniert wurde.

Er öffnet keine Feature-Zweige gemäß dem Arbeitsablauf, und wenn er gebeten wird, alles zu organisieren, kommt er zurück und sagt, dass er höhere Prioritäten hatte, wie z. B. das Bereitstellen neuer Dinge in der Produktion.

Aus meiner Sicht ist das Befolgen einiger einfacher Praktiken in einem Entwicklungsworkflow und das ordnungsgemäße Steuern und Hochladen des gesamten Codes auf den Git-Server Teil jeder Aufgabe, die den Umgang mit kompiliertem Code oder Artefakten beinhaltet.

Für mich sollte der Code in unserem Master-Zweig bereitstellbar und Entwicklungszweige zuverlässig sein. Dies soll es anderen Entwicklern ermöglichen, Zweige zu öffnen.

Meine abschließenden Worte zu diesem Thema sind: Den Code richtig versioniert und in die richtigen Zweige gemergt zu haben, ist für jede Entwicklungsaufgabe die „ unabdingbare Voraussetzung “. Jeder erfahrene Entwickler sollte sich gut um Code kümmern.

Wie kann man diesen Entwickler davon überzeugen, damit aufzuhören?

Welche Risiken bestehen, wenn er so weitermacht?

Ist das ein Blocker für andere Teammitglieder, oder irre ich mich?

Kommentare sind nicht für längere Diskussionen gedacht; Diese Konversation wurde in den Chat verschoben .
Ich habe nicht viel Geduld mit Leuten, die absichtlich keinen Unterricht annehmen. Geben Sie dieser Person eine Chance und betonen Sie, dass die Einhaltung von Standards eine berufliche Anforderung ist. Wenn sie sich weiterhin nicht daran halten, feuern Sie sie. Solche Leute sind eine enorme Effizienzbremse.
Github, Gitlab und die meisten Git-Server ermöglichen geschützte Branches. Sperren Sie Ihren Master-Branch, damit niemand direkt pushen kann.
Sie haben das Wort "Senior" fett gedruckt, um den Begriff in diesem Fall als ironisch zu kennzeichnen, oder? Hoffentlich...
@RaduMurzea, es war keine Ironie, er wurde als Senior Developer eingestellt
@Testa Es ist schon eine Weile her, seit du das gefragt hast. Gibt es Neuigkeiten dazu? Wurde dieses Problem gelöst? Wenn ja, wie?
nur VTC. Dieses q stellt drei Fragen – bei der ersten geht es darum, einen Kollegen zu überzeugen, die zweite ist sehr spezifisch und verdient es, an einem anderen SO-Standort zu sein, die dritte ist spezifisch für das Unternehmen. Wenn eine dieser Fragen als eine Frage gestellt würde, würde sie geschlossen/übertölpelt werden.
Moderne Git-Repositories ermöglichen das Blockieren von Branch-Pushs ohne Pull-Requests. Dies sollte in Kombination mit einem automatischen Build- und Bereitstellungs-Workflow, dem jeder folgen muss, ausreichen.

Antworten (10)

Die anderen Antworten decken viel ab, aber ich werde etwas anderes hinzufügen.

Warum erlauben Ihre Prozesse ihm den offenen Zugriff auf jeden Produktionsserver?

Sie sollten Ihr Bereitstellungssystem so einrichten, dass es automatisiert, reproduzierbar und geschlossen ist – niemand sollte in der Lage sein, das Bereitstellungssystem zu umgehen.

  1. Entfernen Sie alle Entwicklerzugriffe auf die Produktionsserver. Erlauben Sie ihnen den Fernzugriff auf die Systemprotokolle und die Debugger, aber das war es auch schon.

  2. Führen Sie Ihre gesamte Codeerstellung und Paketierung über ein Continuous-Integration-System wie TeamCity aus.

  3. TeamCity erstellt Ihre spezifischen Branches und Tags in Git – lassen Sie die Komponententests und Integrationstests ausführen.

  4. Stellen Sie Ihren gesamten Code über ein automatisiertes Bereitstellungssystem wie Octopus Deploy bereit – dies nimmt die gepackte Ausgabe Ihres CI-Systems und stellt sie auf automatisierte und reproduzierbare Weise in jeder von Ihnen eingerichteten Umgebung bereit. Es kann bestimmte Zweige in Ihrer Entwicklungsumgebung bereitstellen, diese Pakete zu UAT oder Produktion hochstufen, und es wird Ihren Entwicklern niemals erlauben, in der Produktion herumzuspielen. Es gibt Ihnen auch ein vollständiges Prüfprotokoll darüber, was wo bereitgestellt wurde.

Verwenden Sie die Prozesse, um die Einschränkungen für Ihre Entwickler durchzusetzen – bis Sie dies tun, wird immer jemand Ihre manuellen Prozesse umgehen, weil er „besser als Sie“ ist.

Wenn Ihre Entwickler keine Administratorrechte für die Produktionsserver haben, können sie Ihre Prozesse nicht umgehen.

Ihre Deployment-Prozesse sind Teil Ihres Systems – im Falle eines Serverneuaufbaus sollten Sie in der Lage sein, Ihren gesamten Code auf die gleiche Weise wie zuvor bereitzustellen. Sie werden dies unglaublich schwierig finden, wenn der Bereitstellungsprozess manuell ist, da so viel undokumentiert ist, während bei einem automatisierten Bereitstellungsprozess zumindest die Automatisierungskonfiguration als minimale Dokumentation fungiert – Sie klicken nur auf eine Schaltfläche und haben alle relevanten Pakete bereitgestellt auf den neuen Server. Keine Aufregung, keine Probleme, einfach erledigt.

Bearbeiten: Siehe auch meine Antwort auf So vermeiden Sie schlechte Arbeitspraktiken von Mitarbeitern , da dies auch für Ihre Situation relevant ist. Sie müssen als Torwächter fungieren, und dazu müssen Sie tatsächlich einige Tore in die Praxis umsetzen.

Zweite Bearbeitung: Ein paar Leute in den Kommentaren haben die Besorgnis geäußert, dass dies keine sofortige Lösung ist - leider, es sei denn, der betreffende Entwickler hat über Nacht eine Offenbarung, dann wird nichts weniger als das Verlassen des Entwicklers eine sofortige Lösung sein.

TeamCity und Octopus Deploy (Sie müssen diese nicht verwenden, es gibt andere da draußen) sind recht einfach einzurichten und in Betrieb zu nehmen - sie sollten ungefähr einen Tag dauern, um installiert und konfiguriert zu werden, plus ungefähr eine Stunde pro Projekt Aufbau.

Aber selbst der Beginn des Prozesses zur Automatisierung des Bereitstellungsprozesses sollte beim Entwickler des Problems etwas auslösen – es sollte ihm sofort zeigen, aus welcher Richtung der Wind weht, und das kann ausreichen, um ihn dazu zu bringen, eine Entscheidung in die eine oder andere Richtung zu treffen. Sollten sie mit dem Teamlead bleiben und zurückfallen, oder sollten sie weiterhin abgeschottet bleiben und riskieren, gehen zu müssen ...

Eine andere zu berücksichtigende Sache ist, dass dieser Entwickler anderen Teammitgliedern zeigt, dass sie mit schlechten Praktiken davonkommen können - ich wette, es gibt andere Teammitglieder, die still und leise Korrekturen in der Produktion vornehmen, Fehler vertuschen usw. Das sind die Dinge, die schnell dazu führen, dass Sie im Bedarfsfall kein identisches Produktionssystem mehr aufbauen können. Und glauben Sie mir, es wird entstehen.

Und wenn der eigenwillige Entwickler beschließt, wegen des Verlusts des Produktionszugriffs aufzuhören, sind Sie wahrscheinlich besser dran.
@ jpmc26 Dem stimme ich zu. Ich habe diese Antwort positiv bewertet, weil sie echte, nützliche und sogar technische Informationen zu dem Problem beigetragen hat. Im Allgemeinen sind gute Unternehmen besser darin, keine Probleme zu haben, als mit Mitarbeitern umzugehen, die sie haben. Auch dies ist nicht die Antwort auf das Problem, aber es sind sehr gute, relevante Informationen.
@djechlin Die einzige Möglichkeit, "keine Probleme zu haben", besteht darin, ein Team zu haben, das weiß, wie man sie verhindert. Dazu wird dieser Entwickler nichts beitragen, es sei denn, er ändert seine Herangehensweise drastisch. Ein Unternehmen besteht nur aus Menschen; Ihre Politik basiert auf den Entscheidungen dieser Menschen.
@jpmc26 idk, in meiner Firma spült das Reinigungspersonal nur Geschirr. also müssen wir uns irgendwie nie mit a***löchern auseinandersetzen, die nicht geschirr spülen. aber mein Studentenwohnheim hatte dieses Problem und es war ein großes Problem. hört sich so an, als hätte jemand es versäumt, diesem Typen beizubringen, was ein guter Build-Prozess ist, als er beigetreten ist, und jetzt denkt er, er kann Sachen ausführen. Bei der Einstellung oder Ausbildung wurde ein Fehler gemacht. Moos Antwort wird einen Teil des Problems für die nächste Einstellung verhindern.
Dies ist ein gutes zukünftiges System, das angestrebt werden kann, aber es löst nicht das unmittelbare Problem, da es zuerst implementiert werden muss, vermutlich von den aktuellen Entwicklern.
@ Peter Nun, ich habe dafür gestimmt, fwiw wieder zu öffnen.
Diese Antwort suggeriert eine enorme Änderung der Prozesse und der Technologie, ohne das eigentliche Problem anzusprechen, nämlich dass der Mitarbeiter sich offenkundig weigert, einfache und klare Anweisungen seines Vorgesetzten zu befolgen. Beharrlich. Auf lange Sicht. Plündere ihn.
@djechlin Danke. Antwort hinzugefügt und Kommentar entfernt
Wenn es sich um ein kleines Team handelt (zwei oder drei Entwickler, die jeweils viele Aufgaben tragen), haben Sie manchmal keine andere Wahl, als ihnen allen Produktionszugriff zu gewähren. Aber bei einem so kleinen Team sollte sich jedes Mitglied zu 100 % vertrauen und es sollten Prozesse vorhanden sein, die verhindern, dass dieses Verhalten auftritt. Es scheint, als ob diesem "älteren" Entwickler nicht vertraut wird. Das ist jetzt das größte Problem.
@LightnessRacesinOrbit im Gegenteil, ich habe das Gefühl, dass das Lösen des Problems mit einer Person das langfristige Problem nicht löst. Es wird sich schließlich auch ohne einen „semi-böswilligen Akteur“ wie in diesem Fall wiederholen, aber durch Unfälle oder gut gemeinte Aktionen in Eile, und Sie müssen Ihren Versionierungs- und Bereitstellungsprozess korrigieren, um dies zu beheben.
@LightnessRacesinOrbit Der Versuch, persönliche und kulturelle Probleme mit Prozessen und Verfahren zu lösen, sollte der erste Schritt sein. Es wird nicht nur dieser spezielle Fall behandelt, sondern es wird vermieden, ihn in Zukunft zu wiederholen.
@ angarg12: Im Rahmen des Zumutbaren, sicher. Den Workflow Ihres gesamten Unternehmens auf den Kopf zu stellen, weil sich jemand weigert, einfache Anweisungen zu befolgen, ist jedoch rückwärts. Bringen Sie zuerst Ihre Leute in Einklang.
Ich bin in einer ähnlichen Situation mit einem ähnlichen Problem. Ich würde dies hauptsächlich nicht tun, weil 1) wir einfach nicht genug Entwickler haben, um mich zunächst zu entfremden, und 2) das Problem die meiste Zeit darin besteht, dass nicht die Entwickler, sondern das Projektmanagement gestern alles wollte, aber wir bewegen uns in Richtung dieser Art von System meistens aus sehr ähnlichen Gründen.
Entwickler sollten auf Produktionssysteme zugreifen, aber nichts ändern können. Es kann sehr wertvolle Informationen geben, die sonst nicht leicht zugänglich sind.
@ThorbjørnRavnAndersen nein, nicht regelmäßig - das wäre zum einen ein Verstoß gegen die DSGVO und zum anderen ein Versagen Ihrer Entwicklungs-, Test- und Staging-Umgebungs-Setups. Die Produktion sollte keine einzigartige Einhornumgebung sein, sie sollte mit den anderen Umgebungen identisch sein, in denen Ihre Entwickler arbeiten, sonst führen Sie Probleme ein.
@moo gpdr ist ein separates Problem. Die Produktion ist sehr selten zu 100% identisch mit den anderen Systemen und kann Merkmale aufweisen, die Sie nur mit Zugriff identifizieren können.
@ThorbjørnRavnAndersen nein, die DSGVO ist kein separates Thema – wenn Sie Zugriff auf die Produktion haben, haben Sie in den meisten Fällen Zugriff auf echte PII. Das ist ein DSGVO-Problem. Und Sie sollten wirklich danach streben, die Unterschiede zwischen Ihren Entwicklungsumgebungen und Ihren Produktionsumgebungen zu verringern, da dies genau den Punkt eliminiert, mit dem Sie versuchen, Ihre Position zu stützen. Wenn Ihre Prod-Umgebung Eigenschaften aufweist, die sich nur in Prod manifestieren, dann ist Ihr Setup baaaaaaaad und sollte behoben werden - und jeder, der Ihnen etwas anderes sagt, sollte entlassen werden.

Lassen Sie ihn wissen, dass er an Ungehorsamkeit beteiligt ist und dass seine Ungehorsamkeit Konsequenzen haben wird. Sagen Sie ihm, dass ein Teil Ihrer Arbeit darin besteht, die Integrität des Software-Engineering-Build-Prozesses zu schützen, und er macht einen Hasch daraus.

Wenn er fortfährt, unterbrechen Sie seinen Zugriff auf den Master- und den Produktionsserver. Sagen Sie ihm dann, dass er sich auf einem PIP befindet, wo seine erste Aufgabe darin bestehen wird, Ihnen zu erklären, wie er beabsichtigt, seinen Code in Zukunft auf den Master und die Produktionseinheit hochzuladen (*).

Als Teamleiter benötigen Sie einen erfahrenen Entwickler. Du brauchst keine Kopfschmerzen. Insbesondere ein Kopfschmerz, der die Primadonna spielt und so tut, als würden die Regeln für alle außer ihm gelten.

(*) Er muss es dir sagen, weil du es ihm bereits ausdrücklich gesagt hast und er das, was du gesagt hast, nicht ernst genug genommen hat, um es zu verstehen. Wenn die Vernunft nicht funktioniert, versuchen Sie es mit Religion, z. B. mit dem "Blitzschlag auf der Straße nach Damaskus" - ich bin äußerst flexibel in meinen Managementmethoden und meinem Ansatz :)

Kommentare sind nicht für längere Diskussionen gedacht; Diese Konversation wurde in den Chat verschoben .

Und wenn er gebeten wird, alles zu organisieren, kommt er zurück und sagt, dass er höhere Prioritäten hatte, wie die Bereitstellung neuer Dinge in der Produktion.

Von allem in der Frage scheint mir dies der beste Ansatz zu sein, um zu handeln. Wer setzt seine Prioritäten? Wenn Ihre Teams wie unsere organisiert sind, liegt es in der Verantwortung des Teamleiters, seine Prioritäten zu setzen. Lassen Sie ihn also wissen, dass Sie erkennen, dass Sie ihm Ihre Prioritäten nicht ausreichend mitteilen und dass Sie zusätzliche Anstrengungen unternehmen werden, um sicherzustellen, dass sie richtig kommuniziert werden.

Eine Person wie diese wird höchstwahrscheinlich eine Antwort erhalten, da dies nicht das erste Mal ist, dass ihr jemand dies sagt. Ich kann nicht sagen, wie diese Antwort lauten wird, aber sie wird dem eigentlichen Problem viel näher kommen. Es wird offen sein, damit Sie besser damit umgehen können.

Vielleicht bin ich zu subtil. Nur für den Fall, ich werde direkter sein. Jeder in der Position eines „leitenden Entwicklers“ sollte wissen, wie sehr er es vermasselt, wenn die Führung anbietet, ihm zu „helfen“, indem er „zusätzliche Anstrengungen unternimmt, um sicherzustellen, dass die Prioritäten klar sind“. Sie sollten schnell erkennen, dass das wirklich bedeutet, dass sie dabei sind, jegliche Wahlfreiheit in ihrem Ansatz zu verlieren, bis sie sich formieren.

@VietnhiPhuvan Ich formuliere es absichtlich so. Es ist durchaus möglich, dass es ein Kommunikationsproblem gibt, das dem leitenden Entwickler die seltsame Vorstellung gibt, dass er seine eigenen Prioritäten setzt. Andererseits, wenn diese Kommunikation tatsächlich gut funktioniert und der Entwickler nur eine unausstehliche Person ist, dann verstehen sie sicherlich, was es bedeutet, wenn ein Lead ihnen sagt: „Ich werde mich besonders bemühen, sicherzustellen, dass Prioritäten richtig kommuniziert werden.“ Jeder, der schon lange genug dabei ist, um ein „leitender“ Entwickler zu sein, sollte wissen, was es bedeutet, wenn Führung „Hilfe“ anbietet.
Freundliche Worte mit einem Hauch von Stahl - das gefällt mir :) Ich habe diesen Kommunikationsstil schon eine Weile nicht mehr verwendet. Tatsächlich bin ich schon seit langem nicht mehr subtil mit Dingen umgegangen :) Die Möglichkeit, die Sie angesprochen haben, ist der Grund, warum ich in vielen Dingen nicht mehr subtil bin. +1 für die Klärung Ihrer Position.

Machen Sie deutlich, dass dies unbedingt erforderlich ist.

Hast du das schon gemacht? Als Manager weiß ich, dass es schwierig sein kann, Mitarbeiter direkt zu konfrontieren, wenn sie etwas Inakzeptables tun. Du erwähnst, dass es ein Gespräch in etwa so gab:

Sie: Können Sie bitte Ihren Code organisieren und den Entwicklungsworkflow, den wir besprochen haben, richtig verwenden?

Leitender Entwickler: Dazu bin ich noch nicht gekommen, weil ich diese dringenden Features herausbringen muss.

Was ich mich frage ist, was war Ihre Antwort darauf? Haben Sie deutlich gemacht, dass Sie mit dieser Priorisierung nicht einverstanden sind und fortan keine Neuentwicklung mehr erfolgen soll, bis er den richtigen Prozess implementiert? Wenn nicht, dann hat der leitende Entwickler wirklich keine klare Botschaft erhalten. Er könnte denken, dass seine Wahl unter den gegebenen Umständen die richtige war.

Der erste Schritt besteht darin, klar zu sagen, was Sie erwarten.

Ich sehe viele Antworten, die darauf hindeuten, dass Sie ihn wissen lassen, dass sein Job auf dem Spiel steht usw. Aber tun Sie das nicht, bis dieser grundlegende Schritt erfolgt ist. Er muss wissen, dass dieser Entwicklungsprozess obligatorisch ist und seine Einrichtung Vorrang vor allem anderen hat.

Der zweite Schritt besteht darin, ihn beim Erlernen des Prozesses zu unterstützen.

Ich würde ihm anbieten, sich von einem anderen Entwickler zeigen zu lassen, wie es aufgebaut ist. Sie sagen, dass sein Mangel an Git-Wissen das Problem ist (obwohl er behauptet, es zu wissen). Wenn Sie sich dessen nicht zu 100 % sicher sind, müssen Sie es nicht direkt ansprechen. Weisen Sie einfach darauf hin, dass es für ihn einfacher und schneller wäre zu sehen, wie jemand anderes es bereits eingerichtet hat, und es würde sicherstellen, dass alle Dinge auf die gleiche Weise tun.

Wenn es auf lange Sicht ein konsistentes Muster gibt, die Tatsache, dass er etwas nicht weiß, mit Problemumgehungen zu verbergen, dann ist dies ein Problem, das auf irgendeine Weise angegangen werden muss (da es ziemlich schädlich sein wird).

Schritt drei ist eskalieren – nur wenn die oben genannten Punkte nicht funktionieren.

Andere Antworten haben Hinweise dazu gegeben.

Ihren bevorzugten Commit-Pfad obligatorisch zu machen, ist an sich eine gute Praxis, aber verwenden Sie ihn nicht, um dieses Problem zu lösen.

Das grundlegende Problem ist, dass der leitende Entwickler Ihre Rolle als Teamleiter respektieren und von Ihnen eingeführte Praktiken akzeptieren muss. (Umgekehrt müssen Sie Ihre Erwartungen auch klar kommunizieren, wenn dies nicht der Fall ist). Dies nicht zu tun und stattdessen das Problem mit Technologie zu überspielen, wäre ein Fehler.

Sobald jedoch die oben genannte Kommunikation stattgefunden hat, wäre es eine gute Idee, den Prozess auch obligatorisch zu machen.

Ich stimme zu, dass eine technisch erzwungene Lösung nicht notwendig ist. Die meisten Entwicklungsumgebungen, in denen ich gearbeitet habe, erlauben Entwicklern Zugriff auf den Master-Branch, und Entwickler haben oft eine sekundäre Rolle als Ops und/oder Support mit ausreichendem Zugriff auf Patch-Produktionsserver. In diesen Umgebungen wird der Entwicklungsprozess genau verfolgt und funktioniert dank der Teammitglieder, die den Prozess verstehen und respektieren und über genügend Selbstdisziplin verfügen, gut. Technische Korrekturen mit eingeschränkten Rechten sind möglicherweise besser für größere Teams geeignet (mit mehreren zu schützenden Installationen und einem vollständigen Sysops-Team, um sie zu verwalten).
@NeilSlater Die technische Lösung kann hilfreich sein, um dem Team zu helfen, sich an bewährte Verfahren zu halten und dumme Fehler zu vermeiden. Aber es sollte nicht als Ersatz für Management verwendet werden.

Sie benötigen eine ordnungsgemäße Codekontrolle und -überprüfung. Wenn er den Prozess versteht und ohne außergewöhnlich guten Grund dagegen verstößt, brauchen Sie ihn nicht im Team. Sag es ihm.

Prioritäten: Es liegt in Ihrer Verantwortung, die Prioritäten klar zu machen. Wenn er in eine andere Richtung geht, nachdem Sie dies getan haben und er bestätigt hat, brauchen Sie ihn nicht im Team. Sag es ihm.

Erinnern Sie ihn gegebenenfalls daran, dass sich die Bewertung seiner Arbeit durch den Teamleiter auf seine Jahresbilanz auswirkt.

Geben Sie ihm eine faire Chance zu erklären, warum dieser eine Fall etwas Besonderes war ... aber wenn er keine angemessene Verteidigung hat (Ihrer Meinung nach nicht seine) und er nicht bereit ist zu versprechen, dass es nicht wieder vorkommen wird, dann schon Zeit für ein Gespräch mit seinem Vorgesetzten.

Hätten Sie Beispiele von Menschen, die ihren Job verloren haben, weil sie Fehler wie diesen gemacht haben?
Wenn er die Unternehmens-/Abteilungsrichtlinien nicht befolgt, kann er aus wichtigem Grund entlassen werden, insbesondere wenn er dadurch das Projekt gefährdet. Beispiele sind nicht nützlich, würden gegen Datenschutzbestimmungen verstoßen und sind ehrlich gesagt irrelevant.
Diese Antwort ist nutzlos, weil sie nicht darauf abzielt, den Mitarbeiter richtig zu schulen, außer „ihn zu feuern, wenn Sie ihn nicht erziehen“.
Worüber redest du mit seinem Manager? Vielleicht erstmal das machen und dann mit dem Mitarbeiter sprechen?
@gusdor: Oder zumindest zu einem Job gewechselt, den sie können und wollen.
@keshlam Einverstanden! In diesem Fall würde ich definitiv den Vertrag des Kerls aus dem Orbit holen, um die Infektion einzudämmen.
Diese Antwort ist zwar relevant, aber möglicherweise unnötig aggressiv. Es scheint auch anzunehmen, dass es keinen Sinn macht, den Senior Dev im Team zu behalten, selbst wenn er sich nicht an Regeln halten kann (vielleicht haben sie eine gute Arbeitsplatzsicherheit). Wenn die Drohung, diese Person zu feuern, die einzige Option gewesen wäre, hätte OP es meiner Meinung nach in Betracht gezogen.
Ich habe nicht gesagt, dass das Feuern die einzige Option ist. Ich sagte, erinnere sie zuerst an ihre Verpflichtungen und bringe sie dazu, diese anzuerkennen. Wenn dies fehlschlägt, kann es notwendig sein, damit zu drohen, sie aus ihrer aktuellen Rolle oder ihrem aktuellen Projekt zu werfen. Wenn dies fehlschlägt, kann tatsächlich ein Brennen erforderlich sein. Hier gibt es explizite Anweisungen, welche Schritte in welcher Reihenfolge zu unternehmen sind. Nein, es ist nicht unnötig aggressiv; nur durchsetzungsfähig, was ein Teamleiter manchmal einfach sein muss.

Hier sind 2 Angriffslinien notwendig:

  1. Sie brauchen einen Prozess, der es einfach macht, das Richtige zu tun, und schwer, das Falsche zu tun.
  2. Das Team muss sich darauf einigen/akzeptieren, was das Richtige ist.

Die Antwort von moo deckt bereits 1 ab, also konzentriere ich mich auf 2).

Ihr Team sollte wissen, dass es einen stabilen Branch, einen einigermaßen stabilen gemeinsam genutzten Branch und eine gemeinsame Merge-Strategie benötigt, die sicherstellt, dass die Leute wissen, welche Änderung sich in welchem ​​Branch befindet, was bedeutet, dass jeder Dinge durch Branches in der gleichen Reihenfolge zusammenführt. Wenn sie das nicht wissen, schicken Sie sie zu einer obligatorischen Schulung, die von einem Dritten durchgeführt wird . Ja, es ist teuer, aber ein Team zu haben, das Branching nicht versteht, ist auf lange Sicht teurer.

Sie können normalerweise andere Entscheidungen, wie das Öffnen eines temporären Unterbranch für ein Feature, dem Team überlassen, solange Sie sicherstellen müssen, dass Entscheidungen, die das Team betreffen, vom Team getroffen werden und nicht von einem einzelnen Entwickler.

Sie können die Teamarbeit mit Retrospektiven erleichtern, Meetings, bei denen das Team nach jedem Feature/Meilenstein/Sprint zusammenkommt und bespricht, wie es als Team besser hätte sein können – die Häufigkeit dieser sollte etwa einmal alle 1-4 Wochen sein, und Sie können Finden Sie tonnenweise Material über Retrospektiven online. Wenn das Team sich mit Verzweigungen auskennt, sollte Ihr einzelner Entwickler während der Retrospektiven vom gesamten Team kritisiert werden, nicht von Ihnen. Sie können dann das Team anleiten, automatisierte Prozesse einzurichten, die es einfacher machen, Dinge richtig zu machen, und sehr schwer, Dinge falsch zu machen. Dies sind die Prozesse, die in der Antwort von moo beschrieben werden.

Im Allgemeinen können Sie als direkter Vorgesetzter einen großen Prozess, mit dem Ihr Team nicht einverstanden ist, nicht einfach implementieren und durchsetzen, ohne dass ein sehr hohes Risiko von Folgen besteht. Wenn sie sich nicht mit der richtigen Verzweigung auskennen, müssen Sie sie auf „den richtigen Weg“ schulen, dann können Sie kleinere Prozesse implementieren und durchsetzen, um sie zu zwingen, als Team zu arbeiten: Eine gängige Methode in Ihrem Fall besteht darin, einen Code zu verlangen Überprüfung einer Zusammenführung mit „Develop“ und „Master“; Wenn das nächste Mal eine Zusammenführung falsch gemacht wurde, können Sie jetzt 2 Personen fragen, was schief gelaufen ist, den Programmierer und den Prüfer.

Meine erste Vermutung war, dass der Entwickler von der Verzweigung von Git nicht überzeugt war.

Sie tun dies, indem Sie strenge, physische Richtlinien einführen, die erfordern, dass Änderungen in einem bestimmten Repo überprüft werden oder dass sie nicht bereitgestellt werden, was bedeutet, dass die Arbeit nicht erledigt wird, was bedeutet, dass er seine Arbeit nicht erledigt, und das ist ein Grund dafür Beendigung. Wenn Ihre Teamstruktur „entspannt“ ist und Entwickler Schlüssel für die Produktion haben und selbst bereitstellen können, oder über DB-Anmeldeinformationen verfügen, um DB-Schemaänderungen selbst bereitzustellen, und nicht die vom MANAGEMENT EINGEFÜHRTEN PROTOKOLLE durchlaufen , ist die Schlussfolgerung einfach: du kommst nicht gut zurecht. Das Management in einer Softwareentwicklungsumgebung besteht hauptsächlich darin, die Teamregeln und -protokolle zu entwerfen, an die sich die Teammitglieder halten MÜSSEN, und nicht täglich die Entwickler zu babysitten.

Sie fordern Ihre Untergebenen nicht auf, die Dinge auf eine bestimmte Weise zu tun. Sie haben alle notwendigen Werkzeuge zur Verfügung, um sie zu zwingen, die richtigen Protokolle zu befolgen. Dies ist kein Problem mit Ihrem Mitarbeiter, sondern ein Problem mit Ihrer Organisation und einem Mangel an Strukturen und Regeln, die das Leben einfacher, einfacher und effizienter machen.

Das liest sich so, als wäre Management die Aufgabe, Menschen dazu zu bringen, ihre Arbeit zu verabscheuen, indem man ihnen Protokolle in den Weg legt. Ich bin so froh, dass ich nicht für dich arbeite!
Das Befolgen einfacher Protokolle ist für die Zusammenarbeit von entscheidender Bedeutung. Ich würde Sie nicht einstellen, wenn Sie dazu nicht in der Lage wären
Ich stimme zu, dass Protokolle wichtig sind. Aber wie kommt man zu einer guten Nutzung guter Protokolle? Es erscheint mir dysfunktional, Nicht-Experten Protokolle entwerfen zu lassen, die Experten befolgen können.
Wer sagte "Nicht-Experten entwerfen Protokolle"?

Es gibt eine Möglichkeit, an die niemand gedacht hat: Dass dieser leitende Entwickler einfach nicht versteht, wie der Workflow funktionieren sollte und was er tun muss, um innerhalb dieses Workflows zu bleiben. Dass er nie gelernt hat, Git richtig einzusetzen.

Wenn er Git direkt verwendet, sind alle Dinge, die er tun muss, eigentlich ziemlich kompliziert, also haben Sie hoffentlich noch ein Tool. Sourcetree funktioniert recht gut; Ich bin sicher, es gibt andere. Einmal richtig eingerichtet (was ein Schmerz sein kann), macht es das Leben viel einfacher.

Nehmen Sie einen der Entwickler, der alles richtig macht, und überprüfen Sie mit ihm, wie die Maschine dieses Typen eingerichtet ist. Hat er die Werkzeuge, die alle anderen haben? Wenn nicht, richten Sie sie ein. Kann er einen Zweig erstellen? (Auf meinem Rechner wählen Sie den Zweig aus, von dem Sie verzweigen möchten, wählen einen Menüpunkt aus und geben den Namen des neuen Zweigs ein). Ohne die richtigen Werkzeuge ist es ein Schmerz. Vielleicht weiß er wirklich nicht, wie das geht.

Gehen Sie mit ihm durch alle Dinge, die er tun muss. Lassen Sie ihn alle Schritte aufschreiben, die er tun muss. Das habe ich gemacht, als ich Git zum ersten Mal benutzt habe: Ich habe alles aufgeschrieben. Beim zweiten und dritten Mal verfeinerte ich das Geschriebene, weil es nicht ganz funktionierte und es Situationen gab, mit denen ich nicht gerechnet hatte. Vom vierten bis zum zehnten Mal habe ich meine Notizen benutzt, um Dinge zu erledigen, und dann brauchte ich sie nicht mehr. Ich konnte jemanden sehen, der nicht wusste, welche Werkzeuge er verwenden sollte und wie er sie verwenden sollte, zu stolz oder eigensinnig war, jemanden um Hilfe zu bitten, und auf dem Weg ein unheiliges Chaos verursachte.

Niemand sollte jemals zum „Senior Developer“ gelangen, ohne gute Source Control-Praktiken zu kennen und anzuwenden. Unwissenheit ist hier wirklich keine Entschuldigung.

Wow. Einfach wow. Das ist so zutiefst unprofessionell, es ist unglaublich. Aber sprechen Sie zuerst mit der Personalabteilung, um sicherzustellen, dass sie an Bord sind und dass Sie nichts tun, was ein rechtliches Problem für Ihr Unternehmen darstellen könnte. Dann sprechen Sie mit ihm, berücksichtigen alle Ratschläge der Personalabteilung und sagen ihm, dass Sie Schritte unternehmen werden, um ihn aus dem Team zu entfernen, wenn er dies noch einmal wiederholt. Was wahrscheinlich von der Firma bedeutet.

Stellen Sie sicher, dass die Personalabteilung versteht, welchen Schaden dieses unverantwortliche Verhalten anrichten kann.

Wie man ihn zum Aufhören überredet: Mindestens zwei Antworten hier führen dazu, dass er nicht dort angestellt wird, wo er jetzt ist, wenn er nicht wechselt. Das sollte überzeugen. Darüber hinaus ist es zutiefst unprofessionell und gefährlich, dies zu sagen.

Was sind die Risiken: Ein defekter Produktionsserver ist das kleinere Risiko. Ein Produktionsserver, der kostspielige Fehler macht, ist das große Risiko. Stellen Sie sich einen E-Commerce-Server vor, der Mehrwertsteuer berechnet, anstatt Mehrwertsteuer auf den Preis hinzuzufügen. Sie werden viele, viele sehr zufriedene Kunden haben.

Ist das ein Blocker: Nicht wirklich. Wenn ich einen Zweig mache, erwarte ich voll und ganz, dass der Entwicklungszweig geändert wird, wenn ich zusammenführen möchte, also gibt es keinen Unterschied. Wenn er über den Develop-Branch zum Master-Branch geht, ist das eine andere Sache. Wer für den Master-Zweig verantwortlich ist, erwartet eine große Überraschung. Wenn ich andererseits für den Master-Zweig verantwortlich wäre, würde alles, was nicht autorisiert ist, entfernt werden, und wer auch immer es tun würde, würde in Schwierigkeiten geraten.

Der Developer-Zweig steht hinter Master, was in unserem Workflow ein Problem darstellt. Ich würde das als Sperre sehen. Und er hat Code auf seiner Maschine, der nirgendwo ist, sondern kompiliert und in der Produktion ausgeführt wird. Mit anderen Worten, wenn seine Maschine gestohlen wird, haben wir nicht den Quellcode dessen, was läuft.
Während ich einige Dinge als inakzeptabel bezeichnen würde, ist Produktionscode, der sich nur auf einem Entwicklercomputer befindet, mehr als inakzeptabel. "Wenn seine Maschine gestohlen wird" - ist sie nicht einmal gesichert? Festplatten und SSD-Laufwerke sterben. Der Code ist also nicht weg, wenn sein Laufwerk stirbt, sondern wenn es stirbt.
Es ist kein wirklich gutes Management, keine Ahnung zu haben, was man seinem Mitarbeiter sagen soll, außer: „Wenn du noch mal Mist machst, werde ich dich feuern.“
Zu viel Eskalation zu früh. Es ist nicht einmal klar, dass das OP direkt gesagt hat: "Du musst das tun".
+1 - Kann nicht mehr hinzufügen, tut mir leid :-). Es ist erstaunlich, wie sehr die Leute hier den entscheidenden Punkt übersehen, nämlich dass die Aussicht auf eine bevorstehende Katastrophe durch ein einzelnes Ereignis eingeführt wurde, und die Leute über PV-Verfahren und angemessene Eskalationsmittel schwadronieren, während das OP am Rande des Geschehens steht ein Abgrund. Ziemlich beeindruckend.
@Vampire das allein ist wahrscheinlich ernster als alles andere Erwähnte. Das Nichteinchecken des Produktionscodes würde ich möglicherweise als grobe Fahrlässigkeit betrachten.

Zusammenfassung:

  • Abgesehen von den technischen und gesellschaftlichen Problemen, die von anderen angesprochen wurden, haben Sie einen großen unmittelbaren Bedarf – die Aktionen dieser einzelnen Person können die Möglichkeit eines katastrophalen Ausfalls an einem einzigen Punkt erzeugen.

    • dh während die meisten „Katastrophen“ passieren, weil mehrere scheinbar nicht zusammenhängende und statistisch unwahrscheinliche Ereignisse zufällig gleichzeitig aufgetreten sind. In diesem Fall kann ein einziges Ereignis ausreichen.
  • Während Ihre Sorgfalt hoffentlich darauf gerichtet ist, die Ergebnisse für Ihren Arbeitgeber zu optimieren, ist es auch ratsam, sich Gedanken über Ihre eigene Position zu machen.

    • Das heißt, der Entwickler und damit Sie als sein Manager setzen das Projekt möglicherweise (und werden es wahrscheinlich) dem Risiko eines größeren Verlusts aus (gemessen in Bezug auf Zeit, Ressourcen, Notwendigkeit, Arbeit zu replizieren, Systemintegrität, Kundenvertrauen und mehr und mehr). letztendlich in $. Wenn ein solches Ereignis eintrat und schwerwiegend war, auch wenn es sich nicht um den „schlimmsten Fall“ handelt, gibt es keinen Grund zu der Annahme, dass Sie Ihren Arbeitsplatz nicht verlieren werden.
  • Der oben genannte Verlust von noch unbekannter Größenordnung kann jederzeit eintreten – nächste Woche, heute oder nie.

  • Systeme sind normalerweise so angeordnet, dass der Umfang/die Reichweite/das Ausmaß der Folgen aller vernünftigerweise vorhersehbaren Ereignisse erkennbar sind. In dieser Situation ist dies nicht der Fall, und dies muss sofort behoben werden.

    • Obwohl Sie wissen, dass die Handlungen des Mitarbeiters Sie in Gefahr gebracht haben, sind Sie sich der potenziellen Folgen wahrscheinlicher, möglicher und schlimmster Ereignisse bisher nicht bewusst. Festzustellen, was Sie nicht wissen, ist der erste Schritt, um die Dinge richtig zu stellen.

    • Sie sind in der Lage, sofort Maßnahmen zu ergreifen, um festzustellen, was Ihnen an der gesamten Situation unbekannt ist. Tun Sie dies. Jetzt. Legen Sie dann fest, welche Schritte dringend sind und welche sich möglicherweise etwas verzögern, und beginnen Sie dann mit der Behebung

__________________________________________________

Neue Frage für Ihre Liste:

Q0: "Was sind meine dringendsten Prioritäten?"

A0: STELLEN SIE SICHER, dass das, was Sie haben, gegen katastrophale Verluste stabil ist.

Es klingt nicht so, als wäre es.
Wenn nicht, machen Sie es so.
Jetzt!

_________________________

Die möglichen kurzfristigen Gefahren & Folgen & der beste Weg nach vorn:

Das Folgende soll nicht unhöflich, sondern „robust“ sein. Sagen Sie auf jeden Fall, wenn Sie nicht einverstanden sind. Wenn Sie damit einverstanden sind. tun Sie JETZT etwas Passendes.


Sie (oder andere) erwähnen „Maschine gestohlen , Unsicherheit in Bezug auf „ Backups “ usw. ...
Wenn dies in signifikanter Weise passiert ist, sollten Sie entlassen werden und würden es wahrscheinlich auch, nachdem Sie alle möglichen Abhilfemaßnahmen implementiert haben .

Sehen Sie sich ohne weitere Eingaben Ihre 2. (jetzt 3.) Frage an, entscheiden Sie, welche Risiken existieren KÖNNTEN, von denen Sie nichts wissen, weil das System nicht kontrolliert wird, und ergreifen Sie sofortige Maßnahmen, um diese Risiken zu beseitigen. Dies kann das Einfrieren aller Aktivitäten und/oder Dateien und/oder ??? vom Entwickler. Binden Sie sie also in den Prozess ein.

______________

Vorschläge für Punkte im Rahmen eines (dringenden) Interviews mit dem Entwickler:

Ich verstehe, dass xxx der Fall ist. Ist das so ja/nein?
Wenn ich das falsch verstehe, bitte klarstellen.

OK - wenn yyy passiert, was wird das Ergebnis sein?
(Wenn die Antwort falsch ist, sagen Sie warum und iterieren Sie, bis eine Einigung erzielt wird.
(Wenn die Iterationsschleife nach einer übermäßigen Zeit nicht geschlossen wird, verwenden Sie '45 Clear ' oder ein akzeptables lokales Äquivalent :-( :-))

Sobald Schlussfolgerungen hinsichtlich der Konsequenzen gezogen werden. Das ist für mich nicht akzeptabel. Dies bringt mich/das Unternehmen/das System in eine unzumutbare Gefahrensituation. Dies MUSS gestern angegangen werden. Ich bin dabei, xxx zu implementieren. Sind Sie einverstanden? / Können Sie Alternativen vorschlagen? Auch hier kann sich eine iterative Schleife ergeben. Auch hier kann die Verwendung von "GOTO" erforderlich sein ( oder nicht :-} ).

Wenn Sie dies oder etwas Ähnliches nicht tun, werden Sie als Konsequenz entlassen. Irgendwann.

Ehrlich gesagt habe ich keine Ahnung, was Sie hier vorschlagen.
Diese Antwort hat einige verwirrende Formatierungen. Ich denke, die Risikobewertung ist der einzige leicht zu rettende Teil. Vielleicht möchten Sie das in eine neue Antwort aufteilen.
@dan1111 Vorschlag: "Stellen Sie sicher, dass das, was Sie haben, gegen katastrophale Verluste stabil ist.". Grund: Wie Gnasher sagte: „Während ich einige Dinge als inakzeptabel bezeichnen würde, ist Produktionscode, der sich nur auf einem Entwicklercomputer befindet, mehr als inakzeptabel.“ „Wenn seine Maschine gestohlen wird“ – wird sie nicht einmal gesichert? Festplatten und SSD-Laufwerke sterben. Der Code ist also nicht weg, wenn sein Laufwerk stirbt, sondern wenn es stirbt". || Er lädt derzeit zur absoluten Katastrophe ein.
Diese Antwort ist so allgemein, dass sie in fast alle Fragen zum Arbeitsplatz kopiert und eingefügt werden kann. Es macht jedoch keinen Sinn, wenn ich so viel lese, wie es die Formatierung zulässt.
@phresnel Möglicherweise sind Sie mit dem vertraut, was in einem großen Programmierprojekt passieren kann, oder auch nicht. Die meisten Aktivitäten am Arbeitsplatz beinhalten nicht, dass Teammitglieder eine gut etablierte Struktur, in der die Dinge gut funktionieren, übernehmen und sie durch die Aktionen einer Person in ein System umwandeln, in dem Einzelpunktausfälle massive katastrophale Ausfälle mit unbekannten Folgen verursachen können. Eine Programmierumgebung kann so sein. Ob das hier passiert ist, ist uns und wahrscheinlich dem OP nicht bekannt. Das muss korrigiert werden oder sein Job, sein Kunde und vielleicht sein Unternehmen halten nicht einen Monat.
Das war überhaupt nicht mein Punkt. Was meine Berufserfahrung damit zu tun hat, ist mir völlig entgangen.
@phresnel Verständnis dafür, dass es in vielen Arbeitssituationen zwar nicht die Möglichkeit gibt, dass ein scheinbar vernünftig funktionierender Mitarbeiter die Aufgabe / das Team / das Unternehmen aufgrund eines Einzelfehlers möglicherweise unwiederbringlich ruiniert, einige jedoch. Obwohl es (hoffentlich) unwahrscheinlich ist – im schlimmsten Fall könnte der Ausfall einer Festplatte auf dem Computer des betrügerischen Mitarbeiters das Unternehmen zerstören. zB Ähnlich, aber völlig anders – hier kombinierten sich die Aktionen eines Mitarbeiters und der Zeitpunkt des japanischen Erdbebens in Kobe, um die älteste Handelsbank Großbritanniens zu zerstören .
Sie sind vielleicht mit dem vertraut, was auf einer internationalen Website passieren kann, wenn Sie riesige Mengen an Texten veröffentlichen, die für niemanden lesbar sind; von allen möglichen Alternativen ist diejenige die wahrscheinlichste und zutreffendste, die dazu führt, dass verwirrte Leser nicht verstehen, wovon Sie sprechen. Tatsächlich sieht Ihr Schreiben sehr nach automatisch generiertem Text aus, der das Ergebnis eines Chatbots ist, der nur auf algorithmischer und ereignisbasierter Ebene mit Lesern interagiert. Die Tatsache, dass Sie alle Bedenken bezüglich Ihres Schreibstils ignorieren, verstärkt genau diese Idee.
Mit anderen Worten: Ihr Schreibstil ist verwirrend und anstrengend.
@phresnel (1) Es ist erstaunlich, was wir Chatbots heutzutage leisten können :-) . (2) Ich bekomme ein paar ähnliche Antworten von Leuten – ich bin mir nie sicher, wer Trolle sind und wer nicht, also behalte ich mir ein Urteil vor. Die sehr große Mehrheit scheint sehr glücklich zu sein. (3) Betreff "... mit internationalen Seiten vertraut ..." -> Dies ist vielleicht eine Art Hinweis auf meine Kenntnisse - vielleicht auch nicht.
In der Tat erstaunlich ;)