SlideShare a Scribd company logo
Тема доклада:
  КАК ОТУЧИТЬ ПРОГРАММИСТОВ
  КОЛБАСИТЬ: ПОВЫШАЕМ
  КАЧЕСТВО ПО

  Докладчик: Михаил   Пайсон

                               1
@Mikhail_Payson
1. План   на сегодня

   • Терминология
   • Качество кода vs. скорость разработки
   • «Метод трѐх шагов» для улучшения качества кода
   • Политика
   • Инструменты улучшения качества кода в команде



                                                      2
@Mikhail_Payson
2. Что   значит «Колбасить»?

   • Быстро писать некачественный код
   • Решать симптомы, а не проблему
   • Реализовать только «тепличные» кейсы
   • Не тестировать
   • Писать некачественный код
   • «Дамп потока сознания»
   • «Пластилиновая архитектура»
                                            3
@Mikhail_Payson
3. Качество          кода vs. скорость разработки
                Качество
      Высокое




                    Умничаем        Программируем
                                            Не
                                            бывает!
                                  Производительность упала!
      Низкое




                               Бесконтрольное
                     Тупим     развитие
                                          Колбасим что-то
                                                Надо
                                                делать!


                                                              Производительность

                     Низкая              Высокая
                                                                                   4
@Mikhail_Payson
3. Метод   трѐх шагов. Ненависть


   •Учим ненавидеть плохой код
      • Мотивация (ирония, похвала, критика)
      • Запрет произносить «костыль», «колбасить»
      • Постоянное повторение, что «писать как попало
        - очень и очень плохо»
      • Еженедельный код-ревью

                                                        5
@Mikhail_Payson
3. Метод   трѐх шагов. Страсть


   •Учим «умничать»
      • Сроки вторичны
      • Мини-семинары по паттернам проектирования
      • Работа техлида с командой
      • Ещѐ больший код ревью с упором на
        архитектуру (сложно)

                                                    6
@Mikhail_Payson
3. Метод   трѐх шагов. Здравомыслие


   •Учим думать перед тем, как писать, но пишем без
   усложнений.
      • Приходит со временем
      • Вопросы «зачем так сложно»
      • Постепенный ввод фактора сроков и скорости


                                                      7
@Mikhail_Payson
4. Политика:   аргументы

   • Цифры – потери на багфиксы в часах,
   • Факты – недовольные заказчики (с цитатами)
   • Сроки и проблемы: временна потеря
   производительности, время на обучение
   • Плюсы компании  проекта: меньше багов, легче
   поддержка, быстрее сдача, воодушевлѐнная
   команда.
                                                     8
@Mikhail_Payson
4. Политика:      контраргументы

   • Мы зарабатываем деньги, а не учим людей
   (рассказ про пилу, стратегическое инвестирование, но риски и
   честно)
   • Мы их научим они разбегутся
   (вопрос единственный – нужны ли квалифицированные кадры?
   Нанять нового дороже, чем выучить своего и поднять ему зарплату)
   • Но у нас же проект!
   (мы его и так завалим, но в этом случае хоть с пользой для
   компании, можно начать со следующего)
                                                                      9
@Mikhail_Payson
5. Инструменты

   • Code Review
   • Проводим раз в неделю. Один смотрит код и готовит замечания (4
   часа), потом все собираются и обсуждают
   • Не переходим на личности!

   • Семинары
   • Проводим раз в неделю. Один готовит, все обсуждают
   • Разбираем паттерны, технологии, guidelines и т.д.
   • Обязательно приводим примеры из реальных проектов
                                                                      10
@Mikhail_Payson
СПАСИБО ЗА ВНИМАНИЕ!
    Докладчик: Михаил       Пайсон
    Связаться с докладчиком можно по:

    Twitter: @Mikhail_Payson
    E-mail: mikhail@payson.ru
    Skype: mikhail.pieson



                                        11
@Mikhail_Payson

More Related Content

What's hot

Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникацийАлексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
ScrumTrek
 
Мамонт. "Командная аллергия: как ее избежать когда в команду приходит новый ч...
Мамонт. "Командная аллергия: как ее избежать когда в команду приходит новый ч...Мамонт. "Командная аллергия: как ее избежать когда в команду приходит новый ч...
Мамонт. "Командная аллергия: как ее избежать когда в команду приходит новый ч...
Viktoriya Pridatko
 
карта It профессий, точки входа, первые шаги
карта It профессий, точки входа, первые шагикарта It профессий, точки входа, первые шаги
карта It профессий, точки входа, первые шаги
COMAQA.BY
 
