Ich wurde beauftragt, anderen Teams eine neue Codebasis beizubringen, stoße aber immer wieder auf ein Problem. Immer wenn ich mit Leuten durch den Code gehe, kommen wir nicht weit, bevor die gesamte Übung in ein Bikeshedding- Training übergeht (Mitglieder einer Organisation, die belanglosen Themen ein unverhältnismäßiges Gewicht beimessen ). Da sie die Code - Basis nicht wissen, aber denken sie brauchen , um es zu verbessern, konzentrieren sie sich auf die Dinge , die sie können verstehen:
Why is that named that?
(2 Minuten, um zu erklären, warum es so heißt, mehr als 10 Minuten, um einen neuen Namen zu debattieren)
Why is that an abstract base class rather than an interface?
(2 Minuten zur Erläuterung, mehr als 10 Minuten zur Erörterung der relativen Vorzüge dieser Entscheidung)
...und so weiter. Verstehen Sie mich nicht falsch - gute Namen und ein gutes, konsistentes Design sind wichtig, aber wir werden nie darüber diskutieren, was der Code tatsächlich tut oder wie das System in irgendeiner sinnvollen Weise aufgebaut ist. Ich habe ein paar Schiedsrichter-Meetings durchgeführt, um die Leute aus diesen Tangenten herauszuholen, aber sie sind weg - abgelenkt von dem, was der Code sein wird / sollte, wenn ihre Pet-Trivialität behoben ist und sie das Gesamtbild verpassen.
Also versuchen wir es später noch einmal (oder mit einem anderen Teil der Codebasis) und da die Leute nicht genug Wissen haben, um den Bikeshedding-Effekt zu überwinden, wird es wiederholt.
Ich habe es mit kleineren Gruppen, größeren Gruppen, Code, Whiteboarding, Visio-Diagrammen und riesigen Textwänden versucht. Ich habe sie einfach zu Tode streiten lassen und die Argumente sofort gekürzt ... einige helfen mehr als andere, aber nichts funktioniert . Zum Teufel, ich habe sogar versucht, dass andere Leute aus meinem Team es erklären, weil ich dachte, es könnte sein, dass ich nur schlecht darin bin, Dinge zu erklären.
Wie können Sie andere Programmierer so weit ausbilden, dass sie sich nicht mehr auf Trivialitäten konzentrieren und einen sinnvollen Beitrag zum Design leisten können?