Frage:
Behandeln Sie Kritik an frühem Code beim Start
AnotherWorker
2019-10-26 22:30:55 UTC
view on stackexchange narkive permalink

Vor einem Jahr habe ich angefangen, in einem sehr agilen Startup zu arbeiten. Ich war der erste nicht-interne Entwickler, der beigetreten ist, und habe eng mit dem CTO zusammengearbeitet, um eine Beta-Version einer Pipeline und eines Produkts zusammenzustellen. Aufgrund der erforderlichen Geschwindigkeit und der bisher unerforschten Domain haben wir etwas Uneinheitliches erstellt, das jedoch funktioniert. Viele Dinge wurden übersprungen, einschließlich Tests und Dokumentation (es gab wirklich keine Zeit).

Jetzt sind einige Monate vergangen da haben sich ein paar andere entwickler angeschlossen. Sie sind keine Full-Stack-Entwickler, daher hat jeder von ihnen die Verantwortung für einige Teile meines Codes. Ihre Bereiche überschneiden sich jedoch nicht. Dies macht sie zu idealen Mitarbeitern, da jeder die Arbeit des anderen nicht wirklich kritisieren kann.

Was ich jetzt stattdessen sehe, ist ständige Kritik an allem, was ich entwickelt habe. Ohne Rücksicht auf die erforderliche Geschwindigkeit oder das mangelnde Wissen in diesem Bereich.

Ich habe versucht, mit dem CTO zu sprechen, aber er sagt nur, dass sie lernen und besser werden, was ich denke ist, dass er sich einfach nicht mit diesen Angelegenheiten befassen will.

Hat jemand eine Idee, wie er mit dieser Situation umgehen soll, ohne jeden Tag in Angst und Furcht zu leben?