многогранная профессия тестировщика глазами с++ разработчика в примерах
многогранная профессия тестировщика глазами с++ разработчика в примерахмногогранная профессия тестировщика глазами с++ разработчика в примерах
многогранная профессия тестировщика глазами с++ разработчика в примерах
COMAQA.BY
 
Иду по приборам… Практические советы по визуализации работ. Москва
Иду по приборам… Практические советы по визуализации работ. МоскваИду по приборам… Практические советы по визуализации работ. Москва
Иду по приборам… Практические советы по визуализации работ. Москва
Maxim Gaponov
 
карта IT профессий
карта IT профессийкарта IT профессий
карта IT профессий
COMAQA.BY
 
низкоуровневое программирование сегодня новые стандарты с++, программирован...
низкоуровневое программирование сегодня   новые стандарты с++, программирован...низкоуровневое программирование сегодня   новые стандарты с++, программирован...
низкоуровневое программирование сегодня новые стандарты с++, программирован...
COMAQA.BY
 
Правила отличного разработчика, Михаил Табунов
Правила отличного разработчика, Михаил ТабуновПравила отличного разработчика, Михаил Табунов
Правила отличного разработчика, Михаил Табунов
Coub
 
Python test-automation
Python test-automationPython test-automation
Python test-automation
COMAQA.BY
 
Роман Бочаров. Быстрые циклы и качественные исследования в разработке продукта.
Роман Бочаров. Быстрые циклы и качественные исследования в разработке продукта.Роман Бочаров. Быстрые циклы и качественные исследования в разработке продукта.
Роман Бочаров. Быстрые циклы и качественные исследования в разработке продукта.
ScrumTrek
 
Как попасть на следующий уровень карьеры и зарплаты в C#
Как попасть на следующий уровень карьеры и зарплаты в C#Как попасть на следующий уровень карьеры и зарплаты в C#
Как попасть на следующий уровень карьеры и зарплаты в C#
geekfamilyrussia
 
Первый опыт устройства на работу
Первый опыт устройства на работуПервый опыт устройства на работу
Первый опыт устройства на работу
Sam Faktorovich
 
путь Xp практика
путь Xp практикапуть Xp практика
путь Xp практика
Serhiy Kalinets
 
Ігор Семиженко “‘Skills are cheap’: ключова роль Product people” Kharkiv Proj...
Ігор Семиженко “‘Skills are cheap’: ключова роль Product people” Kharkiv Proj...Ігор Семиженко “‘Skills are cheap’: ключова роль Product people” Kharkiv Proj...
Ігор Семиженко “‘Skills are cheap’: ключова роль Product people” Kharkiv Proj...
Lviv Startup Club
 
Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...
Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...
Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...
geekfamilyrussia
 
15 шагов к быстрым сделкам на тендерных площадках
15 шагов к быстрым сделкам на тендерных площадках15 шагов к быстрым сделкам на тендерных площадках
15 шагов к быстрым сделкам на тендерных площадках
Conformato
 
структура It компании
структура It компанииструктура It компании
структура It компании
Андрей Уманский
 
Карьера UI/UX-дизайнера
Карьера UI/UX-дизайнераКарьера UI/UX-дизайнера
Карьера UI/UX-дизайнера
Eugen Savitsky
 
Development process в большой компании
Development process в большой компанииDevelopment process в большой компании
Development process в большой компании
Lilia Gorbachik
 
Secr2013 разработчики vs поддержка - Лилия Горбачик
Secr2013 разработчики vs поддержка - Лилия ГорбачикSecr2013 разработчики vs поддержка - Лилия Горбачик
Secr2013 разработчики vs поддержка - Лилия Горбачик
Lilia Gorbachik
 

What's hot (20)

Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникацийАлексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
 
Мамонт. "Командная аллергия: как ее избежать когда в команду приходит новый ч...
Мамонт. "Командная аллергия: как ее избежать когда в команду приходит новый ч...Мамонт. "Командная аллергия: как ее избежать когда в команду приходит новый ч...
Мамонт. "Командная аллергия: как ее избежать когда в команду приходит новый ч...
 
карта It профессий, точки входа, первые шаги
карта It профессий, точки входа, первые шагикарта It профессий, точки входа, первые шаги
карта It профессий, точки входа, первые шаги
 
