Wir sind ein kleines Team von Entwicklern, die innerhalb einer eigenen Abteilung an einem IT-Projekt arbeiten. Keine Hierarchie zwischen uns in dieser Abteilung, aber ein gemeinsames Ziel: unsere Hauptanwendung zum Laufen zu bringen. Wir arbeiten alle am selben Code.
Ich bin sehr detailorientiert und achte sehr auf Standards, Clean-Code und architektonische Belange insgesamt.
Jetzt hat einer der erfahreneren Entwickler den Code so gepatcht, dass offensichtliche Fehler entstehen. Außerdem entsprechen seine Codeänderungen nicht einem bestimmten Qualitätsstandard. Im Grunde führt er aufgrund einer sorglosen Einstellung viele Fehler ein, oder zumindest aus einem Grund, den ich im Moment nicht nachvollziehen kann.
Der Abteilungsleiter kümmert sich nicht um Sauberkeit und operative Details. Er möchte, dass die Haupt-App läuft und wir ihr neue Funktionen hinzufügen können. Er möchte implizit, dass wir uns um diese Details kümmern. Ich denke, dass Qualitätsstandards und Wartbarkeit des Codes wichtig sind, er hat diese Tatsache akzeptiert, aber nichts ist in diesem Sinne formalisiert. Ziemlich viel "tu was du musst, es muss funktionieren ist mir egal wie"-Territorium.
Ich habe nicht die hierarchische Befugnis, den Kollegen zu „korrigieren“. Da er jedoch Fehler produziert, möchte ich ihn durch bloßen freundlichen Einfluss dazu bringen, diese Fehler zu vermeiden. Ich verstecke diese Fehler zufällig vor dem Manager und versuche sie zuerst mit dem Kollegen zu lösen. Er scheint gutwillig zu sein, sieht aber nicht so aus, als würde er lernen. Ich hatte auch in der Vergangenheit verbale Auseinandersetzungen mit ihm, weil er dachte, ich würde mich zu sehr in "seine Angelegenheiten" einmischen. Aber meistens verstehen wir uns recht freundschaftlich und respektieren uns gegenseitig. Ich könnte als Heiliger-als-du-Typ wahrgenommen werden, was nicht hilft. Trotzdem nehme ich diesen Mantel, weil ich das Bedürfnis danach habe.
Wie gehen Sie vor, um einem solchen Kollegen höflich, aber effizient zu helfen, unsere Codequalität zu verbessern? Das ist vor allem eine Kommunikationsfrage.
Das Verstecken der Bugs wird Ihnen auf Dauer keinen Gefallen tun und hat Sie teilweise in diese Situation gebracht.
Es gibt ein paar Möglichkeiten, um möglicherweise nach unten zu gehen:
Beheben Sie die Fehler nicht selbst. Wenn es eine Möglichkeit gibt, Fehler zu protokollieren (haben Sie einen Fehler-Tracker), dann protokollieren Sie sie. Sie müssen wirklich versuchen, einen Manager an Bord zu holen, um ein gewisses Interesse an der Qualität des Codes zu haben. Da Sie den Code Ihrer Kollegen erkennen/reparieren müssen, hält Sie das davon ab, Ihre Aufgaben zu erledigen.
Jeder macht Fehler. Auf Fehler im Code von jemandem hinzuweisen, ist wie darauf hinzuweisen, dass Sie gehustet haben. Es ist nur natürlich, egal wie gut wir uns vorbereiten, man kann es nicht zu 100% vermeiden, also sollte es kein Tabu sein.
Da jeder Fehler macht, macht es keinen Sinn, sie zu verstecken oder nicht mit den Beteiligten darüber zu sprechen, und wenn das Management von vorhandenen Fehlern wissen muss, dann sagen Sie es ihnen einfach, spielen Sie einfach kein Schuldzuweisungsspiel.
Informieren Sie Ihren Kollegen über den Fehler. Wenn Ihnen das Projekt und Ihre Integrität als Mitarbeiter wichtig sind, weisen Sie darauf hin, dass der Fehler Ihrer Meinung nach hätte vermieden werden können, indem Sie X,Y-Praktiken befolgt hätten. Sie können ihn fragen, ob er Ihnen zustimmt oder nicht, um sicherzustellen, dass Sie seine Meinung kennen über die sache.
Wir haben nach dem letzten Patch einen Fehler in A gefunden, wir müssen C, D beheben. Um zukünftige Fehler ähnlicher Art zu vermeiden, wäre es meiner Meinung nach eine gute Praxis, X, Y zu tun, stimmst du zu? Wenn nicht, was können wir Ihrer Meinung nach anders machen, um dies zu vermeiden?
Wenn es keine offiziellen Richtlinien gibt, können Sie nicht viel tun, außer zu versuchen, bessere Praktiken vorzuschlagen, aber wenn er sich absolut weigert, zuzuhören, und Sie wirklich glauben, dass er für das Projekt nicht geeignet ist, weil es ihm im Allgemeinen egal ist, wie er ist seinen Job macht, dann müssen Sie es mit Ihrem engsten Vorgesetzten besprechen und danach einfach akzeptieren, was Ihr Vorgesetzter tun oder nicht tun möchte.
Wenn Sie jedoch möchten, dass sich das Management mehr um die Codequalität kümmert, geben Sie ihm einfach Beispiele dafür, wie die Nichtbeachtung bestimmter Praktiken in der Vergangenheit zu bestimmten Fehlern führen konnte und hat, nicht nur in Ihrem Projekt, sondern auch in anderen, und erklären Sie die Auswirkungen. Menschen interessieren sich nicht für Dinge, die sie nicht verstehen. Wenn sie verstehen, warum bestimmte Praktiken befolgt werden müssen, werden sie sie eher durchsetzen.
Wenn Sie keine offene Diskussion mit dem Kollegen wünschen, können Sie seine Sachen so verwenden, dass der Fehler ausgelöst wird. Was Sie dann tun, ist
Das interessiert uns im Moment nicht, Sie sollten sich auf X konzentrieren
Dies ist eine faire Kritik, die Sie möglicherweise erhalten, wenn Sie Ressourcen für ein Problem aufwenden, das noch kein Problem ist. In diesem Fall möchten Sie möglicherweise die Schritte 3 und 4 von oben fallen lassen.
Das Gespräch mit dem Kollegen ist natürlich das Beste, meine Antwort bietet eine Alternative zum Ideal.
Ich denke, Sie haben Schwierigkeiten, etwas zu sagen, weil Sie sich in das Ergebnis investiert fühlen. Und das zu Recht, denn Sie beide sind Freunde und Kollegen.
Aber ich habe auch das Gefühl, dass dies einer dieser Momente ist, in denen man es einfach loslassen muss.
Wenn Sie Ihre Freundschaft und Arbeitsatmosphäre schätzen, müssen Sie diesen Aspekt Ihres Freundes einfach akzeptieren und weitermachen.
Mit dieser Einstellung können Sie dann Ihr Problem tatsächlich lösen.
Sag es ihm einfach direkt.
In Zeiten wie diesen erinnere ich mich an etwas, das ich in der Mittelschule gelernt hatte: Ich-Botschaften.
„Ich ärgere mich, wenn du Arbeiten mit Fehlern produzierst, weil ich sie dann beheben muss. Ich wünschte wirklich, du würdest das nicht mehr tun.“
Ich fühle ... wenn du ... ich will.
Wenn das nicht funktioniert, dann würde ich meine Herangehensweise an das Problem ändern, das heißt, ich würde mich seiner Einstellung anpassen und die Vergangenheit ruhen lassen, weil man schließlich nie wirklich weiß, wer der bessere Ingenieur ist .
"I feel annoyed when you produce work with bugs because then I have to fix them. I really wish you wouldn't do this any more."
Das ist eine ziemlich feindselige Formulierung. Es ruft eine „Ich gegen dich“-Mentalität hervor. Vergleichen Sie dies mit dem Vorschlag von Jonast92: We found a bug in A after the latest patch, we need to fix C,D. To avoid future bugs of similar sort I think it would be good practice to do X,Y, do you agree? If not, what do you think we can do differently to avoid this?
Dies ist sehr stark eine „Wir gegen das Problem“-Denkweise.Haben Sie obligatorische Code-Reviews ? Mein Gefühl ist, dass die Antwort auf diese Frage nein ist. Wenn ja, sollten solche Ausnahmen dort abgefangen, dokumentiert und die Änderung abgelehnt werden.
Haben Sie ein Issue-Tracking-System wie Jira? Sie sollten Ihre Ergebnisse dokumentieren, Dateiunterschiede einbeziehen und beschreiben, wie sie einen Fehler einführen. Beschreiben Sie außerdem eine Reihe von Schritten zum Reproduzieren des Fehlers, der durch die schlecht implementierte Codeänderung verursacht wurde.
Sie sollten Ihren Einwand so formell wie möglich formulieren und harte, nachweisbare Fakten verwenden, keine Meinungen. Dabei geht es nicht um „Soft Skills“, Persönlichkeit oder Meinungen. Es handelt sich um eine leicht nachweisbare Inkompetenz und Sie sollten dies als solche für Ihre Vorgesetzten sichtbar dokumentieren. Sie sollten sich für eine Vorgehensweise entscheiden. In meiner 20-jährigen Programmiererfahrung ist es meistens nutzlos, einen Kollegen wegen der Art von Einwänden zu ermahnen, die Sie haben und die ich oft hatte. Aber wenn Sie Ihren Fall nicht klar und deutlich auf eine Weise demonstrieren können, die für jemanden mit Entscheidungsmacht verständlich ist, wird er wahrscheinlich auf taube Ohren stoßen.
Wenn Ihre Vorgesetzten Ihre Beschwerden anerkennen, sollten Sie hoffentlich in der Lage sein, einen Fall vorzulegen, um obligatorische Code-Reviews als Teil des SDLC zu implementieren, was meiner Meinung nach jemand mit Ihren Neigungen begrüßen sollte.
Dies geschieht normalerweise bei Produkten, die Ihr Unternehmen nicht warten muss, oder bei Projekten, bei denen der Projektmanager nicht über ausreichende Programmierkenntnisse verfügt. Das einzige, was Sie tun können, ist, Ihrem Projektleiter und Ihren Teamkollegen die Probleme zu melden, mit denen Sie konfrontiert sind, dieses Projekt aufrechtzuerhalten, ohne die Qualitätsstandards einzuhalten, und Zahlen vorzulegen. Wenn der Kunde diesen Geldverlust akzeptiert, ist es höchstwahrscheinlich, dass sich niemand darum kümmert, sondern nur die Person, die der Hölle gegenübersteht. Wenn es sich um ein geschlossenes Budgetprojekt oder ein Projekt handelt, das Sie normalerweise pflegen, wird Ihr Unternehmen Sie hören. Am einfachsten ist es, den Fehler zu finden und ihm zu helfen, bis er genug gelernt hat, um die Probleme selbst zu lösen.
Ich habe Code-Reviews in einigen Teams ausprobiert, aber sie sind eine Belastung, die eine kontinuierliche Unterstützung durch das Management erfordert. Schwer einzukaufen. Und nicht unfehlbar.
Was für uns funktionierte, war, dass jeder Entwickler dokumentierte Unit-Tests erstellen musste. Auf diese Weise haben sie ihre Fehler normalerweise vor der Bereitstellung für Benutzerakzeptanztests erkannt.
Bei größeren komplexen Projekten ließen wir Teams von 2 oder mehr Analysten die Unit-Tests für die Codierungsteams aus dem Design/den Anforderungen erstellen. Sie würden diese Tests für das gesamte Team durchführen. Das eliminierte die Unit-Test-Anforderung nicht, fügte aber die Ebene hinzu, die erforderlich ist, um sicherzustellen, dass alle Aktivitäten des Entwicklungsteams als Ganzes zusammengehalten werden.
Dokumentierte Unit-Tests zu einem Teil des Prozesses zu machen, um Code für jede Person im Team festzuschreiben, stellte sicher, dass der Sitz der Hosenentwickler die richtige Disziplin anwandte, ohne irgendjemanden herauszugreifen.
Fehler für das Team gingen mit dieser Disziplin um 80 % oder mehr zurück. Der Aufwand für den On-Call-Support ging so weit zurück, dass wir nach einer neuen Bereitstellung fast nie angerufen wurden.
Die Komplexität/Formalität des Testplans wurde basierend auf dem Ausmaß der Auswirkungen angepasst ... oft nur einen Absatz lang für kleine Änderungen ... aber erwartete Ergebnisse und tatsächliche Ergebnisse mussten dokumentiert werden (Screenshots usw.).
Nach dem Erfolg, dies mehrere Jahre lang in unserem Team durchzusetzen, führte das QA-Team diese Anforderung in der gesamten IT-Abteilung ein (sie taten dies unabhängig, als die QA in unserem Unternehmen reifte).
Gelegentlich führten wir Code-Reviews bei neuen Teamkollegen oder bei der Arbeit mit neuen Technologien durch. Aber das klingt nicht nach deinem Problem.
Bei einer neuen Anwendung, die wir erstellten, begannen wir damit, die Einheitentestpläne zu dokumentieren und zu speichern, damit sie wiederverwendet werden konnten. Dazu haben wir Team Track verwendet. Es war nicht ganz das beste Werkzeug, aber es war besser als eine Bibliothek mit Word-Dokumenten. Dadurch konnten wir auswählen, welche Funktionen getestet werden mussten, und wir konnten die Pläne bearbeiten, um unsere Änderungen zu dokumentieren. Dann könnten wir alle dazugehörigen Testszenarien durchspielen und Erfolg oder Misserfolg dokumentieren.
Leichtigkeitsrennen im Orbit
Keschlam
darwin
amphibisch
HLGEM
Juha Untinen
mwbl
Andre Werlang