Haben Sie sich mit den neuen Entwicklern zusammengesetzt und über Kompromisse beim Zeitplan gesprochen?
"Aber ihre Bereiche überschneiden sich nicht. Dies macht sie zu idealen Mitarbeitern, da jeder die Arbeit des anderen nicht wirklich kritisieren kann."** Das hast du genau rückwärts **.Kritik ist gut und letztendlich notwendig.Wenn Sie jemals aus der Prototypenphase herauswachsen möchten, sollte Ihr Ziel darin bestehen, den Code zu verbessern und nicht zu verteidigen.Ihre Mitarbeiter müssen durchsehen, * verstehen * und Probleme im Code des jeweils anderen finden.Andernfalls wiederholen Sie einfach den ursprünglichen Fehler und wachsen nie über die Einstellung eines Proof-of-Concept hinaus, "schnell handeln und später aufräumen".
Das Problem hier ist meiner Meinung nach das Management.Das Startup ist sehr klein und der CTO möchte es "flach" halten (wie ich zuvor geschrieben habe, ist dies nicht wirklich sinnvoll, es werden schließlich keine Hierarchien eingerichtet).Ich habe mit dem CTO darüber gesprochen, aber es passiert nichts wirklich. Ich denke, sie sind glücklich, wenn die Leute nur arbeiten und nicht in unangenehme Diskussionen geraten müssen.Ich werde mich behaupten und versuchen, dies so zen wie möglich zu nehmen, aber ich kann mich entscheiden, woanders hinzugehen, ich bin nicht gebunden und ich würde eine humanere Umgebung bevorzugen
@ChrisStratton Ja, ich glaube nicht, dass ein Entwickler wirklich wachsen kann, bis er aktiv mit seinen Kollegen an der Codeüberprüfung teilnimmt (sowohl Überprüfung als auch Überprüfung).Eine Umgebung, in der Entwickler dies nicht aktiv tun können, scheint noch mehr Probleme für die Zukunft zu speichern.
Um den Kommentar von @ChrisStratton hinzuzufügen und Ihnen vielleicht auch ein Argument für das Management zu geben: Kritisches Wissen nur im Kopf einer einzelnen Person zu haben, kann wirklich problematisch sein.Ich würde vorschlagen, den Busfaktor (https://en.wikipedia.org/wiki/Bus_factor) nachzulesen und dann zu versuchen, eine gewisse Überlappung zwischen Bereichen zu erzeugen.
Sieben antworten:
PeteCon
2019-10-26 23:20:51 UTC
view on stackexchange narkive permalink

Sie haben eine taktische Entscheidung getroffen, technische Schulden zu akzeptieren, um ein funktionsfähiges Endprodukt zu liefern. Sie haben aus einem leeren Blatt Papier gearbeitet und etwas gemacht, das gut genug ist, dass Kunden und Investoren es verwenden möchten. Seien Sie stolz darauf - es sollte eine der ersten Zeilen in Ihrem Lebenslauf sein.

Jetzt wächst das System in der Reife. Es kommen andere Entwickler hinzu, die einen objektiven Blick auf die Entwicklung werfen und (möglicherweise gültige) Ideen zur Verbesserung haben.

Ihre Rolle besteht jetzt nicht darin, ein Code-Affe zu sein. Ihre Position ist es, sich zu erheben und Ihre Programmierer zu verwalten. Sie haben Domänenkenntnisse, die sie nicht kennen - Sie wissen, warum bestimmte Entscheidungen getroffen wurden. Sie sollten sich frei fühlen, mit Ihnen Ideen zu diskutieren, wie das Produkt besser gemacht werden kann - schneller, funktionaler, sicherer, skalierbarer. Wenn ein Entwickler Ihnen diese Vorschläge nicht gibt, sind sie möglicherweise nicht der richtige Entwickler für die Position.

Es ist schwer, Kritik zu üben, wenn es "Ihr Baby" ist, aber wenn Sie es unter dem Gesichtspunkt betrachten, dass wenn das System gut ist, jeder einen Job hat und Geld verdient, dann werden Sie das sehen Die Entwickler drängen alle in die gleiche Richtung (wenn nicht, stellen Sie sicher, dass es die Ausgangstür ist, gegen die sie drücken). Selbst wenn Ihre gesamte Codebasis neu geschrieben wird, sind Sie immer noch die Person, die die erste Version geschrieben hat.

Vielen Dank für Ihren Kommentar, das weiß ich wirklich zu schätzen!Ich bin mehr als bereit, "mein Baby" komplett neu schreiben zu lassen, wenn dies notwendig ist.Ich wünschte nur, die Kritik wäre eher konstruktiv als hart.Ich selbst versuche damit umzugehen, dass meine Kollegen zu jung sind, um zu verstehen, was Agilität wirklich bedeutet, dh kein Modewort, um Investoren anzulocken, sondern eine Mentalität, die wie alles andere Vor- und Nachteile hat
Egal, ob Sie es sind oder wer auch immer ihr Manager ist, es könnte sich lohnen, 1 gegen 1 einzurichten, wenn es keine gibt.Besprechen Sie währenddessen mit ihnen die Bedeutung von Soft Skills und emotionaler Intelligenz.Sie möchten, dass Ihre Entwickler Code auf eine vorteilhafte Weise kritisieren können.Nur zu sagen, dass dieser Code stinkt, hilft niemandem.Sie sollten in der Lage sein, mit Ihnen über den Code zu diskutieren, und zwischen Ihrem Domänenwissen und ihrem Fachgebiet sollten Sie in der Lage sein, den Code weiter zu verbessern.
@AnotherWorker Obwohl ich der Meinung bin, dass es vorzuziehen ist, konstruktive Kritik zu äußern, bedeutet Agilität nicht "den Prototyp live verwenden und die Tests überspringen", um "agil" im Sinne eines schnellen Markteintritts zu sein.Im Gegenteil, wenn überhaupt, bedeutet Agilität, schnell und häufig zu testen (und zu scheitern), um sich schnell zu verbessern.An einer harten Situationsanalyse ist auch nichts auszusetzen, solange es um das Produkt geht, nicht um die Person, die sich auf den Weg zur Verbesserung konzentriert.Es ist besser, frühzeitig zu entscheiden, dass eine Komponente wirtschaftlich nicht verwertbar ist, und sie neu zu schreiben, als beispielsweise solche Entscheidungen herauszuziehen.
Arthur Hv
2019-10-26 23:26:06 UTC
view on stackexchange narkive permalink

Ich bezweifle, dass sich das Klima verbessern würde, wenn Sie sagen würden, dass Sie diese Kritik persönlich nehmen und möchten, dass sie aufhört, oder wenn Sie die Angelegenheit eskalieren. Sie könnten gewinnen, dass sie aufhören, offen zu kritisieren, aber das ändert nichts an ihrer Meinung und wirkt sich nachteilig auf Ihre Beziehung als Kollegen aus.

Die Kritik an der Arbeit des anderen Entwicklers ist ganz und gar Teil der Entwicklerkultur man muss damit umgehen, dass es nicht immer konstruktiv oder taktvoll gemacht wird. Wenn ihnen das Verständnis fehlt, können Sie sie mit Gründen erziehen, aus denen Sie solche Opfer gebracht haben. Indem Sie sie an die hohe Sterblichkeitsrate von Startups erinnern, können Sie ihnen helfen, zu erkennen, dass Dinge über der Codequalität, wie z. B. Gelddruck, sehr real sind.

Versuchen Sie als praktischen Rat, sich von Ihrer Arbeit zu trennen und Nehmen Sie Bemerkungen leicht, solange nichts über Ihre Professionalität impliziert ist. Wenn Sie das Gefühl haben, dass sie negativ werden, können Sie versuchen, sie in Richtung Positivität zu führen, indem Sie die Bemerkungen "xxx-Code riecht" mit "wir / Sie haben die Chance, dies zum JJJ-Datum zu verbessern" beantworten.

Danke für den Kommentar!Ich stimme dem zu, was du sagst, es ist einfach verdammt schwer!Ich möchte mich in keiner Weise revanchieren, indem ich ihre Fehler ausnütze (weil sie sie auch machen, obwohl sie darüber lachen), da ich keinen Teufelskreis bilden möchte.Ich versuche immer höflich zu sein, weil ich weiß, dass wir uns alle in einer sehr schnelllebigen Umgebung befinden
Goose
2019-10-27 05:45:34 UTC
view on stackexchange narkive permalink

Sie können darüber hinwegkommen. Der Code, den sie kritisieren, ist derselbe Code, der die Möglichkeit eröffnet hat, zusätzliche Entwickler einzustellen (auch bekannt als sie). Ohne sie gibt es keinen Grund für sie, dort zu sein.

Kurzgeschichte ist, dass Entwickler da sind, um den Code zu verbessern (dieselbe Geschichte überall sonst). Wenn es etwas nicht tut, was es sein sollte, erstellen Sie Code, um es zu tun. Wenn es kaputt ist, beheben Sie es. Wenn sie lange genug warten, geben sie dort Code ein, damit andere ihn kritisieren können.

Koenigsberg
2019-10-27 00:56:26 UTC
view on stackexchange narkive permalink

Stimmen Sie der Antwort von @PeteCon zu.

Möglicherweise wechseln Sie in einen Verteidigungsmodus, da dies Ihr Code ist und in gewisser Weise Ihre Fähigkeiten widerspiegelt. Sie sagen, es gibt keine Rücksicht auf die Einschränkungen, mit denen Sie zum Zeitpunkt des Schreibens konfrontiert waren, aber das spielt keine Rolle. Schlechter Code ist schlechter Code. Wenn Sie etwas Funktionales erstellt haben, das jedoch nicht gewartet werden kann, müssen Sie ein Refactoring durchführen. Dies bedeutet nicht, dass das Herausgeben von etwas, das in kurzer Zeit funktioniert, kein Erfolg war.

Wie in der anderen Antwort erwähnt, müssen Sie die Vollzeitcodierung beenden und in die Verwaltung von Ressourcen übergehen. Ich bin auch nicht der Meinung, dass Ihre Entwickler an streng getrennten Teilen Ihrer Codebasis arbeiten - das ist es nicht! Wenn Sie Dinge wie Codeüberprüfungen effektiv übernehmen möchten, bei denen Entwickler beginnen können, die Zusammenführungsanforderungen der anderen zu überprüfen, sollten sie mit der Codebasis vertraut sein, die sie überprüfen. Außerdem erstellen Sie Wissensinseln, und wenn einer Ihrer Entwickler schließlich abreist, wird niemand verstehen, wie ihre Implementierungen funktionieren, da niemand mit seinem Teil der Codebasis gearbeitet hat und niemand die Qualität, Lesbarkeit und Dokumentation seines Codes sichergestellt hat via review.

Ich möchte eine Erfahrung teilen, weil sie Ihrer Geschichte sehr ähnlich klingt.

Die Geschichte der technischen Schulden

Damals bin ich einem Tech-Startup beigetreten. Es war mein zweiter Teilzeit-IT-Job, ich besuchte zu dieser Zeit noch die Universität. Das Team war großartig und ich mochte meine Aufgaben, aber es gab einige organisatorische Probleme.

Der leitende Entwickler war eine der größten und erfahrensten Personen, mit denen ich je gearbeitet habe. Sehr kompetent, sehr kompetent. Ihre Projekte waren auch ihr Baby. Ich vermute, sie hätten eine viel bessere Position mit einem viel höheren Gehalt einnehmen können, aber sie haben ihr Projekt geliebt und bleiben meines Wissens bis heute dort. Es wurde auch mit erstaunlicher Geschwindigkeit abgepumpt, schneller als ich es hätte tun können, aber es war mit einer Menge technischer Schulden verbunden.

Im Laufe der Zeit schlossen sich mehr Studenten und Nicht-Studenten den Entwickler-Reihen an, aber der Vorsprung blieb bestehen Arbeiten an der Codebasis, weil sie das gerne gemacht haben und ich verstehe das. Aber mit immer mehr Projekten fingen sie gerade an zu brennen. Später und später abends, um dies zu beenden, um dies zu beenden, um Server am Wochenende, im Urlaub, während des Krankenstands usw. zu codieren und zu warten.

In der Zwischenzeit gab es in den Unternehmensrichtlinien keine Überprüfungs- oder Testprotokolle . Einige Entwickler selbst haben den Lead um weniger Codierung und mehr Verwaltung gebeten, weil wir eine korrekte Versionsstruktur, eine ordnungsgemäße Repository-Organisation usw. brauchten, aber das kam einfach nicht zustande. Sie versprachen es uns wirklich, waren aber immer zu überladen mit der Arbeit, um DevOps zu machen.

Und so entwickelten sich zwei Dinge. Eine Sache waren Inseln. Ich habe mein Projekt, das eine große Einnahmequelle für das Unternehmen darstellte, als Student alleine gepflegt. Ich kannte alle geheimen Pfade, alle Code-Komplikationen, aber es blieb nicht genug Zeit, um alles zu tun, was gefragt wurde. Ausgepumpte Funktionen, versucht, eine Organisation im Repository zu finden, Kundenunterstützung zu leisten und weiterhin Feuer zu löschen. Die zweite Sache - unsere Codebasis hat sich verschlechtert. Niemand hat meinen Code überprüft, niemand konnte es irgendwann, es gab keine Zeit für Dokumentation und immer Ad-hoc-Patchwork.

Dies galt auch für andere Kollegen.

Daher verlangsamte sich die Entwicklung von w.r.t. -Funktionen bei allen außer den neuesten Projekten immer mehr, da immer mehr technische Schulden ihren Tribut forderten und wir unter ständigem Druck des Managements standen. Psychologischer Druck. Ich habe einmal einen Kollegen im Badezimmer beim Weinen erwischt, ein bisschen mit ihm gesprochen, festgestellt, dass ich meine Familie und meinen Partner seit fast einem Jahr entlastet habe - und beschlossen, dass es Zeit ist zu gehen.

Bis zum heutigen Tag schäme ich mich, diese Codebasis in einem so chaotischen Zustand zurückzulassen, weil ich viel daran gearbeitet habe, viel davon habe ich eingegeben. Aber wenn Sie jemals nur Patchwork machen, schnelles und schmutziges Zeug und so weiter , dann wird Ihr Code ein irredeemabe Chaos. Als ich aufhörte, gingen auch ein paar andere Leute. Noch zwei Inseln. Niemand war jemals mit ihren Codebasen vertraut, außer dem bis zu einem gewissen Grad.

Der Abschluss dieser Geschichte - diese Projekte sind größtenteils tot. Das Unternehmen verdient immer noch Geld mit ihnen, aber es gab keine weitere Entwicklung, außer für einige Dinge, die sich möglicherweise geändert haben. Die Stellen blieben vakant, neu eingestellte Entwickler waren offenbar nicht in der Lage, die jeweiligen Codebasen aufrechtzuerhalten.

Jetzt arbeite ich in einem Unternehmen mit ordnungsgemäßen Codeüberprüfungen, Tests, automatisierten Pipelines und Prozessen. Es ist so gut. Sicher, wir haben unsere Spezialitäten in der Codebasis, aber es gibt praktisch überhaupt kein Inselwissen, außerdem gibt es Codeüberprüfungen, sodass kein Code jemals den Hauptzweig erreicht, der von niemand anderem gesehen wurde. Meine geistige Gesundheit an meinem Arbeitsplatz hat sich ebenfalls verbessert, und meine Fähigkeiten sind jetzt auch viel schärfer.

Ich verstehe, Kritik an Ihrer Arbeit ist emotional schwer zu behandeln, aber Sie Sollte Kritik eine gute Sache sein, bedeutet dies, dass Ihre Entwickler möglicherweise die Codebasis verbessern, weil sie Dinge sehen, die anders sein könnten. Erstellen Sie keine Codebasisinseln, da Sie irgendwann Menschen verlieren und nicht versuchen, alles selbst zu reparieren. Sie arbeiten sich selbst auf der Intensivstation.

Vielen Dank, dass Sie sich die Zeit genommen haben, dies zu schreiben.Ich habe es sorgfältig gelesen und es war sehr inspirierend.Der CTO möchte derzeit, dass das Startup "flach" bleibt (was wenig Sinn macht, da wir wachsen und die Hierarchie natürlich auftritt, ob Sie möchten oder nicht).Da ich auch die Antwort von @PeteCon kommentiert habe, begrüße ich Kritik, vorausgesetzt, sie ist menschlich und konstruktiv.Es ist sinnlos, imo die Schuld zu geben.Das Produkt wird jetzt stabiler und damit haben wir mehr Zeit für richtige Tests und Verbesserungen.Ich hoffe, wenn meine Kollegen auch Fehler machen, hilft dies ihnen zu verstehen.
Du bist herzlich Willkommen.Zur Verdeutlichung: Ich glaube nicht, dass eine flache Hierarchie Sie daran hindert, DevOps zu machen und das Team zu leiten.Jemand hat diesen Entwicklern ihre Bereiche innerhalb der Codebasis zugewiesen, sodass jemand auch Sie sein kann, da Sie die Domain am besten verstehen.Sie müssen sie nicht bellen, sondern nur organisieren.Informieren Sie sich über Best Practices.Wie man Überprüfungen durchführt, wie man Dokumentation erzwingt und verhindert, dass Menschen die einzigen werden, die ihre eigenen großen Ecken in der Codebasis kennen.Sie sind nicht allein, dies sind sehr häufige Fallstricke bei Softwareentwicklern.Ich wollte mitteilen, wozu sie führen können.
Danke dafür.Ich bin kein Manager im Unternehmen, aber dies gibt mir Ideen, wie ich das Problem mit dem CTO angehen kann.Danke noch einmal.Ich würde Sie positiv bewerten, aber dies ist ein brandneues Konto und es hat nicht genug Ruf, um dies zu tun!
Mach dir darüber keine Sorgen.:) :)
Patricia Shanahan
2019-10-27 04:02:49 UTC
view on stackexchange narkive permalink

