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