ݺߣ

ݺߣShare a Scribd company logo
Как воспитать программиста

        Михаил Пайсон
      Perpetuum Software
Как воспитать программиста
• Спасение утопающих –
  дело рук самих
  утопающих

• Воспитание
  программиста – дело
  рук…

• Его руководителя!

• Почему?
Принцип минимума потенциальной
           энергии
• Принцип минимума
  потенциальной
  энергии:
  – любая замкнутая
    система стремится
    перейти в такое
    состояние, в котором
    ее потенциальная
    энергия минимальна
Принцип минимума потенциальной
           энергии
• Следствие
  – Программист не будет
    стараться что-то делать
    до тех пор, пока ему
    комфортно

  – Желания улучшать
    качество работы нет, т.к.
    нет понимания низкого
    качества

  – Он уверен, что всё делает
    правильно!
Источники плохого кода
• Никто и никогда сознательно
  не пишет плохо

• Основной источник –
  отсутствие «воспитания»

• Второй источник – отсутствие
  контроля

• Третий источник – отсутствие
  времени
Что же делать менеджеру?

     Учить

  Направлять

 Воодушевлять

Контролировать!
Три шага к совершенному коду
• Ненависть

• Страсть

• Здравомыслие
Шаг 1. Ненависть
• Научите программиста
  ненавидеть:
  – Некачественный код
  – «Сделать как
    побыстрее»
  – Костыли и заплатки
  – «Сейчас начнём, а
    потом увидим – что
    получится»
Шаг 2. Страсть
• Программист
  начинает:
  – Любить «умничать»
  – Писать «красивые
    решения»
  – Наворачивать паттерны
    и методологии
  – Отшлифовывать код до
    блеска
  – Гордиться своей
    профессиональной
    компетентностью
Шаг 3. Здравомыслие
• Программист
  осознаёт:
  – Думаем прежде, чем
    пишем
  – Нет универсальных
    решений
  – Чем проще, тем легче
    работать
  – Эффективность прежде
    всего
Чему учу я
• Единый стиль кода

• Общие понятия об
  архитектуре

• Паттерны и
  антипаттерны

• Целесообразность
  изобретения
  велосипеда
Как добиться?
• Общение, общение и
  ещё раз общение

• Code Review

• Публичное обсуждение
  подходов к решению
  задачи

• Поощрение поиска
  хороших решений
Плохие новости
• Улучшение качества
  разработки требует
  инвестиций


• Больших
  инвестиций!
Наконец-то можно задавать нам
           вопросы

More Related Content

Viewers also liked (13)