Um vorwärts zu kommen, schlage ich ein Strategietreffen mit Ihnen und den beiden anderen Entwicklern vor. Ziel sollte es sein, die nächsten Phasen zu planen. Es gibt mindestens drei Dinge, die behandelt werden müssen:

  1. Alle neuen Funktionen, die benötigt werden.
  2. Cross-Training.
  3. Bringen Sie das frühe Schnell -out Code bis zur vollen Produktionsqualität.
  4. ol>

    Zu den Themen sollte gehören, wie die Arbeit an diesen Zielen ausgeglichen werden kann, welche Test- und Dokumentationsstufe in der nächsten Entwicklungsrunde angestrebt werden soll und wie komm dorthin. Wenn einer von ihnen über die Mängel des frühen Codes spricht, kehren Sie zur Diskussion zurück, um zu planen, was dagegen zu tun ist.

O.F.
2019-10-29 21:19:21 UTC
view on stackexchange narkive permalink

Warum kümmert es dich überhaupt?!
Sie können alles kritisieren, was sie wollen, solange sie auch gute, gültige PR-Korrekturen durchführen.
Wie andere sagten, hat der Code, den sie reparieren, das Geld bekommen um sie an erster Stelle einzustellen.
Vielleicht möchten Sie sie daran erinnern. Täglich.

