ݺߣ

ݺߣ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)

Как писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромКак писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодером
Kirill Kovalchuk
Разработка веб-сервисов осень 2013 лекция 7
Разработка веб-сервисов осень 2013 лекция 7Разработка веб-сервисов осень 2013 лекция 7
Разработка веб-сервисов осень 2013 лекция 7
Technopark
Programmers' Mistakes for Dummies
Programmers' Mistakes for DummiesProgrammers' Mistakes for Dummies
Programmers' Mistakes for Dummies
COTOHA
Проектирование Программных Систем. Лекция 01
Проектирование Программных Систем. Лекция 01Проектирование Программных Систем. Лекция 01
Проектирование Программных Систем. Лекция 01
Dima Dzuba
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
Омские ИТ-субботники
как нанять и сделать счастливыми хороших программистов и других сотрудников
как нанять и сделать счастливыми хороших программистов и других сотрудниковкак нанять и сделать счастливыми хороших программистов и других сотрудников
как нанять и сделать счастливыми хороших программистов и других сотрудников
Alexander Gornik
Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1
Andrii Gakhov
Agile. Эвридики
Agile. Эвридики Agile. Эвридики
Agile. Эвридики
Valery Khvatov
разработка бизнес приложений (8)
разработка бизнес приложений (8)разработка бизнес приложений (8)
разработка бизнес приложений (8)
Alexander Gornik
Разработка качественного ПО
Разработка качественного ПОРазработка качественного ПО
Разработка качественного ПО
Anton Rusanov
Прагматик. Калугин. Программист-менеджер
Прагматик. Калугин. Программист-менеджерПрагматик. Калугин. Программист-менеджер
Прагматик. Калугин. Программист-менеджер
Alexander Kalouguine
МиСПИСиТ (общие принципы разработки)
МиСПИСиТ (общие принципы разработки)МиСПИСиТ (общие принципы разработки)
МиСПИСиТ (общие принципы разработки)
Ural Federal University named after First President of Russia B.N. Yeltsin
Правила отличного разработчика, Михаил Табунов
Правила отличного разработчика, Михаил ТабуновПравила отличного разработчика, Михаил Табунов
Правила отличного разработчика, Михаил Табунов
Coub
МиСПИСиТ (введение)
МиСПИСиТ (введение)МиСПИСиТ (введение)
МиСПИСиТ (введение)
Ural Federal University named after First President of Russia B.N. Yeltsin
Things To Unlearn In Software Development
Things To Unlearn In Software DevelopmentThings To Unlearn In Software Development
Things To Unlearn In Software Development
Alexey Krivitsky
Работать программистом — это вам не только код писать!
Работать программистом — это вам не только код писать!Работать программистом — это вам не только код писать!
Работать программистом — это вам не только код писать!
CUSTIS
МиСПИСиТ (литература по курсу)
МиСПИСиТ (литература по курсу)МиСПИСиТ (литература по курсу)
МиСПИСиТ (литература по курсу)
Ural Federal University named after First President of Russia B.N. Yeltsin
Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.
Vadim Kruchkov
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON
Как писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромКак писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодером
Kirill Kovalchuk
Разработка веб-сервисов осень 2013 лекция 7
Разработка веб-сервисов осень 2013 лекция 7Разработка веб-сервисов осень 2013 лекция 7
Разработка веб-сервисов осень 2013 лекция 7
Technopark
Programmers' Mistakes for Dummies
Programmers' Mistakes for DummiesProgrammers' Mistakes for Dummies
Programmers' Mistakes for Dummies
COTOHA
Проектирование Программных Систем. Лекция 01
Проектирование Программных Систем. Лекция 01Проектирование Программных Систем. Лекция 01
Проектирование Программных Систем. Лекция 01
Dima Dzuba
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
Омские ИТ-субботники
как нанять и сделать счастливыми хороших программистов и других сотрудников
как нанять и сделать счастливыми хороших программистов и других сотрудниковкак нанять и сделать счастливыми хороших программистов и других сотрудников
как нанять и сделать счастливыми хороших программистов и других сотрудников
Alexander Gornik
Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1
Andrii Gakhov
разработка бизнес приложений (8)
разработка бизнес приложений (8)разработка бизнес приложений (8)
разработка бизнес приложений (8)
Alexander Gornik
Разработка качественного ПО
Разработка качественного ПОРазработка качественного ПО
Разработка качественного ПО
Anton Rusanov
Прагматик. Калугин. Программист-менеджер
Прагматик. Калугин. Программист-менеджерПрагматик. Калугин. Программист-менеджер
Прагматик. Калугин. Программист-менеджер
Alexander Kalouguine
Правила отличного разработчика, Михаил Табунов
Правила отличного разработчика, Михаил ТабуновПравила отличного разработчика, Михаил Табунов
Правила отличного разработчика, Михаил Табунов
Coub
Things To Unlearn In Software Development
Things To Unlearn In Software DevelopmentThings To Unlearn In Software Development
Things To Unlearn In Software Development
Alexey Krivitsky
Работать программистом — это вам не только код писать!
Работать программистом — это вам не только код писать!Работать программистом — это вам не только код писать!
Работать программистом — это вам не только код писать!
CUSTIS
Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.
Vadim Kruchkov
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON
Ad

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

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