Промышленная разработка ПО. Лекция 7. Особенности работы руководителя проектов
Промышленная разработка ПО. Лекция 7. Особенности работы руководителя проектовПромышленная разработка ПО. Лекция 7. Особенности работы руководителя проектов
Промышленная разработка ПО. Лекция 7. Особенности работы руководителя проектов
Mikhail Payson
Пара слов о рисках
Пара слов о рискахПара слов о рисках
Пара слов о рисках
Mikhail Payson
Промышленная разработка ПО. Лекция 5. Особенности работы тестировщика
Промышленная разработка ПО. Лекция 5. Особенности работы тестировщикаПромышленная разработка ПО. Лекция 5. Особенности работы тестировщика
Промышленная разработка ПО. Лекция 5. Особенности работы тестировщика
Mikhail Payson
Промышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыПромышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. Инструменты
Mikhail Payson
Промышленная разработка ПО. Лекция 6. Особенности работы системного аналитика
Промышленная разработка ПО. Лекция 6. Особенности работы системного аналитикаПромышленная разработка ПО. Лекция 6. Особенности работы системного аналитика
Промышленная разработка ПО. Лекция 6. Особенности работы системного аналитика
Mikhail Payson
Why you should think twice before giving your programmer to design the UI
Why you should think twice before giving your programmer to design the UIWhy you should think twice before giving your programmer to design the UI
Why you should think twice before giving your programmer to design the UI
Mikhail Payson
Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…
Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…
Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…
Mikhail Payson
Промышленная разработка ПО. Лекция 8. Особенности работы руководителя проекто...
Промышленная разработка ПО. Лекция 8. Особенности работы руководителя проекто...Промышленная разработка ПО. Лекция 8. Особенности работы руководителя проекто...
Промышленная разработка ПО. Лекция 8. Особенности работы руководителя проекто...
Mikhail Payson
Эффективная работа команды: поток
Эффективная работа команды: потокЭффективная работа команды: поток
Эффективная работа команды: поток
Mikhail Payson
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
Промышленная разработка ПО. Лекция 3. Особенности работы программиста.  Часть...Промышленная разработка ПО. Лекция 3. Особенности работы программиста.  Часть...
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
Mikhail Payson
Как воспитать программиста
Как воспитать программистаКак воспитать программиста
Как воспитать программиста
Mikhail Payson
Промышленная разработка ПО. Лекция 1. Общие понятия
Промышленная разработка ПО. Лекция 1. Общие понятияПромышленная разработка ПО. Лекция 1. Общие понятия
Промышленная разработка ПО. Лекция 1. Общие понятия
Mikhail Payson
Введение в алгоритмы и структуры данных
Введение в алгоритмы и структуры данныхВведение в алгоритмы и структуры данных
Введение в алгоритмы и структуры данных
Нижегородский институт управления
Промышленная разработка ПО. Лекция 7. Особенности работы руководителя проектов
Промышленная разработка ПО. Лекция 7. Особенности работы руководителя проектовПромышленная разработка ПО. Лекция 7. Особенности работы руководителя проектов
Промышленная разработка ПО. Лекция 7. Особенности работы руководителя проектов
Mikhail Payson
Пара слов о рисках
Пара слов о рискахПара слов о рисках
Пара слов о рисках
Mikhail Payson
Промышленная разработка ПО. Лекция 5. Особенности работы тестировщика
Промышленная разработка ПО. Лекция 5. Особенности работы тестировщикаПромышленная разработка ПО. Лекция 5. Особенности работы тестировщика
Промышленная разработка ПО. Лекция 5. Особенности работы тестировщика
Mikhail Payson
Промышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыПромышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. Инструменты
Mikhail Payson
Промышленная разработка ПО. Лекция 6. Особенности работы системного аналитика
Промышленная разработка ПО. Лекция 6. Особенности работы системного аналитикаПромышленная разработка ПО. Лекция 6. Особенности работы системного аналитика
Промышленная разработка ПО. Лекция 6. Особенности работы системного аналитика
Mikhail Payson
Why you should think twice before giving your programmer to design the UI
Why you should think twice before giving your programmer to design the UIWhy you should think twice before giving your programmer to design the UI
Why you should think twice before giving your programmer to design the UI
Mikhail Payson
Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…
Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…
Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…
Mikhail Payson
Промышленная разработка ПО. Лекция 8. Особенности работы руководителя проекто...
Промышленная разработка ПО. Лекция 8. Особенности работы руководителя проекто...Промышленная разработка ПО. Лекция 8. Особенности работы руководителя проекто...
Промышленная разработка ПО. Лекция 8. Особенности работы руководителя проекто...
Mikhail Payson
Эффективная работа команды: поток
Эффективная работа команды: потокЭффективная работа команды: поток
Эффективная работа команды: поток
Mikhail Payson
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
Промышленная разработка ПО. Лекция 3. Особенности работы программиста.  Часть...Промышленная разработка ПО. Лекция 3. Особенности работы программиста.  Часть...
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
Mikhail Payson
Как воспитать программиста
Как воспитать программистаКак воспитать программиста
Как воспитать программиста
Mikhail Payson
Промышленная разработка ПО. Лекция 1. Общие понятия
Промышленная разработка ПО. Лекция 1. Общие понятияПромышленная разработка ПО. Лекция 1. Общие понятия
Промышленная разработка ПО. Лекция 1. Общие понятия
Mikhail Payson

