Мне поручили обучать другие команды новой кодовой базе, но я продолжаю сталкиваться с проблемой. Когда бы я ни пошел, чтобы на самом деле пройтись по коду с людьми, мы не продвинулись слишком далеко, пока все упражнение не перешло в велосипедную гонку (члены организации, которые несоразмерно важны для тривиальных вопросов). Так как они не знают кодовую базу, но думают, что должны помочь улучшить ее, они сосредотачиваются на вещах, которые они могут понять:
Why is that named that?
(2 минуты, чтобы объяснить, почему он назван так, более 10 минут обсуждают новое имя)
Why is that an abstract base class rather than an interface?
(2 минуты для объяснения, 10+ минут для обсуждения относительных достоинств этого решения)
...и так далее. Не поймите меня неправильно - хорошие имена и хороший, согласованный дизайн важны, но мы никогда не обсуждаем, что на самом деле делает код или как система разработана каким-либо осмысленным образом. Я провел несколько совещаний судейства, чтобы вывести людей из этих касательных, но они ушли - отвлекшись на то, каким будет код, который будет / должен быть, когда их тривиальность будет исправлена, и они упустят общую картину.
Поэтому мы попробуем еще раз позже (или с другой частью кодовой базы), и поскольку у людей не было достаточно знаний, чтобы преодолеть эффект байкшединга, это повторяется.
Я пробовал меньшие группы, большие группы, код, доски, визуальные диаграммы, гигантские стены текста, позволяя им просто приводить доводы до смерти, немедленно сокращая аргументы ... некоторые помогают больше, чем другие, но ничего не работает . Черт, я даже пытался заставить других людей из моей команды объяснить это, потому что я подумал, что, может быть, я просто плохо объясняю вещи.
Так как же вы достаточно обучаете других программистов, чтобы они перестали зацикливаться на мелочах и могли внести существенный вклад в дизайн?