многогранная профессия тестировщика глазами с++ разработчика в примерах
многогранная профессия тестировщика глазами с++ разработчика в примерахмногогранная профессия тестировщика глазами с++ разработчика в примерах
многогранная профессия тестировщика глазами с++ разработчика в примерах
 
Иду по приборам… Практические советы по визуализации работ. Москва
Иду по приборам… Практические советы по визуализации работ. МоскваИду по приборам… Практические советы по визуализации работ. Москва
Иду по приборам… Практические советы по визуализации работ. Москва
 
карта IT профессий
карта IT профессийкарта IT профессий
карта IT профессий
 
низкоуровневое программирование сегодня новые стандарты с++, программирован...
низкоуровневое программирование сегодня   новые стандарты с++, программирован...низкоуровневое программирование сегодня   новые стандарты с++, программирован...
низкоуровневое программирование сегодня новые стандарты с++, программирован...
 
Правила отличного разработчика, Михаил Табунов
Правила отличного разработчика, Михаил ТабуновПравила отличного разработчика, Михаил Табунов
Правила отличного разработчика, Михаил Табунов
 
Python test-automation
Python test-automationPython test-automation
Python test-automation
 
Роман Бочаров. Быстрые циклы и качественные исследования в разработке продукта.
Роман Бочаров. Быстрые циклы и качественные исследования в разработке продукта.Роман Бочаров. Быстрые циклы и качественные исследования в разработке продукта.
Роман Бочаров. Быстрые циклы и качественные исследования в разработке продукта.
 
Как попасть на следующий уровень карьеры и зарплаты в C#
Как попасть на следующий уровень карьеры и зарплаты в C#Как попасть на следующий уровень карьеры и зарплаты в C#
Как попасть на следующий уровень карьеры и зарплаты в C#
 
Первый опыт устройства на работу
Первый опыт устройства на работуПервый опыт устройства на работу
Первый опыт устройства на работу
 
путь Xp практика
путь Xp практикапуть Xp практика
путь Xp практика
 
Ігор Семиженко “‘Skills are cheap’: ключова роль Product people” Kharkiv Proj...
Ігор Семиженко “‘Skills are cheap’: ключова роль Product people” Kharkiv Proj...Ігор Семиженко “‘Skills are cheap’: ключова роль Product people” Kharkiv Proj...
Ігор Семиженко “‘Skills are cheap’: ключова роль Product people” Kharkiv Proj...
 
Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...
Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...
Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...
 
15 шагов к быстрым сделкам на тендерных площадках
15 шагов к быстрым сделкам на тендерных площадках15 шагов к быстрым сделкам на тендерных площадках
15 шагов к быстрым сделкам на тендерных площадках
 
структура It компании
структура It компанииструктура It компании
структура It компании
 
Карьера UI/UX-дизайнера
Карьера UI/UX-дизайнераКарьера UI/UX-дизайнера
Карьера UI/UX-дизайнера
 
Development process в большой компании
Development process в большой компанииDevelopment process в большой компании
Development process в большой компании
 
Secr2013 разработчики vs поддержка - Лилия Горбачик
Secr2013 разработчики vs поддержка - Лилия ГорбачикSecr2013 разработчики vs поддержка - Лилия Горбачик
Secr2013 разработчики vs поддержка - Лилия Горбачик
 

Viewers also liked

Промышленная разработка ПО. Лекция 5. Особенности работы тестировщика
Промышленная разработка ПО. Лекция 5. Особенности работы тестировщикаПромышленная разработка ПО. Лекция 5. Особенности работы тестировщика
Промышленная разработка ПО. Лекция 5. Особенности работы тестировщика
Mikhail Payson
 
Промышленная разработка ПО. Лекция 1. Общие понятия
Промышленная разработка ПО. Лекция 1. Общие понятияПромышленная разработка ПО. Лекция 1. Общие понятия
Промышленная разработка ПО. Лекция 1. Общие понятия
Mikhail Payson
 
Промышленная разработка ПО. Лекция 6. Особенности работы системного аналитика
Промышленная разработка ПО. Лекция 6. Особенности работы системного аналитикаПромышленная разработка ПО. Лекция 6. Особенности работы системного аналитика
Промышленная разработка ПО. Лекция 6. Особенности работы системного аналитика
Mikhail Payson
 
Промышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыПромышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. Инструменты
Mikhail Payson
 
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
Промышленная разработка ПО. Лекция 3. Особенности работы программиста.  Часть...Промышленная разработка ПО. Лекция 3. Особенности работы программиста.  Часть...
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
Mikhail Payson
 
Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…
Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…
Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…
Mikhail Payson
 

