Как преподавать дизайн-шаблоны команде
Я большой поклонник классической Шаблоны Проектирования книги. Я очень усердно работал, чтобы узнать большинство моделей и как они используются (и когда их следует избегать). Тем не менее, я часто сталкиваюсь с командами, где я единственный, кто рекламирует книгу на регулярной основе. Я надеялся, что изучение этой книги облегчит объяснение концепций другим разработчикам, но большинству еще предстоит потратить время на изучение таких тем.
Это основные системы, которые нуждаются в солидная архитектура. Я не хочу постоянно говорить "читай книгу". Как я могу поощрять регулярное использование шаблонов дизайна, не сталкиваясь с помпезностью? Кто-нибудь был успешным в том, что вся команда изучает и использует шаблоны дизайна?
8 ответов
Я бы предложил не эвангилизировать шаблоны проектирования, а вместо этого защищать конкретные проекты / подходы к конкретным проблемам по мере их возникновения.
позже, когда подобная ситуация возникает, вы можете вернуться к подходу, который вы приняли для более ранней проблемы. Тогда вы можете назвать это "шаблоном", который команда видела для решения реальных проблем с реальной выгодой.
Я бы также не строго придерживался шаблонов дизайна в книге для их собственного блага. Он может слепой вы к хорошим предложениям от не дизайн-patternistas или ослепить вас от реальных проблем, которые могут быть специфическими для вашей среды/проблемной области.
Просмотр кода.
принуждение их использовать шаблоны проектирования, вероятно, приведет к чрезмерному использованию и анти-шаблонам.
Я признаюсь, что никогда не пытался этого сделать, поэтому я опираюсь на общие наблюдения о том, как команды могут улучшить свои навыки и качество того, что они производят. Как люди учатся? Чтение, эксперименты, подражание, наставничество ... даже слушать лекции! Думаю, вам придется применить несколько разных подходов. Я бы сказал, что две вещи имеют решающее значение: воздействие идей и обратной связи.
значит для команды, я бы сделал следующее:
1). Дизайн и код обзоры. Обзоры не должны проводиться только старшими людьми. Попросите юниоров также прочитать код и комментарий. В идеале они тоже учатся.
2). Дизайн wokrshops бросить проблемы вокруг и придумать альтернативные решения.
в обоих случаях меня меньше интересуют шаблоны дизайна (книга), чем привитие духа оценки и рассмотрения дизайна. Что хорошо? Что плохо? Какие силы и компромиссы приводят к этому конкретному решению. Когда достаточно хорошо достаточно?
взять хорошо известны.
определите шаблон, который может решить проблема наиболее эффективно. И решить проблему с шаблоном, а также реализовать решение и показать им работу.
Не говорите им еще о шаблоне дизайна. повторить это примерно 3-4 проблемы. Позже скажите им, что вы сделали, была решена проблема с шаблоном дизайна-назовите каждого шаблон и дать им справочники и указатели URL для их дальнейшего изучения и исследования.
Не заставляйте их читать книги, это не сработает.
просто рефакторинг своего кода с использованием шаблона проектирования, и показать им, почему это легче.
также дайте им некоторое время, чтобы узнать новый способ работы.
получите пару копий "Head First Design Patterns" и попросите людей прочитать его. Это интересный способ узнать о паттернах.
Я преподаю курс шаблонов дизайна для инженерной программы Джонса Хопкинса для профессионалов (Вечерняя магистерская программа) и регулярно провожу обеды с коричневыми мешками на работе, чтобы поговорить о шаблонах.
Я бы рекомендовал проводить один час brownbag обед один или два раза в месяц. Расскажите о концепции шаблона и покажите некоторые программы образцы.
каждая лекция я говорю о Золотой Молот-узнайте, как использовать каждый шаблон и запереть их в вашем наборе инструментов, пока они не понадобятся!
моя любимая техника-это то, что я называю "театр шаблон". Каждый из моих студентов исследует шаблон и пишет 2-3-страничный сценарий, который использует шаблон в реальном мире. Например, я представляю театр о поездке Пола Ревира, чтобы описать наблюдателя. (Роберт Ньюман видит англичан и зажигает лампы; Пол Ревир видит лампы. и начинает скакать и кричать; некоторые горожане слышат его и прячутся; некоторые горожане слышат его и хватают свое оружие - дискретные пары стимул/реакция) ничего в театрах не упоминают о программировании; они все о том, чтобы получить концепции, прежде чем я начну программную часть лекции.
чтение книги дает вам только "понимание" шаблонов дизайна, и я считаю, что этот свет щелкает только после реализации некоторых шаблонов. В вашей ситуации может быть целесообразно настроить экспертный обзор и наблюдать готовый код, чтобы увидеть, где шаблон может облегчить конкретную проблему.
поскольку вы не упомянули источник, я предположу, что вы говорите о книге GOF, и если да, я также предполагаю, что вы работаете на статически типизированном языке, таком как как C++, Java, C# и т. д.. Если нет, то многие шаблоны могут даже не относиться к вашей проблемной области и, вероятно, будут отвлекать ваши усилия по адаптации команды. Например, Visitor (double dispatch) не используется в динамически связанных языках, Scala имеет Синглтон и т. д..
проповедь не работает. Подавать пример.
когда вы работаете над дизайном, возьмите свою книгу шаблонов дизайна и откройте ее. Даже если вы запомнили все паттерны, откройте книгу.
когда кто-то задает вам вопрос о дизайне, не просто скажите им имя шаблона, возьмите книгу, откройте ее для шаблона, укажите на соответствующую часть шаблона и скажите что-то вроде "О, слышите, я не уверен, но я думаю, что это может быть полезно".
Если большинство вашей команды рассматривает вас как гуру дизайна, и они постоянно видят, что вы ссылаетесь на книгу шаблонов дизайна, они сделают соединение самостоятельно.