Download - Как воспитать программиста
![Page 1: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/1.jpg)
Как воспитать программиста
Несколько теоретических и три практических совета по воспитанию
эффективного программиста
Михаил Пайсон[email protected]
![Page 2: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/2.jpg)
План• Основной капитал Software
компании• Откуда берутся программисты?
– Как найти готового специалиста?– Как найти студента?– Как сделать что-то с уже
существующими людьми?
• Уровни мастерства– Источники плохого кода– Три шага становления программиста
• Практические советы– Чему учить?– Основные ценности– Инспекция кода
![Page 3: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/3.jpg)
Основной капитал Software компании
Что является основным продуктом Software компании?
![Page 4: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/4.jpg)
Основной капитал Software компании
Программный продукт!
– Производство– Интеграция– Поддержка– Маркетинг и продажи
![Page 5: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/5.jpg)
Основной капитал Software компании
• Какие ресурсы идут на производство продукта?
![Page 6: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/6.jpg)
Основной капитал Software компании
Единственное, что требуется для производства ПО -
Человеческая мысль!
![Page 7: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/7.jpg)
Основной капитал Software компании
Основной капитал Software компании-
люди, которые в ней работают
А конкретно – программисты, которые пишут ПО
![Page 8: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/8.jpg)
Откуда берутся программисты?
• Как найти готового специалиста?
• Как найти студента?
• Как сделать что-то с уже существующими людьми?
![Page 9: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/9.jpg)
Откуда берутся программисты?
Как найти готового специалиста?
![Page 10: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/10.jpg)
Откуда берутся программисты?Как найти готового специалиста?
• Переманить деньгами
• Переманить интересной работой
• Переманить карьерным ростом
• Переманить условиями труда
• Получить готового специалиста в связи с его переездом
![Page 11: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/11.jpg)
Откуда берутся программисты?
Как найти студента?
![Page 12: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/12.jpg)
Откуда берутся программисты?Как найти студента?
• Создать высокий имидж компании
• Договориться с кафедрами
• Прочитать курс лекций
• Организовать СКБ или НИРС
![Page 13: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/13.jpg)
Откуда берутся программисты?
Как сделать что-то с уже существующими людьми?
![Page 14: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/14.jpg)
Откуда берутся программисты? Как сделать что-то с уже существующими людьми?
Учить
Направлять
Воодушевлять
Контролировать!
![Page 15: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/15.jpg)
Откуда берутся программисты?Кейс
• Вы приходите в новую группу• Есть разработчик:
– Большой опыт и знания– Не удовлетворяет начальство,
т.к. не может в срок выполнить задачу
– «Слил» важный проект
• Решение начальства: «надо увольнять»
• Ваши действия?
![Page 16: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/16.jpg)
Уровни мастерства
• Источники плохого кода
• Три шага становления программиста
• Кривая обучения
![Page 17: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/17.jpg)
Источники плохого кода
• Никто и никогда сознательно не пишет плохо
• Основной источник – отсутствие «воспитания»
• Второй источник – отсутствие контроля
• Третий источник – отсутствие времени
![Page 18: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/18.jpg)
Три шага становления программиста
Низкая Высокая
Низ
кое
Высо
кое
Производительность
Качество
Тупим Колбасим
Умничаем Программируем
Эффективное развитие
Бесконтрольное развитиеНадо что-то делать!
Не бывает!Исправление ситуации
Производительность упала!
![Page 19: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/19.jpg)
Шаг 1. Ненависть
• Научите программиста ненавидеть:– Некачественный код– «Сделать как
побыстрее»– Костыли и заплатки– «Сейчас начнём, а
потом увидим – что получится»
![Page 20: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/20.jpg)
Шаг 2. Страсть
• Программист начинает:– Любить «умничать»– Писать «красивые
решения»– Наворачивать паттерны
и методологии– Отшлифовывать код до
блеска– Гордиться своей
профессиональной компетентностью
![Page 21: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/21.jpg)
Шаг 3. Здравомыслие
• Программист осознаёт:– Думаем прежде, чем
пишем– Нет универсальных
решений– Чем проще, тем легче
работать– Эффективность прежде
всего
![Page 22: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/22.jpg)
Кривая обучения• Первое время любой
программист тратит время команды
• С определённого момента он начинает работать сам, но работает неэффективно
• Для того, чтобы программист вышел на свою полную мощность требуется много времени
• Опять инвестиции!
1 5 9 13 17 21 24
-100%
-50%
0%
50%
100%
150%
Производительность
Недели
Убытки
Неэффективная работа
Затраты на обучение
![Page 23: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/23.jpg)
Практические советы
• Чему учить?
• Основные ценности
• Инспекция кода
![Page 24: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/24.jpg)
Чему учить?• Подумай каждый раз перед тем, как
писать
• Код вероятно придётся модифицировать: чем «грязнее» код, тем больше проблем у тебя будет потом
• Аккуратное приложение без ошибок выглядит круто. И все любят его автора.
• Трус не играет в хоккей, а профессионал не «колбасит»
![Page 25: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/25.jpg)
Чему учить?
• Общие соглашения написания кода (унификация)
• Низкоуровневая архитектура (паттерны)
• Использование сторонних компонентов и готовых решений
![Page 26: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/26.jpg)
Основные ценности
Код должен быть• Продуман• Аккуратен• Эффективен
• Быстро, просто и аккуратно решать поставленную задачу
![Page 27: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/27.jpg)
Инспекция кода
• Проводится еженедельно для кода, написанного за неделю
• Проводится опытными программистами по очереди
• Время на подготовку – 4 часа
• Время на проведение – 1 час
![Page 28: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/28.jpg)
Инспекция кода. Проведение• Проводится в виде обсуждения
• Ведущий готовит список недочётов (по его мнению)
• Имена авторов «плохого кода» не указываются
• Команда обсуждает каждый из недочётов
• Обязательно подводятся итоги
• Принимается решение о исправлении либо рефакторинге части недочётов
![Page 29: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/29.jpg)
Инспекция кода. Junior
• Для junior– Нахождение «плохого
кода», пока он не врос в систему
– контроль профессионального развития программиста
– Обучение: обсуждение и применение подходящей архитектуры
![Page 30: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/30.jpg)
Инспекция кода. Senior
• Для senior– «Свежий взгляд» на код– Обдумывание более
быстрых и эффективных решений
– Иногда и профессионалы «колбасят»
![Page 31: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/31.jpg)
Инспекция кода. Команда
• Для команды в целом– Возможность обсудить
качество кода и архитектурных решений
– Стимул писать аккуратно, чтобы потом не краснеть на review
– Постоянное поддержание необходимости «писать хорошо»
![Page 32: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/32.jpg)
Инспекция кода. Проблемы
• Поиск серьёзных архитектурных недочётов малоэффективен
• Очень сложно избежать перехода на личности
• Вечный недостаток времени
![Page 33: Как воспитать программиста](https://reader031.vdocuments.site/reader031/viewer/2022020720/54623e3caf795988228b48d9/html5/thumbnails/33.jpg)
Обсуждение