Im Ernst, lassen Sie sie sich beschweren, schreiben Sie eine Seite mit langen Commit-Nachrichten, den ganzen Schebang.
Stellen Sie einfach sicher, dass sie als ihr technischer Gutachter gute Arbeit leisten und Ihre alten nehmen Codebasis und Verbesserung.

Die einzige Ausnahme ist, wenn sie frech und / oder unhöflich mit ihrer Kritik werden. Es ist eine Sache, die denkt "Oh Junge, dieser Code ist scheiße!", Und eine andere Sache, die ihn in genau diesen Worten vollständig auslüftet.
In diesem Fall feuere ihre Ärsche sofort ab.
Aber sonst ... Alter, Sie haben den Prototyp gebaut. Sie sind "der Woz" Ihres Unternehmens.
Warum interessiert es Sie überhaupt, was sie denken?!

gnasher729
2019-10-27 01:40:03 UTC
view on stackexchange narkive permalink

Bring sie zu einem kleinen Gespräch zusammen. Sagen Sie ihnen, wie es ist: Sie setzen diesen Code schnell zusammen, um das Unternehmen an einen Punkt zu bringen, an dem es Finanzmittel erhält, die zur Zahlung seiner Gehälter verwendet werden. Ohne den Code, über den sie sich beschweren, würden sie dort nicht arbeiten.

Sagen Sie ihnen: Wenn es Ihnen nicht gefällt, beheben Sie es. Ruhig. Ohne mich zu beschweren.

PS. Wenn sie "Fixes" anstelle von Fixes produzieren, ist eine wichtige Aussage angebracht. Wenn Sie Ihre Arbeit über Rückstände organisieren, müssen Sie etwas tun, ohne dass es sich im Rückstand befindet. Es ist jedoch völlig angemessen und bewährte Methode, wenn Sie eine Aufgabe ausführen, um den damit verbundenen Code zu verbessern.

könnte Schwarm von "Fixes" auslösen, die nicht im Backlog sind
Das Reparieren der technischen Schulden könnte bedeuten, große Teile neu zu schreiben oder sogar die Architektur zu ändern.Dies sollte gemeinsam und in Abstimmung erfolgen.


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