Similar to как воспитать программиста (Выступление в Sibirix) (20)

лобасев 3 ключевых навыка успешной agile-команды
лобасев   3 ключевых навыка успешной agile-командылобасев   3 ключевых навыка успешной agile-команды
лобасев 3 ключевых навыка успешной agile-команды
Magneta AI
3 ключевых навыка успешной Agile-команды
3 ключевых навыка успешной Agile-команды3 ключевых навыка успешной Agile-команды
3 ключевых навыка успешной Agile-команды
Dmitry Lobasev
я выбираю профессию в It
я выбираю профессию в Itя выбираю профессию в It
я выбираю профессию в It
malahova-helen
Маркетинг в образовательном проекте своими руками
Маркетинг в образовательном проекте своими рукамиМаркетинг в образовательном проекте своими руками
Маркетинг в образовательном проекте своими руками
Исследовательский центр «Стереомаркетинг»
Практика организации ИТ-конфереций и других мероприятий для разработчиков
Практика организации ИТ-конфереций и других мероприятий для разработчиковПрактика организации ИТ-конфереций и других мероприятий для разработчиков
Практика организации ИТ-конфереций и других мероприятий для разработчиков
SQALab
организация мероприятий без упячки. герасимович. Itotvet 19 20 октября
организация мероприятий без упячки. герасимович. Itotvet 19 20 октябряорганизация мероприятий без упячки. герасимович. Itotvet 19 20 октября
организация мероприятий без упячки. герасимович. Itotvet 19 20 октября
it-people
Дмитрий Лобасев - Что отличает крутую команду от крутой Agile-команды
Дмитрий Лобасев - Что отличает крутую команду от крутой Agile-командыДмитрий Лобасев - Что отличает крутую команду от крутой Agile-команды
Дмитрий Лобасев - Что отличает крутую команду от крутой Agile-команды
ITSpringBY
Менеджер продукта: как обрести и развить ключевые навыки (Денис Бесков)
Менеджер продукта: как обрести и развить ключевые навыки (Денис Бесков)Менеджер продукта: как обрести и развить ключевые навыки (Денис Бесков)
Менеджер продукта: как обрести и развить ключевые навыки (Денис Бесков)
Alexander Orlov
Многогранная профессия тестировщика глазами с++ разработчика в примерах
Многогранная профессия тестировщика глазами с++ разработчика в примерахМногогранная профессия тестировщика глазами с++ разработчика в примерах
Многогранная профессия тестировщика глазами с++ разработчика в примерах
COMAQA.BY
Менеджер продукта. Как обрести и развить ключевые навыки
Менеджер продукта. Как обрести и развить ключевые навыкиМенеджер продукта. Как обрести и развить ключевые навыки
Менеджер продукта. Как обрести и развить ключевые навыки
Denis Beskov
Ключевые навыки успешной Agile-команды / Дмитрий Лобасев (lobasev.ru)
Ключевые навыки успешной Agile-команды / Дмитрий Лобасев (lobasev.ru)Ключевые навыки успешной Agile-команды / Дмитрий Лобасев (lobasev.ru)
Ключевые навыки успешной Agile-команды / Дмитрий Лобасев (lobasev.ru)
Ontico
Формирование технической команды на старте
Формирование технической команды на старте Формирование технической команды на старте
Формирование технической команды на старте
Sergey Xek
Правила отличного разработчика, Михаил Табунов
Правила отличного разработчика, Михаил ТабуновПравила отличного разработчика, Михаил Табунов
Правила отличного разработчика, Михаил Табунов
Coub
Cемь смертных грехов в управлении проектами
Cемь смертных грехов в управлении проектамиCемь смертных грехов в управлении проектами
Cемь смертных грехов в управлении проектами
Boris Volfson
Персональные риски аналитика
Персональные риски аналитикаПерсональные риски аналитика
Персональные риски аналитика
Grigoriy Pechenkin
Эффективные ретроспективы
Эффективные ретроспективыЭффективные ретроспективы
Эффективные ретроспективы
Boris Volfson
粹Вфны8
粹Вфны8粹Вфны8
粹Вфны8
Catherine Tipanova
CL_Kaspersky_CyberHeroes_final
CL_Kaspersky_CyberHeroes_finalCL_Kaspersky_CyberHeroes_final
CL_Kaspersky_CyberHeroes_final
Changellenge >> Capital
Agile Talks: Scrum Cookbook. Применение вне ИТ-сферы
Agile Talks: Scrum Cookbook. Применение вне ИТ-сферыAgile Talks: Scrum Cookbook. Применение вне ИТ-сферы
Agile Talks: Scrum Cookbook. Применение вне ИТ-сферы
LuxoftAgilePractice
Agile Talks: Scrum Cookbook. Применение вне ИТ-сферы
Agile Talks: Scrum Cookbook. Применение вне ИТ-сферыAgile Talks: Scrum Cookbook. Применение вне ИТ-сферы
Agile Talks: Scrum Cookbook. Применение вне ИТ-сферы
LuxoftAgilePractice
лобасев 3 ключевых навыка успешной agile-команды
лобасев   3 ключевых навыка успешной agile-командылобасев   3 ключевых навыка успешной agile-команды
лобасев 3 ключевых навыка успешной agile-команды
Magneta AI
3 ключевых навыка успешной Agile-команды
3 ключевых навыка успешной Agile-команды3 ключевых навыка успешной Agile-команды
3 ключевых навыка успешной Agile-команды
Dmitry Lobasev
я выбираю профессию в It
я выбираю профессию в Itя выбираю профессию в It
я выбираю профессию в It
malahova-helen
Практика организации ИТ-конфереций и других мероприятий для разработчиков
Практика организации ИТ-конфереций и других мероприятий для разработчиковПрактика организации ИТ-конфереций и других мероприятий для разработчиков
Практика организации ИТ-конфереций и других мероприятий для разработчиков
SQALab
организация мероприятий без упячки. герасимович. Itotvet 19 20 октября
организация мероприятий без упячки. герасимович. Itotvet 19 20 октябряорганизация мероприятий без упячки. герасимович. Itotvet 19 20 октября
организация мероприятий без упячки. герасимович. Itotvet 19 20 октября
it-people
Дмитрий Лобасев - Что отличает крутую команду от крутой Agile-команды
Дмитрий Лобасев - Что отличает крутую команду от крутой Agile-командыДмитрий Лобасев - Что отличает крутую команду от крутой Agile-команды
Дмитрий Лобасев - Что отличает крутую команду от крутой Agile-команды
ITSpringBY
Менеджер продукта: как обрести и развить ключевые навыки (Денис Бесков)
Менеджер продукта: как обрести и развить ключевые навыки (Денис Бесков)Менеджер продукта: как обрести и развить ключевые навыки (Денис Бесков)
Менеджер продукта: как обрести и развить ключевые навыки (Денис Бесков)
Alexander Orlov
Многогранная профессия тестировщика глазами с++ разработчика в примерах
Многогранная профессия тестировщика глазами с++ разработчика в примерахМногогранная профессия тестировщика глазами с++ разработчика в примерах
Многогранная профессия тестировщика глазами с++ разработчика в примерах
COMAQA.BY
Менеджер продукта. Как обрести и развить ключевые навыки
Менеджер продукта. Как обрести и развить ключевые навыкиМенеджер продукта. Как обрести и развить ключевые навыки
Менеджер продукта. Как обрести и развить ключевые навыки
Denis Beskov
Ключевые навыки успешной Agile-команды / Дмитрий Лобасев (lobasev.ru)
Ключевые навыки успешной Agile-команды / Дмитрий Лобасев (lobasev.ru)Ключевые навыки успешной Agile-команды / Дмитрий Лобасев (lobasev.ru)
Ключевые навыки успешной Agile-команды / Дмитрий Лобасев (lobasev.ru)
Ontico
Формирование технической команды на старте
Формирование технической команды на старте Формирование технической команды на старте
Формирование технической команды на старте
Sergey Xek
Правила отличного разработчика, Михаил Табунов
Правила отличного разработчика, Михаил ТабуновПравила отличного разработчика, Михаил Табунов
Правила отличного разработчика, Михаил Табунов
Coub
Cемь смертных грехов в управлении проектами
Cемь смертных грехов в управлении проектамиCемь смертных грехов в управлении проектами
Cемь смертных грехов в управлении проектами
Boris Volfson
Персональные риски аналитика
Персональные риски аналитикаПерсональные риски аналитика
Персональные риски аналитика
Grigoriy Pechenkin
Эффективные ретроспективы
Эффективные ретроспективыЭффективные ретроспективы
Эффективные ретроспективы
Boris Volfson
Agile Talks: Scrum Cookbook. Применение вне ИТ-сферы
Agile Talks: Scrum Cookbook. Применение вне ИТ-сферыAgile Talks: Scrum Cookbook. Применение вне ИТ-сферы
Agile Talks: Scrum Cookbook. Применение вне ИТ-сферы
LuxoftAgilePractice
Agile Talks: Scrum Cookbook. Применение вне ИТ-сферы
Agile Talks: Scrum Cookbook. Применение вне ИТ-сферыAgile Talks: Scrum Cookbook. Применение вне ИТ-сферы
Agile Talks: Scrum Cookbook. Применение вне ИТ-сферы
LuxoftAgilePractice

