Как воспитать программиста

33
Как воспитать программиста Несколько теоретических и три практических совета по воспитанию эффективного программиста Михаил Пайсон [email protected]

Upload: mikhail-payson

Post on 11-Nov-2014

1.229 views

Category:

Education


5 download

Tags:

DESCRIPTION

Почему программисты пишут плохой код, и как научить их писать хороший.

TRANSCRIPT

Page 1: Как воспитать программиста

Как воспитать программиста

Несколько теоретических и три практических совета по воспитанию

эффективного программиста

Михаил Пайсон[email protected]

Page 2: Как воспитать программиста

План• Основной капитал Software

компании• Откуда берутся программисты?

– Как найти готового специалиста?– Как найти студента?– Как сделать что-то с уже

существующими людьми?

• Уровни мастерства– Источники плохого кода– Три шага становления программиста

• Практические советы– Чему учить?– Основные ценности– Инспекция кода

Page 3: Как воспитать программиста

Основной капитал Software компании

Что является основным продуктом Software компании?

Page 4: Как воспитать программиста

Основной капитал Software компании

Программный продукт!

– Производство– Интеграция– Поддержка– Маркетинг и продажи

Page 5: Как воспитать программиста

Основной капитал Software компании

• Какие ресурсы идут на производство продукта?

Page 6: Как воспитать программиста

Основной капитал Software компании

Единственное, что требуется для производства ПО -

Человеческая мысль!

Page 7: Как воспитать программиста

Основной капитал Software компании

Основной капитал Software компании-

люди, которые в ней работают

А конкретно – программисты, которые пишут ПО

Page 8: Как воспитать программиста

Откуда берутся программисты?

• Как найти готового специалиста?

• Как найти студента?

• Как сделать что-то с уже существующими людьми?

Page 9: Как воспитать программиста

Откуда берутся программисты?

Как найти готового специалиста?

Page 10: Как воспитать программиста

Откуда берутся программисты?Как найти готового специалиста?

• Переманить деньгами

• Переманить интересной работой

• Переманить карьерным ростом

• Переманить условиями труда

• Получить готового специалиста в связи с его переездом

Page 11: Как воспитать программиста

Откуда берутся программисты?

Как найти студента?

Page 12: Как воспитать программиста

Откуда берутся программисты?Как найти студента?

• Создать высокий имидж компании

• Договориться с кафедрами

• Прочитать курс лекций

• Организовать СКБ или НИРС

Page 13: Как воспитать программиста

Откуда берутся программисты?

Как сделать что-то с уже существующими людьми?

Page 14: Как воспитать программиста

Откуда берутся программисты? Как сделать что-то с уже существующими людьми?

Учить

Направлять

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

Контролировать!

Page 15: Как воспитать программиста

Откуда берутся программисты?Кейс

• Вы приходите в новую группу• Есть разработчик:

– Большой опыт и знания– Не удовлетворяет начальство,

т.к. не может в срок выполнить задачу

– «Слил» важный проект

• Решение начальства: «надо увольнять»

• Ваши действия?

Page 16: Как воспитать программиста

Уровни мастерства

• Источники плохого кода

• Три шага становления программиста

• Кривая обучения

Page 17: Как воспитать программиста

Источники плохого кода

• Никто и никогда сознательно не пишет плохо

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

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

• Третий источник – отсутствие времени

Page 18: Как воспитать программиста

Три шага становления программиста

Низкая Высокая

Низ

кое

Высо

кое

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

Качество

Тупим Колбасим

Умничаем Программируем

Эффективное развитие

Бесконтрольное развитиеНадо что-то делать!

Не бывает!Исправление ситуации

Производительность упала!

Page 19: Как воспитать программиста

Шаг 1. Ненависть

• Научите программиста ненавидеть:– Некачественный код– «Сделать как

побыстрее»– Костыли и заплатки– «Сейчас начнём, а

потом увидим – что получится»

Page 20: Как воспитать программиста

Шаг 2. Страсть

• Программист начинает:– Любить «умничать»– Писать «красивые

решения»– Наворачивать паттерны

и методологии– Отшлифовывать код до

блеска– Гордиться своей

профессиональной компетентностью

Page 21: Как воспитать программиста

Шаг 3. Здравомыслие

• Программист осознаёт:– Думаем прежде, чем

пишем– Нет универсальных

решений– Чем проще, тем легче

работать– Эффективность прежде

всего

Page 22: Как воспитать программиста

Кривая обучения• Первое время любой

программист тратит время команды

• С определённого момента он начинает работать сам, но работает неэффективно

• Для того, чтобы программист вышел на свою полную мощность требуется много времени

• Опять инвестиции!

1 5 9 13 17 21 24

-100%

-50%

0%

50%

100%

150%

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

Недели

Убытки

Неэффективная работа

Затраты на обучение

Page 23: Как воспитать программиста

Практические советы

• Чему учить?

• Основные ценности

• Инспекция кода

Page 24: Как воспитать программиста

Чему учить?• Подумай каждый раз перед тем, как

писать

• Код вероятно придётся модифицировать: чем «грязнее» код, тем больше проблем у тебя будет потом

• Аккуратное приложение без ошибок выглядит круто. И все любят его автора.

• Трус не играет в хоккей, а профессионал не «колбасит»

Page 25: Как воспитать программиста

Чему учить?

• Общие соглашения написания кода (унификация)

• Низкоуровневая архитектура (паттерны)

• Использование сторонних компонентов и готовых решений

Page 26: Как воспитать программиста

Основные ценности

Код должен быть• Продуман• Аккуратен• Эффективен

• Быстро, просто и аккуратно решать поставленную задачу

Page 27: Как воспитать программиста

Инспекция кода

• Проводится еженедельно для кода, написанного за неделю

• Проводится опытными программистами по очереди

• Время на подготовку – 4 часа

• Время на проведение – 1 час

Page 28: Как воспитать программиста

Инспекция кода. Проведение• Проводится в виде обсуждения

• Ведущий готовит список недочётов (по его мнению)

• Имена авторов «плохого кода» не указываются

• Команда обсуждает каждый из недочётов

• Обязательно подводятся итоги

• Принимается решение о исправлении либо рефакторинге части недочётов

Page 29: Как воспитать программиста

Инспекция кода. Junior

• Для junior– Нахождение «плохого

кода», пока он не врос в систему

– контроль профессионального развития программиста

– Обучение: обсуждение и применение подходящей архитектуры

Page 30: Как воспитать программиста

Инспекция кода. Senior

• Для senior– «Свежий взгляд» на код– Обдумывание более

быстрых и эффективных решений

– Иногда и профессионалы «колбасят»

Page 31: Как воспитать программиста

Инспекция кода. Команда

• Для команды в целом– Возможность обсудить

качество кода и архитектурных решений

– Стимул писать аккуратно, чтобы потом не краснеть на review

– Постоянное поддержание необходимости «писать хорошо»

Page 32: Как воспитать программиста

Инспекция кода. Проблемы

• Поиск серьёзных архитектурных недочётов малоэффективен

• Очень сложно избежать перехода на личности

• Вечный недостаток времени

Page 33: Как воспитать программиста

Обсуждение