In der Frage Umgang mit meinen veralteten Mitarbeitern diskutierten verschiedene Personen Strategien für den Umgang mit Mitarbeitern, die nicht bereit sind , ihren Workflow in den des Teams zu integrieren.
Ich möchte, wenn möglich, einige Strategien für „Lehre“ ein Mitarbeiter lernen , die nur ist unwissend von modernen Techniken und Werkzeugen, und möglicherweise ein wenig apathisch.
Ich habe angefangen, mit einem Programmierer zu arbeiten, der bis vor kurzem in einem anderen Teil des Unternehmens in relativer Isolation gearbeitet hat. Er verfügt über umfassende Fachkenntnisse und vor allem über gute Fähigkeiten zur Problemlösung , die vielen Kandidaten zu fehlen scheinen.
Der tatsächliche (C #) Code, den ich gesehen habe, ist jedoch ein Rückfall auf die VB6-Tage. Prozedurale Struktur, ungarische Notation, globale Variablen (Missbrauch von static
), keine Schnittstellen, keine Tests, keine Verwendung von Generika, Werfen System.Exception
... Sie bekommen die Idee.
Dieser Programmierer ist ein bisschen älter als ich und sucht zumindest nach dem ersten Eindruck nicht aktiv nach einer positiven Veränderung. Ich werde nicht sagen , dass ich gegen Veränderungen resistent bin , denn ich denke, das ist hauptsächlich eine Frage, wie das Thema angesprochen wird , und ich möchte darauf vorbereitet sein.
Programmierer neigen dazu, hartnäckige Leute zu sein, und es ist sehr wahrscheinlich, dass sie nicht das Endergebnis erzielen, das ich will , wenn sie mit brennenden Waffen und der Einführung von Codeüberprüfungen und strikt durchgesetzten Richtlinien vorgehen. Wenn dies eine neue Einstellung wäre, ein Juniorprogrammierer, würde ich nicht zweimal überlegen, ob ich eine "Mentor" -Stellung einnehmen soll, aber ich bin äußerst vorsichtig, einen erfahrenen Mitarbeiter als ahnungslosen Neuling zu behandeln (was er nicht ist - er hat es einfach nicht) mit bestimmten Fortschritten auf dem Gebiet Schritt gehalten).
Wie könnte ich vorgehen, um den Code-Qualitätsstandard dieses Entwicklers auf die Weise von Dale Carnegie anzuheben, durch sanfte Überzeugung und immaterielle Anreize? Was wäre die beste Strategie, um subtile, schrittweise Änderungen vorzunehmen, ohne eine kontroverse Situation zu schaffen?
Waren schon andere Leute - insbesondere leitende Entwickler - in einer solchen Situation? Mit welchen Strategien konnte das Interesse geweckt und eine positive Gruppendynamik erzeugt werden? Welche Strategien waren nicht erfolgreich und sollten besser vermieden werden?
Klarstellungen:
Ich habe wirklich das Gefühl, dass mehrere Personen aufgrund persönlicher Gefühle antworten, ohne alle Details der Frage zu lesen. Bitte beachten Sie das Folgende, das hätte impliziert werden sollen, aber ich mache es jetzt explizit:
Dieser Mitarbeiter ist aufgrund seines Alters nur mein "Senior". Ich habe nie gesagt, dass sein Titel, sein Einflussbereich oder seine Jahre in der Organisation meinen übersteigen, und tatsächlich ist keines dieser Dinge wahr. Er ist ein LOB-Programmierer, der in die Hauptentwicklungsabteilung aufgenommen wurde. Das ist es.
Ich bin kein Neuling, Junior-Programmierer oder anderer naiver Idiot mit großen Plänen, das Unternehmen über Nacht zu verändern. Grundsätzlich bin ich für den Softwareprozess verantwortlich, aber so viele, die als "Leads" gearbeitet haben, wissen, dass Verantwortlichkeiten nicht immer genau mit dem Organigramm korrelieren.
Ich frage die Leute nicht , wie sie meinen Weg finden sollen . Ich könnte das tun, wenn ich wollte, mit dem Nettoergebnis, dass diese Person ärgerlich wird und / oder aufgibt. Bitte versuchen Sie zu verstehen, dass ich nach einer sozialen , kooperativen Methode suche, um Veränderungen voranzutreiben.
Die Erwähnung von "... globalen Variablen ... keine Tests ... werfen
System.Exception
" sollte zeigen, dass die Probleme nicht nur oberflächlich oder ästhetisch sind . Praktiken, die für relativ kleine CRUD-Apps funktionieren, funktionieren möglicherweise nicht unbedingt für große Unternehmens-Apps, und tatsächlich hat bisher keiner der Codes die Integrationstests bestanden.
Bitte nehmen Sie die Frage zum Nennwert, akzeptieren Sie, dass ich tatsächlich weiß, wovon ich spreche, und beantworten Sie entweder die Frage, die ich tatsächlich gestellt habe, oder fahren Sie fort.
PS: Mein aufrichtiger Dank gilt denen, die konstruktive Ratschläge gegeben haben, anstatt mit der Prämisse zu streiten. Ich werde dies noch eine Weile offen lassen, da ich hoffe, mehr über die Erfahrungen der realen Welt zu erfahren.
Antworten:
Ausgangspunkt ist das Kennenlernen Ihres Publikums . Sie scheinen dies bereits zu verstehen, weil Sie den Unterschied zwischen der Betreuung eines Junior-Mitarbeiters und der Beeinflussung eines Senior-Mitarbeiters kennen.
Sie müssen noch herausfinden, was diese bestimmte Person motiviert. Was bei einem alten Knacker (wie mir) funktioniert, funktioniert bei Ihrem alten Knacker möglicherweise nicht.
Wenn er gerne andere unterrichtet, können Sie sich einem Problem mit Fragen wie "Warum machen Sie das so?" Nähern. Das kann zu einem Dialog führen, in dem Sie ihn bitten können, neuere Ansätze zu bewerten und seine Meinung zu äußern.
Wenn das nicht funktioniert, können Sie auf Fehler hinweisen, die vermieden werden können, indem Sie die Methoden oder Stile verwenden, die er übernehmen soll. Dies erfordert viel mehr Arbeit, da Sie die Fehler finden und zeigen müssen, wie das Verhalten, das Sie fördern möchten, helfen würde.
Wenn er bereit zu sein scheint, anderen zu helfen, könnten Sie seinen Wunsch ansprechen, den Neulingen zu helfen . Erklären Sie, dass "Kinder heute" nicht daran gewöhnt sind, seinen Codierungsstil zu sehen, und dass dies die Wahrscheinlichkeit erhöht, dass sein Code dadurch beschädigt wird.
Manchmal muss man ihm nur ins Gesicht sehen und die Angelegenheit erzwingen. Sie müssen diese Schlachten sorgfältig auswählen. Beginnen Sie mit einem Thema, von dem Sie wissen, dass Sie ihm beweisen können, dass Sie einen besseren Weg haben.
quelle
Foo
Objekt mit globalem Geltungsbereich zu verwenden ?" Ich sehe nicht voraus, dass dies als Angriff interpretiert wird. Ich bin es, der versucht, das existierende Design zu verstehen.Ich denke, dass Sie die richtige Einstellung haben. Stellen Sie einfach sicher, dass Sie darauf hinweisen, all die netten Dinge zu sagen, die Sie bereits gesagt haben - großartige Fähigkeiten zum Lösen von Problemen, hervorragende Kenntnisse des Geschäfts usw., und bitten Sie ihn nur um ein wenig Zeit, um ihm den aktuellen Standard der Gruppe zu zeigen Verwenden Sie und geben Sie ihm die Gelegenheit, einige Fragen zu stellen.
Wenn Sie sich treffen, bringen Sie ihm einen Kaffee oder etwas, und lassen Sie ihn wissen, dass das Einhalten der Standards ihm hilft, indem es ihm leichter fällt, Ihren vorhandenen Code zu unterstützen, und es auch erleichtert, dass jemand ihm helfen kann, wenn er es tut wird in der Arbeit abgedeckt (ein großes Plus für jemanden, der isoliert gearbeitet hat), etc.
Stellen Sie sicher, dass er engagiert ist und gute Erklärungen dafür erhält, warum Sie die Dinge tun, die Sie tun, und konzentrieren Sie sich nicht darauf, warum er die Dinge, die er getan hat, nicht tun sollte. Bringen Sie andere Leute mit, wenn Sie müssen, und lassen Sie sie es Ihnen erklären. Stellen Sie sich anschließend zur Verfügung, wenn er Fragen hat, und geben Sie einige Stellen an, auf die er sich beziehen kann, um Beispiele für Ihre Standards zu erhalten.
Wenn er danach nicht interessiert ist, können Sie sich auf die erste Frage beziehen, die Sie verlinkt haben.
quelle
Es ist wirklich die Aufgabe Ihres Managers
Wenn Ihr Vorgesetzter dies nicht selbst merkt, ist er nicht für seinen Job qualifiziert. Und wenn ja, sollten Sie ihnen einen Anstoß über die beiden oben geben. Die Vorteile eines Kodierungsstandards sind so vielfältig, dass es wirklich keine Argumente gegen einen gibt. (Wenn einige Programmierer das Gefühl haben, "Künstler" zu sein und nicht an die Grenzen der Professionalität gebunden zu sein, sollten sie stattdessen einen Job in der bildenden Kunst bekommen.)
Der Kodierungsstandard an sich sollte sich in erster Linie darauf konzentrieren, gefährliche Praktiken und gefährliche Bibliotheksfunktionen zu verbieten. Arbeiten Sie auf eine sicherere und reinere Untergruppe der von Ihnen verwendeten Sprache hin. Halten Sie den Codierungsstandard frei von "Codierungsstil", da der Codierungsstil weitaus schwieriger zu vereinbaren und bei weitem nicht so wichtig ist. Es ist ziemlich klassisch, dass sich ein Unternehmen für einen Kodierungsstandard entscheidet und dann sofort in einer heftigen Unsinndiskussion feststeckt, wo die {} Klammern platziert werden sollen.
Lesen Sie als Referenz, wie die Standards MISRA-C / C ++ und CERT C / C ++ / Java geschrieben wurden.
quelle
Zunächst müssen Sie klären, WARUM Sie die Arbeitsweise dieser Person ändern möchten. Wenn es nur aus ästhetischen Gründen ist, sollten Sie es sich überlegen, denn diese Person hat gezeigt, dass ihre Arbeitsweise tatsächlich funktioniert.
Wenn es jedoch einen technischen Grund dafür gibt, sollten Sie darüber nachdenken, sich mit etwas wie Folgendem an diese Person zu wenden:
Beachten Sie, dass dies niedrig hängende Früchte sein sollten, da sie höchstwahrscheinlich eine Änderung bestehender Gewohnheiten erfordern, die immer zusätzlichen Aufwand erfordern.
Selbst wenn Sie eine Unmenge von Vorschlägen haben, wählen Sie einfach einen oder zwei aus und zeigen Sie, dass dies eine Veränderung zum Besseren sein wird.
Entweder funktioniert dies, und Sie werden gefragt, ob Sie weitere Vorschläge haben, oder es wird nicht funktionieren, und dann ist der Schaden auf ein oder zwei Vorschläge beschränkt.
Beachten Sie, dass es sehr wichtig ist, dass es ein Erfolg wird und es schnell erledigt.
Auch müssen Sie vorsichtig sein. Es mag sehr gute Gründe dafür geben, Dinge so zu machen, wie sie gemacht werden, aber Sie sind zu neu, um zu verstehen, warum. Seien Sie daher respektvoll gegenüber Ihrem Ältesten und fragen Sie, bevor Sie davon ausgehen, dass Ihr Vorschlag besser ist. Sie könnten ein oder zwei Dinge lernen.
quelle
Ich möchte Sie dringend davon abhalten, ihm ins Gesicht zu sehen, da sich die Situation dadurch sehr schnell verschlechtern würde. Mir ist klar, dass es sich um eine letzte Maßnahme handelt, aber meiner Erfahrung nach hat der Entwickler zu diesem Zeitpunkt die Teilnahme praktisch eingestellt.
Das Erzwingen des Problems könnte die Person in einen Feind verwandeln, in dem sie mit jeder Ihrer Aktionen kämpft. Das hätte wirklich negative Auswirkungen auf das Team und hört nicht auf, bis jemand aufgibt oder entlassen wird.
Wenn diese Person wirklich Domänenwissen hat, das Sie benötigen / möchten, lassen Sie sie dieses Wissen dokumentieren.
quelle
Beginne damit, es ihm sanft zu sagen: Ich weiß nicht, wie erfahren und wie gut du darin bist, Feedback zu geben. Sie könnten ja schon folgendes wissen, anstellen oder sogar abgelehnt haben, aber hier geht es trotzdem. Es gibt einige Richtlinien, wie Sie Feedback geben können, wenn Sie das Verhalten einer Person ändern möchten. Die Konversationsstruktur, über die ich nachgedacht habe und die ich immer noch in Situationen einsetzen möchte, in denen ich Feedback geben möchte (weil sie funktionieren), sind die folgenden:
Eine schnelle Quelle für Feedback finden Sie beispielsweise unter http://managementhelp.org/communicationsskills/feedback.htm (obwohl es im Internet eine Unmenge solcher Dinge gibt).
Was nun den Lösungsteil betrifft, so ist er nach dem, was ich in Ihrer Antwort lese, ziemlich schlau und hat die richtige Einstellung, aber er ist in modernen guten Praktiken nur im Rückstand. Diese erfordern Zeit und Mühe, um sie zu meistern, abgesehen davon, dass Sie sie tatsächlich kennenlernen. Sie müssen ihm also die Möglichkeit geben, dies zu tun. Das bedeutet wahrscheinlich, Lernressourcen (Web, Magazin, Bücher usw.) als Ausgangspunkt zu sammeln und ihm Zeit zum Lernen zu geben. Ich könnte mir vorstellen, ihn jeden Freitagnachmittag zu geben, um seinen Horizont für den Programmierstil zu erweitern, wo er alles tun kann, was seiner Meinung nach diese Ziele fördert. Die Menschen wollen sich von Natur aus verbessern. Stellen Sie die Materialien und die Zeit zur Verfügung, und sie werden sie gut nutzen.
Am wichtigsten ist möglicherweise, dass Sie nicht über Nacht mit Veränderungen rechnen müssen. Er hat lange Zeit alles auf seine Art gemacht und ist wahrscheinlich ziemlich gut darin geworden. Es wird einige Zeit dauern, bis er auf eine neue Art und Weise so gut wird, und für eine Weile wird er wahrscheinlich nicht viel Wert auf neue Art und Weise sehen, denn am Anfang gibt es keine. Sein alter Weg wird wahrscheinlich für eine Weile effektiver sein.
* Hinweis: Das Lustige an Gesprächen ist, dass sie sehr schwer zu modellieren sind. Sie haben ein Eigenleben, und obwohl es auf dem Papier gut aussieht, neigt es dazu, ein bisschen matschig zu werden.
quelle
Erklären Sie, wie Sie die Dinge erledigen möchten, und zeigen Sie ihm, wie es mit den Design- und Architekturentscheidungen funktioniert, die Sie zu Beginn des Projekts getroffen haben, an dem er arbeiten wird. Setzen Sie sich eins zu eins (und privat) und erklären Sie die Probleme, die Sie in seiner vorherigen Codierung gesehen haben, und warum sie ein Problem für dieses Projekt sind. Fragen Sie ihn, was er braucht, um besser zu werden, aber stellen Sie klar, dass es keine Option ist, nicht besser zu werden.
Verwenden Sie dann die Codeüberprüfung als Werkzeug, um ihn zu veranlassen, seine Arbeitsmethoden anzupassen. Planen Sie eine gute Zeit für den ersten ein und sprechen Sie wirklich darüber, warum Sie dies dem vorziehen und lassen Sie ihn seine Argumentation erklären. Stellen Sie sicher, dass Sie ihm wirklich zuhören. Die Menschen können sich besser verändern, wenn sie das Gefühl haben, dass ihre Bedenken ausgeräumt wurden. Erwarten Sie in Ihrer Planung (aber sagen Sie ihm das nicht), dass Sie die erste Aufgabe überarbeiten und nicht annehmen, bis sie den Standards Ihres Teams entspricht. Sobald er weiß, was Sie erwarten und dass Sie es nicht im Interesse der Zeit verrutschen lassen, wird er wahrscheinlich zu Ihrer Arbeitsweise kommen. Möglicherweise möchten Sie die Codeüberprüfung jedoch als Lehrmittel für mehrere Iterationen verwenden. Sie müssen nicht böse sein, wenn Sie die Arbeit nicht akzeptieren, bis sie Ihren Standards entspricht, aber Sie müssen sie konsequent und konsequent umsetzen. Don'
quelle
Die 64.000-Dollar-Frage ist, ob er seine Projekte pünktlich liefert und die Funktionsanforderungen erfüllt. Wenn ja, macht er es richtig. In der Softwareentwicklung gibt es keinen objektiven Weg nach rechts oder nach rechts. Letztendlich geht es darum, Probleme zu lösen. Und wenn Probleme zur Zufriedenheit des Kunden gelöst werden, dann wird die Softwareentwicklung per Definition korrekt durchgeführt.
Es wird eine ganz andere Frage natürlich , wenn seine Projekte Arent abgeschlossen. An diesem Punkt müssen Änderungen von Ihren Vorgesetzten vorgenommen werden, möglicherweise mit Ihrer Eingabe. Aber nur weil er Ihren persönlichen Sinn für Code-Ästhetik oder die heutige konventionelle Weisheit verletzt, heißt das noch lange nicht, dass er "falsch" ist. Sie sind nicht der Schiedsrichter der Definition von 'gutem Code'. Er könnte immerhin eine geringe Meinung zu Ihrem Code haben.
Also ... wenn es nicht tatsächlich ein Problem mit seiner Arbeit gibt (was Sie nicht angegeben haben), tun Sie nichts. Ein Teil des Erfolgs eines Entwicklers besteht darin, zu lernen, Ihren Code mit den Stilen anderer Entwickler zusammenzuführen.
Er könnte schließlich hierher kommen und eine ähnliche Frage zum Umgang mit einem weniger erfahrenen Entwickler stellen, der sich mehr darum kümmert, mit Modeerscheinungen Schritt zu halten, als Projekte abzuschließen. Es geht nur um Perspektive.
quelle
Als Junior-Entwickler im Gespräch mit einem Senior-Entwickler ist es zu riskant, ihn mit besseren Ideen als seinen eigenen anzusprechen.
Der beste Weg, um damit umzugehen, besteht darin, zu versuchen, Ihren / seinen Chef von einer besseren Vorgehensweise zu überzeugen und herauszufinden, ob er es zu einem Dekret machen wird, dass der gesamte Code bestimmten Standards folgen und durch Peer-Code-Überprüfungen nach diesen Standards durchgesetzt werden muss.
Ein beträchtlicher Teil der Menschen ist (auch wenn sie unterbewusst sind) rachsüchtig, egoistisch und defensiv, auch wenn sie sich ihrer eigenen unterbewussten Motive nicht bewusst sind. Sie werden beleidigt, wenn Sie versuchen, sie zu ändern oder implizieren, dass sie falsch sind sowieso.
Die Befehlskette ist der sicherste Weg, weil er auf seinen Chef hören muss und ihn auch nicht mögen muss. Lass den Chef der Böse sein, dafür ist er da.
Wenn Sie den Chef nicht verkaufen können oder er der Chef ist, dann gehen Sie einfach mit seinen Fehlern um und gehen Sie in IHREM Code mit gutem Beispiel voran.
quelle
Das kannst du nicht.
Sie können Menschen nicht dazu inspirieren, Dinge zu tun, die sie bei der Softwareentwicklung nicht kennen. Ich spreche aus Erfahrung, weil ich dies in meiner Karriere oft versucht habe, und jedes Mal führt dies dazu, dass mein eigener Status in den Augen des Unternehmens abnimmt. Ich bin sogar entlassen worden oder habe frustriert aufgehört, nachdem nichts passiert ist, nur weil ich versucht habe, die Entwicklungskultur um mich herum durch moderne Praktiken zu verbessern.
Wenn Ihr Mitarbeiter nicht unwissend war, können Sie es ihnen zeigen. Sie können jedoch nichts tun, da sie nicht in der Lage sind oder sich nicht genug um Software-as-Craftmanship kümmern, um nach besseren Codierungspraktiken zu streben. Wenn du es versuchst, werden sie es entweder ignorieren oder herumalbern, ohne wirklich zu verstehen, was aus den Geräuschen, die sie bereits machen, hervorgeht ("Trial and Error Development", dh einfach im Code herumhacken, bis die Fehler aufhören). .
quelle