как воспитать программиста (Выступление в Sibirix)

  • 1. Как воспитать программиста Михаил Пайсон Perpetuum Software
  • 2. Как воспитать программиста • Спасение утопающих – дело рук самих утопающих • Воспитание программиста – дело рук… • Его руководителя! • Почему?
  • 3. Принцип минимума потенциальной энергии • Принцип минимума потенциальной энергии: – любая замкнутая система стремится перейти в такое состояние, в котором ее потенциальная энергия минимальна
  • 4. Принцип минимума потенциальной энергии • Следствие – Программист не будет стараться что-то делать до тех пор, пока ему комфортно – Желания улучшать качество работы нет, т.к. нет понимания низкого качества – Он уверен, что всё делает правильно!
  • 5. Источники плохого кода • Никто и никогда сознательно не пишет плохо • Основной источник – отсутствие «воспитания» • Второй источник – отсутствие контроля • Третий источник – отсутствие времени
  • 6. Что же делать менеджеру? Учить Направлять Воодушевлять Контролировать!
  • 7. Три шага к совершенному коду • Ненависть • Страсть • Здравомыслие
  • 8. Шаг 1. Ненависть • Научите программиста ненавидеть: – Некачественный код – «Сделать как побыстрее» – Костыли и заплатки – «Сейчас начнём, а потом увидим – что получится»
  • 9. Шаг 2. Страсть • Программист начинает: – Любить «умничать» – Писать «красивые решения» – Наворачивать паттерны и методологии – Отшлифовывать код до блеска – Гордиться своей профессиональной компетентностью
  • 10. Шаг 3. Здравомыслие • Программист осознаёт: – Думаем прежде, чем пишем – Нет универсальных решений – Чем проще, тем легче работать – Эффективность прежде всего
  • 11. Чему учу я • Единый стиль кода • Общие понятия об архитектуре • Паттерны и антипаттерны • Целесообразность изобретения велосипеда
  • 12. Как добиться? • Общение, общение и ещё раз общение • Code Review • Публичное обсуждение подходов к решению задачи • Поощрение поиска хороших решений
  • 13. Плохие новости • Улучшение качества разработки требует инвестиций • Больших инвестиций!