Fui encarregado de ensinar a outras equipes uma nova base de código, mas continuo com um problema. Sempre que eu passo o código com as pessoas, não chegamos muito longe antes de todo o exercício se transformar em exercício de ciclismo (membros de uma organização que dão peso desproporcional a questões triviais). Como eles não conhecem a base de código, mas acham que precisam ajudar a melhorá-la, eles se concentram no que pode entender:
Why is that named that?
(2 minutos para explicar por que recebeu esse nome, mais de 10 minutos debatendo um novo nome)
Why is that an abstract base class rather than an interface?
(2 minutos para explicar, mais de 10 minutos debatendo os méritos relativos desta decisão)
...e assim por diante. Agora, não me interpretem mal - bons nomes e design bom e consistente são importantes, mas nunca discutimos o que o código realmente faz ou como o sistema é projetado de maneira significativa. Fiz algumas reuniões de arbitragem para tirar as pessoas dessas tangentes, mas elas se foram - distraídas com o que o código será / deveria ser quando sua trivialidade de estimação for corrigida e elas perderem a visão geral.
Então, tentamos novamente mais tarde (ou com uma parte diferente da base de código) e, como as pessoas não obtiveram conhecimento suficiente para superar o efeito de ciclismo, ele se repete.
Eu tentei grupos menores, grupos maiores, código, quadro branco, diagramas visio, paredes gigantes de texto, deixando que eles discutissem até a morte, interrompendo os argumentos imediatamente ... alguns ajudam mais que outros, mas nada funciona . Inferno, eu até tentei que outras pessoas da minha equipe explicassem isso, porque pensei que poderia ser apenas ruim em explicar as coisas.
Então, como você educa outros programadores o suficiente para que eles parem de se apegar a trivialidades e possam contribuir significativamente para o design?