Ich bin der technische Leiter für unser kleines und wachsendes technisches Team. Einer der ersten Mitarbeiter, den wir anstellten, war ein Ingenieur auf mittlerer Ebene und ein wenig neu in der gesamten Software-Ingenieur-Umgebung: Best Practices, Codierungsstandards, automatisiertes Schreiben von Tests usw.
Einige der frühen Dinge, an denen diese Person gearbeitet hat, waren weniger geschäftskritisch, und daher war ich anfangs kein Verfechter von Best Practices, um ihnen Zeit zum Aufholen zu geben. Im Laufe der Monate habe ich jedoch langsam Best Practices gefördert und die Messlatte höher gelegt und war immer sehr klar in Bezug auf meine langfristigen Erwartungen (vollständige Testabdeckung, strikte Einhaltung von Codierungsstandards usw.). Diese Person hat vor kurzem begonnen, an wichtigeren Komponenten zu arbeiten, und deshalb mache ich jetzt tägliche Code-Reviews mit ihnen, um sicherzustellen, dass alles vollständig den Spezifikationen entspricht, bevor es "fertig" ist.
Das Ergebnis davon ist, dass ich ihren Code einige Male für weitere Arbeit zurückgeschickt habe. Einiges davon war für völlige Fehler (und anschließend das Schreiben der fehlenden Tests, die die Fehler hätten abfangen sollen), und einiges davon war eher zukunftssicher oder Änderungen, die es anderen erleichtern, mit dem Code in der zu arbeiten Zukunft. Besonders heute habe ich denselben Code drei- oder viermal zurückgesendet: zunächst für einige Details, die übersehen wurden, und dann mehr, weil die Änderungen, die eingeführt wurden, um meine anfänglichen Bedenken auszuräumen, ihre eigenen Probleme hatten.
Wahrscheinlich nicht überraschend, diese Person fängt eindeutig an, sich von diesem Prozess frustriert zu fühlen. Um es klar zu sagen, meine eigenen Code-Reviews sind nicht einfach "das ist falsch, beheben Sie es", sondern beinhalten eine Menge Details, die erklären, was das Problem ist, warum es in Zukunft Probleme verursachen wird und warum es für alle besser sein wird von uns, es beim ersten Mal richtig zu machen. Ich versuche, der Person zu zeigen, wie wichtig es ist, dies von Anfang an richtig zu machen, auch wenn es dadurch mehr Zeit in Anspruch nimmt. Aus meiner Sicht (ich habe in der Vergangenheit mit vielen großen Codebasen gearbeitet) sind diese Dinge einfach notwendig, um unsere Systeme langfristig zu verwalten. Aus der Perspektive dieser Person bin ich mir jedoch sicher, dass ich als übermäßig wählerisch angesehen werde.
Als technischer Leiter setze ich natürlich die Standards, und ich habe nicht vor, sie zu ändern. Ich möchte dieser Person jedoch helfen, ihre Frustration zu überwinden und diese Dinge so zu sehen, wie ich sie sehe: Wenn wir jetzt nicht die offensichtlichen Dinge verstehen, wird es in einem Monat einfach so viel schwieriger für alle sein etwas muss sich ändern.
Mir kommt in den Sinn, dass dies ein Zeichen dafür sein könnte, dass ich nicht ausreichend (oder gut genug) trainiere. Möglicherweise bin ich auch zu schnell von "Hier sind Dinge zu beachten" zu "Lass uns alles richtig machen, bevor wir weitermachen" übergegangen. In diesem Sinne hier einige konkrete Fragen:
Dieses Thema liegt mir sehr am Herzen (so sehr, dass ich in der Tat meine Geschichte überprüfen musste, um sicherzustellen, dass ich es nicht geschrieben habe)!
Letztendlich widerspreche ich allen Vorschlägen, dass Sie Ihre hohen Standards schleifen lassen. Codierungsstandards bieten einen echten Mehrwert und Sie werfen sie nicht weg, weil sie hart sind ... aber als Lead liegt es in Ihrer Verantwortung, sie lächerlich einfach zu befolgen.
Denken Sie daran, dass dieser Entwickler nicht Sie sind. Er könnte der kompetenteste Entwickler der Welt sein, aber seine Erfahrungen und Vorlieben werden sich (vielleicht stark) von Ihren unterscheiden. Es wird für ihn viel schwieriger sein, nach Ihren Erwartungen zu programmieren, weil Ihre Standards für ihn nicht selbstverständlich sind.
Ich bezweifle, dass Ihr Entwickler frustriert ist, weil er bestimmte Standards erfüllen muss (wenn er das tut, haben Sie ein größeres Problem), wahrscheinlicher beruht seine Frustration auf dem Gefühl, dass er versucht, ein sich bewegendes Ziel zu treffen .
Sie müssen die Dinge für ihn vereinfachen:
Konzentrieren Sie sich auf eine Sache nach der anderen, warten Sie, bis dieser Standard erfüllt ist, und führen Sie dann eine andere ein.
Das Problem ist, dass ihm ein bestimmtes Tempo erlaubt wurde und er jetzt an Standards herangeführt wird, die er zuvor nicht erfüllen musste.
In der Zwischenzeit müssen Sie einige Dinge schleifen lassen. Lassen Sie ihn wissen, dass Sie ihm dabei helfen werden, den Standard zu erreichen, und dass Sie die Dinge vorerst schleifen lassen, aber es ist nur vorübergehend .
Seien Sie geduldig mit ihm, weil er in dieser Situation ist, weil er teilweise wegen Ihnen in diesem Schlamassel steckt. Sie können nicht einfach einen Schalter umlegen und erwarten, dass die Person die Standards erfüllt.
Also zusammenfassend:
Paarprogrammierung könnte helfen. Entwickler (dieser spezielle Kollege und andere) akzeptieren meiner Erfahrung nach Vorschläge in Echtzeit viel leichter als Kritik im Nachhinein. Und es könnte die gegenwärtige Untergebenen-Vorgesetzten-Beziehung (so klingt es) in eine Mitwirkenden-Beziehung verwandeln (wenn auch einige älter als andere). 'Hoffe das hilft!
Als jemand, der seine Karriere als Teilzeit-Codierer beginnt, werde ich versuchen, Ihnen einen Einblick zu geben, wie ich mir wünschen würde, dass mich jemand auf solche Themen ansprechen würde.
Wie kann ich meinem Programmierer helfen, eine positivere Einstellung dazu zu haben, dass ich seinen Code häufig für Änderungen zurücksende?
Wie Sie in Ihrer Frage erwähnt haben, geben Sie ihm bereits ein detailliertes Feedback. Sie beschreiben es so, dass er Ihr Feedback nicht versteht. In diesem Fall kann er es entweder nicht verstehen oder er will es nicht verstehen. Im ersten Augenblick. Sie müssen seine technischen Fähigkeiten überprüfen. Was weiß er, was weiß er in der Partition und was weiß er nicht. Wenn dies geklärt ist, geben Sie ihm eine Anleitung, wo er die benötigten Informationen finden kann, und wiederholen Sie diesen Vorgang für jeden Punkt auf Ihrer Liste.
Im zweiten Fall wird es schwierig sein, ihn davon abzuhalten, frustriert zu sein, da es möglicherweise andere Faktoren gibt, die ihn daran hindern, Ihre Codierungsrichtlinien zu befolgen.
Ist das ein Zeichen dafür, dass ich andere Dinge falsch mache?
Nicht unbedingt. Wenn er sich seiner Fehler bewusst ist, müssen Sie ihn ermutigen. Sagen Sie ihm, dass er abgesehen von den Dingen, die Sie in Ihrem Beitrag erwähnt haben, einen guten Job macht und dass er das verbessern kann (natürlich nur, wenn dies der Fall ist) . Ich würde der Antwort von @The Snark Knight zustimmen, dass Sie ihm nicht alles auf einmal aufzwingen sollten, sondern eine Sache nach der anderen. Stellen Sie jedoch sicher, dass dieser Aspekt verstanden und gut demonstriert wird.
Irgendwelche Vorschläge, wie ich diesen Übergang ein wenig besser glätten könnte?
Was Sie brauchen, ist Zeit und Geduld mit ihm. Was Ihren und seinen Schmerz lindern könnte, ist, ein 4-Phasen-Modell zu erstellen (ich kenne nur den deutschen Begriff und habe keine englischen Links gefunden).
Prüfen Sie bei jeder Aufgabe bzw. Standard, in welcher Phase Sie ihn absetzen und entsprechend handeln würden. Seien Sie sich bewusst, dass einige Leute nicht unbedingt zur nächsten Phase übergehen werden.
Eine allgemeine Anmerkung, die völlig auf Meinungen basiert und nicht als Beleidigung verstanden werden sollte. Ich denke, Sie haben eine großartige Gelegenheit mit ihm verpasst, als Sie ihn die unkritischen Aufgaben lockern ließen, denn wenn Sie ihn damals gedacht hätten, müssten Sie jetzt nicht kämpfen. Wenn ein neuer Mitarbeiter in Ihr Team kommt, stellen Sie sicher, dass Sie von Anfang an Maßstäbe setzen.
Ein Feature so weit zu entwickeln, dass es akzeptiert wird, braucht Zeit. Es dauert weniger Zeit, wenn Sie niedrigere Standards haben, es dauert länger, wenn Sie höhere Standards haben (obwohl erwartet wird, dass die zusätzliche Zeit später durch weniger unvorhergesehene Probleme zurückkommt).
Das Problem, das Sie beide frustriert, ist, dass sich dieser Mitarbeiter derzeit zu sehr darauf konzentriert, schnell zu liefern, und Sie konzentrieren sich darauf, in hoher Qualität zu liefern, und dies kollidiert (ich gehe davon aus, dass die Zeit bis zur Annahme seines Codes nicht das Problem ist, sondern die drei- oder viermal vor und zurück ist). Machen Sie also deutlich, dass eine längere Lieferzeit kein Problem ist, sondern dass er versucht zu liefern, wenn die Arbeit erst zur Hälfte erledigt ist.
Ich denke, der Versuch zu erklären, warum Änderungen vorgenommen werden sollten, könnte zu Frustration führen. Das sollte er wissen. Er könnte von einem Ort kommen, der wegen lächerlicher Fristen unter schlechter Qualität gelitten hat, und tut, was in diesem Umfeld am besten ist – was an Ihrer Stelle nicht angemessen ist.
Das Problem ist nur sein Entwicklungsprozess. Sein Entwicklungsprozess ist derzeit: 1. Code schreiben, der funktionieren könnte (keine offensichtlichen Fehler). 2. Es gibt keinen Schritt 2. Also sagen Sie ihm einfach, dass der Prozess sein sollte: 1. Schreiben Sie Code, der funktionieren könnte (keine offensichtlichen Fehler). 2. Schreiben Sie Tests, die bei Fehlern fehlschlagen würden. 3. Beheben Sie beim Testen gefundene Fehler und wiederholen Sie den Vorgang, bis keine Fehler mehr gefunden werden. 4. Gehen Sie alle Arbeiten durch und machen Sie sie so weit wie möglich wartbar und zukunftssicher. (Man könnte argumentieren, dass diese vier Schritte nicht optimal sind, aber sie sind besser als nur ein Schritt).
Beachten Sie, dass der nächste Job desselben Entwicklers ihn möglicherweise mit einem leitenden Entwickler konfrontiert, der sagt: "Warum verschwenden Sie Ihre ganze Zeit damit, Tests zu schreiben, Ihren Code wartbar und zukunftssicher zu machen, liefern Sie ihn einfach so aus, wie er ist, und lassen Sie die Kunden sich beschweren". Ich hoffe nicht :-(
„Einige der frühen Dinge, an denen diese Person gearbeitet hat, waren weniger geschäftskritisch … Diese Person hat kürzlich begonnen, an wichtigeren Komponenten zu arbeiten … [Ich musste] denselben Code drei- oder viermal zurückschicken … " ... "Lass uns alles richtig machen, bevor wir weitermachen" zu schnell. In diesem Sinne ...
Entwickeln Sie eine dokumentierte Richtlinie, die einfach und leicht zu befolgen ist, und verwenden Sie anerkannte Standards und Verfahren, die:
Es gibt nichts Schlimmeres als die Idee eines Typen : Die Leute werden sagen: "Wo hast du das gelernt?", und die Antwort lautet: "Jemand hat mir gesagt, ich soll das tun." - Eine nicht übertragbare Fähigkeit.
Es gibt nichts Schlimmeres als irgendeinen schlampigen Hack: Die Leute werden sagen "Wo hast du das gelernt?", und die Antwort ist "Jemand hat mir gesagt, ich soll das tun." - Eine nicht übertragbare Fähigkeit.
Es gibt nichts Schlimmeres als die ausgefallene Idiotenform eines Typen: Die Leute werden sagen: "Wo hast du das gelernt?", und die Antwort lautet: "Jemand hat mir gesagt, ich soll das tun. " - Eine nicht übertragbare Fähigkeit.
Nicht übertragbare Fähigkeiten werden nirgendwo anerkannt, außer an dem Ort, an dem sie entwickelt wurden. Sie entstehen aus Menschen, die nie gelernt haben, wie man Dinge richtig macht, die sich ihren Weg durchs Leben rätseln, sie sind Affen-Schreibmaschine und Ingenieurshammer auf ihre Art.
Ich war an vielen Orten, an denen Leute auf mich zukamen, um zu sagen, dass "sie diese Abteilung seit mehreren Jahren leiten" oder "wir machen das seit Jahrzehnten so" - das ändert nichts an der Tatsache, dass dies der Fall ist falsch, es ist ein Fehler, ein Fehler, der nicht fortgesetzt werden sollte.
Ein Teil meiner Einstellungsbedingungen ist: Ich unterrichte keine Grundlagen, und Grundlagen lehren mich nicht (keine Unterbrechungen durch aussehende Lous und bekennende Experten , es sei denn, Sie möchten das Dreifache bezahlen; denn so viel kostet es). Firmeninhaber verstehen das, nachdem sie es von ein paar Dutzend Leuten gehört oder Best Practices gelernt haben, bevor sie ein Unternehmen gründen.
Indem Sie die Dinge richtig tun, wissen Ihre Mitarbeiter, dass das, was sie tun, einen Wert hat (über den gesunden Gehaltsscheck hinaus). Der Versuch, Menschen dazu zu bringen, Dinge zu tun, von denen sie wissen, dass sie falsch sind, für einen gemeißelten Gehaltsscheck, wird immer auf einigen Widerstand stoßen, manchmal auf großen Widerstand.
Einige nützliche Lektüre ist:
Holzmanns „ The Power of Ten – Rules for Developing Safety Critical Code “.
JPLs „ JPL Institutional Coding Standard for the C Programming Language “ (Version: 1.0).
Finden Sie Ihre eigenen Best Practices heraus und erklären Sie, warum das wichtig ist – es hält sie beschäftigt.
Es ist einfach auszuführen und zu rechtfertigen, außerdem gibt es eine spezifische Liste von Dingen, die behoben oder erklärt werden müssen. Dies reduziert Ihre Arbeitsbelastung, Konflikte und ermöglicht ein einfaches Upgrade auf besseren Code.
Es gibt BS-, IEEE-, ISO- und MIL-Standards usw. - verwenden Sie das Zutreffende.
Hier einige konkrete Fragen:
Wie kann ich meinem Programmierer helfen, eine positivere Einstellung dazu zu haben, dass ich seinen Code häufig für Änderungen zurücksende?
Erklären Sie den Unterschied zwischen dem, was sie früher taten, und dem, was sie jetzt tun.
Erklären Sie, dass Sie den Code nicht 3 oder 4 Mal zurücksenden möchten, da es schneller und besser wäre, ihn selbst zu reparieren, was den Zweck zunichte macht, ihn oder jemand anderen tun zu lassen.
Wenn sie eine Beförderung und eine höhere Bezahlung wollen, muss es verdient werden, keiner von Ihnen möchte 3 oder mehr Umschreibungen desselben Codes und das Einführen neuer Probleme (einschließlich Zorn) ist etwas, das nicht fortgesetzt werden kann.
Wenn sie die Arbeit nicht erledigen können, muss dies herausgefunden und eine Entscheidung getroffen werden, wie es weitergehen soll.
Manchmal passieren Fehler, das ist verständlich; Die Babysitterzeit muss in naher Zukunft zu Ende gehen. Mission Critical Code ist wie es sich anhört, weder ein Spiel noch ein Witz.
Ist das ein Zeichen dafür, dass ich andere Dinge falsch mache?
„Um es klar zu sagen, meine eigenen Code-Reviews sind nicht einfach „Das ist falsch, beheben Sie es“, sondern beinhalten eine Menge Details, die erklären, was das Problem ist, warum es in Zukunft Probleme verursachen wird und warum es besser sein wird uns allen, es gleich beim ersten Mal richtig zu machen. Ich versuche, der Person zu helfen, zu erkennen, wie wichtig es ist, dies von Anfang an richtig zu machen, auch wenn es dadurch mehr Zeit in Anspruch nimmt.“
Es sieht nicht so aus, als wäre es deine Schuld, außer dem Teil mit dem Übererklären und Babysitten; Vielleicht haben Sie sie zu schnell befördert, das könnten wir Ihnen vorwerfen. Der Eigentümer zahlt genug, nicht wahr?
Irgendwelche Vorschläge, wie ich diesen Übergang ein wenig besser glätten könnte?
Ich schätze, Sie müssen sich etwas zurücknehmen, was ihnen zugeteilt wird, und mehr Zeit dafür einplanen.
Wenn sie einen fertigen Job abgeben, geben Sie das Ganze zurück und sagen Sie, dass Sie sie dazu befördern, ihre eigene erste Codeüberprüfung durchzuführen, und hier sind zusätzliche X Stunden dafür.
Wenn das besser wird, waren die Fristen zu kurz, wenn es nicht besser ist, zu erklären, dass X Stunden zusätzlich angeboten wurden, aber es gibt immer noch eine unannehmbare Anzahl von Problemen.
Das könnte Ihre Arbeitsbelastung durch mehrere Überprüfungen verringern und sie weniger gestresst zurücklassen; eine Win-Win-Situation.
Manche Menschen haben einfach ein Niveau, das „gut genug“ ist, sie sind kurzsichtig und können nicht darüber hinaus sehen. Jegliches Anstacheln oder Erklären über das hinaus, was sie wissen, wird einfach abgelehnt, das ist etwas, wofür Sie nicht bezahlen möchten (im Voraus oder zurück vom Kunden).
Wenn sie "ein mittlerer Ingenieur" sind, sollten sie verstehen, was Sie sagen. Wenn sie weniger als 6 Monate von der Schule entfernt sind, tun sie dies möglicherweise nicht. Vielleicht erfreuen sie sich einfach daran, dass mit der Zeit alles einfacher wird ...
Jesaja3015
AI Breveleri
Conor Mancone
Neoares
Dan
UKMonkey