Wie kann verhindert werden, dass ein Kollege extreme Komplexität und Abstraktion einführt?

14

Ich habe eine sehr schwierige Zeit, weil mein Kollege auszustellen scheint

  1. Vorzeitiger / unnötiger Optimierungsaufwand
  2. Vorzeitige Deduplizierung mit fragwürdigen Abstraktionen
    Zum Beispiel verwenden wir eine modifizierte VIPER-Architektur. Er führte eine Basisklasse für die Routerkomponente (unter Verwendung von Generika) als Teil der Implementierung des ersten Viper-Stacks ein, ohne zu wissen, was genau in anderen Routern dupliziert wird. Jetzt müssen wir nur noch einen Typ bereitstellen UseCase, der Anwendungsfälle enthält, aber die meisten Router haben nicht mehrere Anwendungsfälle, sondern nur einen.
  3. Erfinden von Allzwecklösungen für spekulative potenzielle zukünftige Funktionen
    Zum Beispiel schrieb er einen Manager zum Auffüllen statischer Zelltabellenansichten, als wir nur zwei Bildschirme wie diesen in der App hatten, und er wusste nicht, dass das Design von langweiligen vertikalen Formen zu benutzerdefinierteren wechseln wird UIs, so ist der Manager nutzlos.
  4. Sich für zufällige Komplexität entscheiden

Wie kämpfe ich dagegen, wenn er auch eine Sprachbarriere mit schlechtem Englisch aufweist?

Earl Grey
quelle
Haben Sie versucht, obligatorische Code-Überprüfungen durchzuführen, um zu erörtern, was los ist? Haben Sie White Boarding mit ihm versucht, um eine gute Lösung zu finden, bevor er sich hinsetzt, um mit dem Codieren zu beginnen?
Becuzz
1
Können Sie ein Beispiel nennen, in dem Situationen wie in 2 oder 3 auftreten könnten?
morbidCode
1
Ich fühle deinen Schmerz, @EarlGrey. Ich habe wahrscheinlich noch nie einen Fall gesehen, in dem die "generische" Codierung im Vorfeld tatsächlich wie geplant funktioniert.
Graham
2
Ich kenne Leute, die QuickSort anstelle von Bubblesort als vorzeitige Optimierung bezeichnen. Was ist deine Schwelle?
Pieter B
3
Ihr Kollege scheint das Prinzip von YAGNI zu vergessen / nicht zu kennen .
Bart van Ingen Schenau

Antworten:

14

Ihre Beschreibung klingt wie die Kodierung, die ich in den 90er Jahren gemacht habe. Der modernen Welt angemessen zu sein, ist nicht einfach. Ich empfehle, mich auf folgende Faktoren zu konzentrieren:

  • Paarung. Zwei Augenpaare können dabei helfen, eine Person vor einer tollen, aber komplizierten Umsetzung zu schützen.
  • Code-Review. Moderne Geschäfte überprüfen 100% aller Codeänderungen durch mehrere Personen
  • Testabdeckung. Stellen Sie sicher, dass es einfache Tests gibt. Zu komplizierte Tests können zu komplizierten Code widerspiegeln
  • Viele Diskussionen über ein Produkt mit minimaler Lebensfähigkeit. Teilen Sie die Features in die kleinstmöglichen Komponenten auf. Es ist in Ordnung, ein Ticket zum Ändern der Datenbank, ein anderes zum Auffüllen von Referenztabellen und ein drittes zum Aktualisieren der Benutzeroberfläche (der Teil, der für die Endbenutzer tatsächlich sichtbar ist) zu haben, aber es wird sich als widersprüchlich anfühlen, wie es zunächst der Widerstand ist wahrscheinlich.
  • Häufige Diskussionen über kleinere Tickets und Änderungen.
  • Story Point Voting durch das gesamte Team, um Diskussionen über Komplexität und Herangehensweise zu eröffnen.
  • Bildung. Stellen Sie sicher, dass Sie zu Mittag essen und etwas lernen, trainieren usw., damit die Menschen sich mit guten Praktiken auseinandersetzen können und wissen, warum sie gut sind.

Aus all den oben genannten Gründen wären meine beiden Hauptschwerpunkte Code-Reviews und kleinere Storys.

Letztendlich denke ich, dass die beste Lösung zur Änderung des bestehenden Verhaltens darin besteht, dass eine engagierte Person die Änderung leitet. In agilen Organisationen (heute wahrscheinlich die Mehrheit) muss eine engagierte Person wie der Scrum-Master ständig die richtigen Fragen stellen und den Entwicklungsansatz leiten. Bei meiner letzten Organisation hatten wir ein Dutzend von ihnen, eine in jedem Team, um die Leute durch diese Art von Fragen zu führen. Dies beseitigt die Notwendigkeit, dass ein Entwickler eines Teammitglieds versucht, andere davon zu überzeugen, dass „ihr Weg richtig ist“, was oft zu heftigem Austausch und schlechtem Blut führen kann.

Michael Durrant
quelle