Zadanie polegało na nauczaniu innych zespołów nowej bazy kodu, ale ciągle napotyka problem. Ilekroć wchodzę do kodeksu z ludźmi, nie docieramy zbyt daleko, dopóki całe ćwiczenie nie przekształci się w trening rowerowy (członkowie organizacji przykładają nieproporcjonalną wagę do trywialnych problemów). Ponieważ nie znają bazy kodu, ale myślą, że muszą pomóc ją ulepszyć, skupiają się na rzeczach, które mogą zrozumieć:
Why is that named that?
(2 minuty na wyjaśnienie, dlaczego tak się nazywa, ponad 10 minut debatowania nad nową nazwą)
Why is that an abstract base class rather than an interface?
(2 minuty na wyjaśnienie, ponad 10 minut omawiających względne zalety tej decyzji)
...i tak dalej. Nie zrozumcie mnie źle - dobre nazwiska i dobry, spójny projekt są ważne, ale nigdy nie rozmawiamy o tym, co właściwie robi kod ani jak zaprojektowano system w jakikolwiek znaczący sposób. Zrobiłem sędziowanie na spotkaniach, aby wyciągnąć ludzi z tych stycznych, ale ich nie ma - rozproszony przez to, jaki kod będzie / powinien być, gdy ich banalna trywialność zostanie naprawiona, i brakuje im szerszego obrazu.
Więc próbujemy ponownie później (lub z inną częścią bazy kodu), a ponieważ ludzie nie mieli wystarczającej wiedzy, aby przezwyciężyć efekt rowerowego roweru, powtarza się.
Próbowałem mniejszych grup, większych grup, kodu, tablicy, diagramów Visio, gigantycznych ścian tekstu, pozwalając im po prostu argumentować to na śmierć, natychmiast zmniejszając argumenty ... niektóre pomagają bardziej niż inne, ale nic nie działa . Do diabła, próbowałem nawet wytłumaczyć to innym osobom z mojego zespołu, ponieważ myślałem, że być może źle mówię.
Jak zatem edukować innych programistów na tyle, aby przestali się skupiać na trywialnościach i mogli znacząco przyczynić się do projektowania?