Viewers also liked (6)

Промышленная разработка ПО. Лекция 5. Особенности работы тестировщика
Промышленная разработка ПО. Лекция 5. Особенности работы тестировщикаПромышленная разработка ПО. Лекция 5. Особенности работы тестировщика
Промышленная разработка ПО. Лекция 5. Особенности работы тестировщика
 
Промышленная разработка ПО. Лекция 1. Общие понятия
Промышленная разработка ПО. Лекция 1. Общие понятияПромышленная разработка ПО. Лекция 1. Общие понятия
Промышленная разработка ПО. Лекция 1. Общие понятия
 
Промышленная разработка ПО. Лекция 6. Особенности работы системного аналитика
Промышленная разработка ПО. Лекция 6. Особенности работы системного аналитикаПромышленная разработка ПО. Лекция 6. Особенности работы системного аналитика
Промышленная разработка ПО. Лекция 6. Особенности работы системного аналитика
 
Промышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыПромышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. Инструменты
 
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
Промышленная разработка ПО. Лекция 3. Особенности работы программиста.  Часть...Промышленная разработка ПО. Лекция 3. Особенности работы программиста.  Часть...
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
 
Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…
Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…
Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…
 

Similar to Как отучить программиста колбасить (Прагматик 2012)

как воспитать программиста (Выступление в Sibirix)
как воспитать программиста (Выступление в Sibirix)как воспитать программиста (Выступление в Sibirix)
как воспитать программиста (Выступление в Sibirix)
Mikhail Payson
 
Cемь смертных грехов в управлении проектами
Cемь смертных грехов в управлении проектамиCемь смертных грехов в управлении проектами
Cемь смертных грехов в управлении проектами
Boris Volfson
 
Типичные ошибки внедрения Lean и Agile
Типичные ошибки внедрения Lean и AgileТипичные ошибки внедрения Lean и Agile
Типичные ошибки внедрения Lean и Agile
Magneta AI
 
Pretotyping
PretotypingPretotyping
Pretotyping
Alexey Kruchenok
 
Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...
Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...
Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...
GoSharp
 
Александр Денисюк "How not to lose the dynamic of project in process time"
 	Александр Денисюк "How not to lose the dynamic of project in process time"  	Александр Денисюк "How not to lose the dynamic of project in process time"
Александр Денисюк "How not to lose the dynamic of project in process time"
Anna Shymchenko
 
Zappos. Что мы можем применить у нас
Zappos. Что мы можем применить у насZappos. Что мы можем применить у нас
Zappos. Что мы можем применить у нас
Igor Solodov
 
Тестирование для программистов
Тестирование для программистовТестирование для программистов
Тестирование для программистов
Roman Ivliev
 
Менеджер продукта. Как обрести и развить ключевые навыки
Менеджер продукта. Как обрести и развить ключевые навыкиМенеджер продукта. Как обрести и развить ключевые навыки
Менеджер продукта. Как обрести и развить ключевые навыки
Denis Beskov
 
«тестирование для программистов. или «есть ли жизнь без тестировщиков» ( рома...
«тестирование для программистов. или «есть ли жизнь без тестировщиков» ( рома...«тестирование для программистов. или «есть ли жизнь без тестировщиков» ( рома...
«тестирование для программистов. или «есть ли жизнь без тестировщиков» ( рома...
MDDay_4
 
Менеджер продукта: как обрести и развить ключевые навыки (Денис Бесков)
Менеджер продукта: как обрести и развить ключевые навыки (Денис Бесков)Менеджер продукта: как обрести и развить ключевые навыки (Денис Бесков)
Менеджер продукта: как обрести и развить ключевые навыки (Денис Бесков)
Alexander Orlov
 
Александр Жарков — Эволюция команды разработки: взгляд изнутри
Александр Жарков — Эволюция команды разработки: взгляд изнутриАлександр Жарков — Эволюция команды разработки: взгляд изнутри
Александр Жарков — Эволюция команды разработки: взгляд изнутри
Daria Oreshkina
 
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Ontico
 
Вадим Розов “Проектный менеджмент в условиях постоянно меняющихся требований”
Вадим Розов “Проектный менеджмент в условиях постоянно меняющихся требований”Вадим Розов “Проектный менеджмент в условиях постоянно меняющихся требований”
Вадим Розов “Проектный менеджмент в условиях постоянно меняющихся требований”
Andrew Gumenniy
 
Эффективные ретроспективы
Эффективные ретроспективыЭффективные ретроспективы
Эффективные ретроспективы
Boris Volfson
 
как нанять и сделать счастливыми хороших программистов и других сотрудников
как нанять и сделать счастливыми хороших программистов и других сотрудниковкак нанять и сделать счастливыми хороших программистов и других сотрудников
как нанять и сделать счастливыми хороших программистов и других сотрудников
Alexander Gornik
 
Базис. Зачем нужен анализ конкурентов?
Базис. Зачем нужен анализ конкурентов?Базис. Зачем нужен анализ конкурентов?
Базис. Зачем нужен анализ конкурентов?
Hiconversion
 
Creating Open Source Projects
Creating Open Source ProjectsCreating Open Source Projects
Creating Open Source Projects
Alexei Yuzhakov
 
Концепция минимально жизнеспособного продукта (MVP, minimum viable product)
Концепция минимально жизнеспособного продукта (MVP, minimum viable product)Концепция минимально жизнеспособного продукта (MVP, minimum viable product)
Концепция минимально жизнеспособного продукта (MVP, minimum viable product)
Sciencehit.by
 
Product discovery. Наши шишки и успехи
Product discovery. Наши шишки и успехиProduct discovery. Наши шишки и успехи
Product discovery. Наши шишки и успехи
Nikita Efimov
 

Similar to Как отучить программиста колбасить (Прагматик 2012) (20)

как воспитать программиста (Выступление в Sibirix)
как воспитать программиста (Выступление в Sibirix)как воспитать программиста (Выступление в Sibirix)
как воспитать программиста (Выступление в Sibirix)
 
Cемь смертных грехов в управлении проектами
Cемь смертных грехов в управлении проектамиCемь смертных грехов в управлении проектами
Cемь смертных грехов в управлении проектами
 
Типичные ошибки внедрения Lean и Agile
Типичные ошибки внедрения Lean и AgileТипичные ошибки внедрения Lean и Agile
Типичные ошибки внедрения Lean и Agile
 
Pretotyping
PretotypingPretotyping
Pretotyping
 
Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...
Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...
Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...
 
Александр Денисюк "How not to lose the dynamic of project in process time"
 	Александр Денисюк "How not to lose the dynamic of project in process time"  	Александр Денисюк "How not to lose the dynamic of project in process time"
Александр Денисюк "How not to lose the dynamic of project in process time"
 
Zappos. Что мы можем применить у нас
Zappos. Что мы можем применить у насZappos. Что мы можем применить у нас
Zappos. Что мы можем применить у нас
 
Тестирование для программистов
Тестирование для программистовТестирование для программистов
Тестирование для программистов
 
Менеджер продукта. Как обрести и развить ключевые навыки
Менеджер продукта. Как обрести и развить ключевые навыкиМенеджер продукта. Как обрести и развить ключевые навыки
Менеджер продукта. Как обрести и развить ключевые навыки
 
«тестирование для программистов. или «есть ли жизнь без тестировщиков» ( рома...
«тестирование для программистов. или «есть ли жизнь без тестировщиков» ( рома...«тестирование для программистов. или «есть ли жизнь без тестировщиков» ( рома...
«тестирование для программистов. или «есть ли жизнь без тестировщиков» ( рома...
 
Менеджер продукта: как обрести и развить ключевые навыки (Денис Бесков)
Менеджер продукта: как обрести и развить ключевые навыки (Денис Бесков)Менеджер продукта: как обрести и развить ключевые навыки (Денис Бесков)
Менеджер продукта: как обрести и развить ключевые навыки (Денис Бесков)
 
Александр Жарков — Эволюция команды разработки: взгляд изнутри
Александр Жарков — Эволюция команды разработки: взгляд изнутриАлександр Жарков — Эволюция команды разработки: взгляд изнутри
Александр Жарков — Эволюция команды разработки: взгляд изнутри
 
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
 
Вадим Розов “Проектный менеджмент в условиях постоянно меняющихся требований”
Вадим Розов “Проектный менеджмент в условиях постоянно меняющихся требований”Вадим Розов “Проектный менеджмент в условиях постоянно меняющихся требований”
Вадим Розов “Проектный менеджмент в условиях постоянно меняющихся требований”
 
Эффективные ретроспективы
Эффективные ретроспективыЭффективные ретроспективы
Эффективные ретроспективы
 
как нанять и сделать счастливыми хороших программистов и других сотрудников
как нанять и сделать счастливыми хороших программистов и других сотрудниковкак нанять и сделать счастливыми хороших программистов и других сотрудников
как нанять и сделать счастливыми хороших программистов и других сотрудников
 
Базис. Зачем нужен анализ конкурентов?
Базис. Зачем нужен анализ конкурентов?Базис. Зачем нужен анализ конкурентов?
Базис. Зачем нужен анализ конкурентов?
 
Creating Open Source Projects
Creating Open Source ProjectsCreating Open Source Projects
Creating Open Source Projects
 
Концепция минимально жизнеспособного продукта (MVP, minimum viable product)
Концепция минимально жизнеспособного продукта (MVP, minimum viable product)Концепция минимально жизнеспособного продукта (MVP, minimum viable product)
Концепция минимально жизнеспособного продукта (MVP, minimum viable product)
 
Product discovery. Наши шишки и успехи
Product discovery. Наши шишки и успехиProduct discovery. Наши шишки и успехи
Product discovery. Наши шишки и успехи
 

Как отучить программиста колбасить (Прагматик 2012)

  • 1. Тема доклада: КАК ОТУЧИТЬ ПРОГРАММИСТОВ КОЛБАСИТЬ: ПОВЫШАЕМ КАЧЕСТВО ПО Докладчик: Михаил Пайсон 1 @Mikhail_Payson
  • 2. 1. План на сегодня • Терминология • Качество кода vs. скорость разработки • «Метод трѐх шагов» для улучшения качества кода • Политика • Инструменты улучшения качества кода в команде 2 @Mikhail_Payson
  • 3. 2. Что значит «Колбасить»? • Быстро писать некачественный код • Решать симптомы, а не проблему • Реализовать только «тепличные» кейсы • Не тестировать • Писать некачественный код • «Дамп потока сознания» • «Пластилиновая архитектура» 3 @Mikhail_Payson
  • 4. 3. Качество кода vs. скорость разработки Качество Высокое Умничаем Программируем Не бывает! Производительность упала! Низкое Бесконтрольное Тупим развитие Колбасим что-то Надо делать! Производительность Низкая Высокая 4 @Mikhail_Payson
  • 5. 3. Метод трѐх шагов. Ненависть •Учим ненавидеть плохой код • Мотивация (ирония, похвала, критика) • Запрет произносить «костыль», «колбасить» • Постоянное повторение, что «писать как попало - очень и очень плохо» • Еженедельный код-ревью 5 @Mikhail_Payson
  • 6. 3. Метод трѐх шагов. Страсть •Учим «умничать» • Сроки вторичны • Мини-семинары по паттернам проектирования • Работа техлида с командой • Ещѐ больший код ревью с упором на архитектуру (сложно) 6 @Mikhail_Payson
  • 7. 3. Метод трѐх шагов. Здравомыслие •Учим думать перед тем, как писать, но пишем без усложнений. • Приходит со временем • Вопросы «зачем так сложно» • Постепенный ввод фактора сроков и скорости 7 @Mikhail_Payson
  • 8. 4. Политика: аргументы • Цифры – потери на багфиксы в часах, • Факты – недовольные заказчики (с цитатами) • Сроки и проблемы: временна потеря производительности, время на обучение • Плюсы компании проекта: меньше багов, легче поддержка, быстрее сдача, воодушевлѐнная команда. 8 @Mikhail_Payson
  • 9. 4. Политика: контраргументы • Мы зарабатываем деньги, а не учим людей (рассказ про пилу, стратегическое инвестирование, но риски и честно) • Мы их научим они разбегутся (вопрос единственный – нужны ли квалифицированные кадры? Нанять нового дороже, чем выучить своего и поднять ему зарплату) • Но у нас же проект! (мы его и так завалим, но в этом случае хоть с пользой для компании, можно начать со следующего) 9 @Mikhail_Payson
  • 10. 5. Инструменты • Code Review • Проводим раз в неделю. Один смотрит код и готовит замечания (4 часа), потом все собираются и обсуждают • Не переходим на личности! • Семинары • Проводим раз в неделю. Один готовит, все обсуждают • Разбираем паттерны, технологии, guidelines и т.д. • Обязательно приводим примеры из реальных проектов 10 @Mikhail_Payson
  • 11. СПАСИБО ЗА ВНИМАНИЕ! Докладчик: Михаил Пайсон Связаться с докладчиком можно по: Twitter: @Mikhail_Payson E-mail: mikhail@payson.ru Skype: mikhail.pieson 11 @Mikhail_Payson