Григорий Добряков Формирование и управление командой разработчиков twitter: @g_dobryakov www.dobryakov.com Григорий Добряков www.dobryakov.com Infobox: руководитель команды разработчиков. Издательский дом SPN: руководитель команды разработчиков. Компания Artics: руководитель департамента разработки. Юмисофт: технический директор и менеджер по развитию. Paymico: основатель консалтинговой компании. Григорий Добряков www.dobryakov.com Иллюзия #1 Команда – это как набор юнитов в игре-стратегии. Или как набор шахматных фигур. Григорий Добряков www.dobryakov.com Команда – это набор юнитов в игре-стратегии? • • • • Обустраиваем базу Собираем войска Выделяем всех мышкой И тут… Григорий Добряков www.dobryakov.com Команда – это набор шахматных фигур? • • • • Изучаем известные партии и стратегии Расставляем фигуры Приготовились сделать шах и мат Как вдруг… Григорий Добряков www.dobryakov.com Реальность #1 Юниты ведут себя не как положено: болеют, увольняются, спорят между собой, не хотят идти вместе, хотят заниматься не теми делами которые вы им поручаете. Григорий Добряков Иллюзия #2 Наберём только лучших. www.dobryakov.com Григорий Добряков www.dobryakov.com Наберём только лучших? • Их нереально долго искать; • Задачи разного уровня интереса и “тупизны” – нужны люди разной квалификации; • Рыночный баланс: ваш конкурент обогнал вас на обезъянках с клавиатурами. Григорий Добряков www.dobryakov.com Реальность #2 Команда из одних только одинаковых профессионалов будет не работать, а меряться п..ськами. Нужны разные люди. Григорий Добряков www.dobryakov.com Иллюзия #3 Наберём молодых творцов, дадим им мало денег, но поставим сверхзадачу и они будут работать за мега-идею. Григорий Добряков www.dobryakov.com Наберём творцов за идею? • Пренебрежение к готовым решениям; • Изобретение велосипеда; • Повторение известных решений, но с худшим качеством; • Не способны принимать критику, рефакторить код, чинить баги, тестировать. Григорий Добряков www.dobryakov.com Реальность #3 Если вы уже наняли творцов, обеспечьте им сдерживающий фактор в виде более зрелых и старших коллег. Григорий Добряков www.dobryakov.com Иллюзия #4 Оценка задачи по трудоёмкости одинакова для всех разработчиков и неизменна во времени. Григорий Добряков www.dobryakov.com Реальность #4 • Разные люди, даже коллеги, будут выполнять задачу разное время. • “Завтра” будут другие условия в проекте. • “Завтра” будут другие условия в голове у разработчика. Григорий Добряков www.dobryakov.com Иллюзия #5 Тестовое задание – это круто. На основе тестовых заданий можно нанимать людей. Григорий Добряков www.dobryakov.com Реальность #5 Тестовое задание – это не круто. Гораздо важнее социальная открытость: Почему? Как социальная открытость относится к факторам реальной работы? Григорий Добряков www.dobryakov.com Реальность #5 Вспомним рекомендации Agile: • • • • Парное программирование; Рефакторинг; Тесты до написания кода; Погружение в предметную область и коммуникация с заказчиком; • Живой обмен информацией важнее бюрократии. Григорий Добряков www.dobryakov.com Реальность #5 Тестовое задание – это не круто. Гораздо важнее социальная открытость: Открытость по отношению к коллегам = парное программирование. Григорий Добряков www.dobryakov.com Реальность #5 Тестовое задание – это не круто. Гораздо важнее социальная открытость: Открытость к критике = рефакторинг, тесты до написания кода (TDD). Григорий Добряков www.dobryakov.com Реальность #5 Тестовое задание – это не круто. Гораздо важнее социальная открытость: Открытость к людям других профессий = взаимопонимание и коммуникация с менеджерами и сейлзами. Григорий Добряков www.dobryakov.com Реальность #5 Тестовое задание – это не круто. Гораздо важнее социальная открытость: Открытость к внешнему миру = погружение в предметную область заказчика. Григорий Добряков www.dobryakov.com Вопросы для собеседования: Как узнать социальную открытость? • В каких онлайн-сообществах ты участвуешь; • Какие книги по профессиональной сфере ты прочитал за последний год; • Как ты отдыхаешь; Григорий Добряков www.dobryakov.com Разработчик должен быть таким, чтобы его было не стыдно пригласить на совещание с клиентом. Зачастую он там выступит лучше менеджера. Григорий Добряков www.dobryakov.com Ошибки найма: Социопаты. Люди, не способные общаться, и в коде будут писать непонятную фигню. Глупые алгоритмы, дурацкие названия переменных и т.д. Григорий Добряков www.dobryakov.com Ошибки найма: Люди с потерянной обратной связью. Программист говорит “я программирую для себя”. Потребитель покупает ловушки для тараканов вместо хлорофоса. Ему пофиг внутренняя суть решения. Ему подавай приятный внешний вид, скорость работы интерфейса и решение задач. Григорий Добряков www.dobryakov.com Ошибки найма: Самореализаторы и экспериментаторы. Такие люди втыкают как можно больше модных паттернов, решений, плагинов чисто чтобы похвастаться и вписать строчку в резюме. О внутренней сути дела они не задумываются. Григорий Добряков Ошибки найма: Любители самообучаться. Будут учиться вместо работы. www.dobryakov.com Григорий Добряков www.dobryakov.com Программисты и обратная связь. Оффлайновый мир насыщен обратной связью. • Мама приходит на плач ребёнка • Девушка реагирует на ваши ласки • На клавиатуре айпада трудно быстро работать вслепую. • Телефонные гудки, дверной звонок, сигналка автомобиля… Григорий Добряков www.dobryakov.com Мир насыщен обратной связью. Пользователь хочет понимать что происходит. • Если программист не реализует обратную связь – он подсознательно презирает пользователя, а то и ненавидит в глубине души. • Программист хочет оставаться единственным кто контролирует события. Григорий Добряков www.dobryakov.com Документация. • Никто не читает документацию. • Документацию читают только после того, как сломали ваш продукт. • Комментарии в коде - хорошо. Ссылки на внешнюю документацию – терпимо. Просто большая документация – плохо. • “Сложно, но в документации опишем” – тревожный звоночек. www.dobryakov.com Григорий Добряков Двигаем слабое звено. Слабое звено Лидер Мальчик для битья Рабочая лошадка Высокая квалификация Низкая квалификация Низкая мотивация Высокая мотивация Григорий Добряков www.dobryakov.com Закон сохранения работы. Или закон накопления усталости в системе. • Сначала у нас дешёвые и не очень хорошие программисты; • Мы сделаем бизнес, у нас появится оборот; • Появится лишняя копеечка – наймём профессионалов; • И с этого момента у нас всё станет хорошо. Григорий Добряков www.dobryakov.com Закон сохранения работы. Почему нельзя всё исправить потом? • Любая новая задача требует модификации старых механизмов; • С течением времени любая оценка трудоёмкости начинает включать в себя время на исправление ошибок. Григорий Добряков www.dobryakov.com Закон сохранения работы. Почему нельзя всё исправить потом? • T_estimate = T_solve + T_bugfix • Оценочное время выполнения задачи = Время решения + Время исправления неожиданных багов. • T_solve оценить легко. • T_bugfix оценить нельзя! • Вы теряете возможность адекватно планировать. Григорий Добряков www.dobryakov.com Закон сохранения работы. Почему нельзя всё исправить потом? • Вывод: каждая сэкономленная минута “сейчас” обернётся затраченной минутой “потом” плюс неизбежные и нарастающие потери. • Вам потребуется, чтобы скорость нарастания прибыли была выше, чем скорость нарастания “усталости” кода. Григорий Добряков www.dobryakov.com Какие проекты умрут? • • • • • Бюджет, сроки и цена вызывают беспокойство? Ты специалист, вот поэтому я и поручил это тебе! Не говори о процессе, говори о результате; Не поднимай проблему, если у тебя нет решения; Сначала быстро сделаем и продадим, а потом подумаем. Григорий Добряков www.dobryakov.com Какие проекты выживут? • Никто не берёт обязательств без обсуждения рисков; • Никто не строит чётких календарных планов (указываются вероятностные рамки); • Людей благодарят за высказывание опасений, а не отмахиваются от них; • Новые задачи не ставятся, пока неясны сроки по предыдущим; • Приоритет на отказ от задач, а не желание “больше напихать в итерацию”. Григорий Добряков www.dobryakov.com Чего хотят менеджеры? С какими предложениями большинство из нас приходит к руководству? • • • • • • • • • Увеличение дохода Сокращение производственных издержек Улучшение продуктивности Ускорение выхода продуктов на рынок Больший объем продаж за счет внедрения дополнительных инструментов Сокращение времени принятия решений с помощью автоматизированных отчётов Уменьшение расходов на службу поддержки Повышение степени удовлетворенности клиентов Сокращение фонда заработной платы. Григорий Добряков www.dobryakov.com Что на самом деле хотят менеджеры? • Кресло, макбук, секретаршу Григорий Добряков www.dobryakov.com Подходим к менеджеру: Чтобы менеджер тебя не послал, говори не о космических технологиях, а о простых земных ценностях. Григорий Добряков www.dobryakov.com Как управлять проектом при недостатке ресурсов? Наиболее глупое, что вы можете сделать, это выкинуть все методики и начать “рвать ж*пу”; • Кризис-менеджмент и прочая ерунда; • Менеджер-”спаситель”, который всех пинает и достигает результатов; • Методики для того и делались, чтобы вытаскивать проекты из самых трудных ситуаций; • А команда в итоге перегорит.. Григорий Добряков www.dobryakov.com Как управлять проектом при недостатке ресурсов? Самое главное зло при недостатке ресурсов – это человек, который об этом не в курсе. • • • • А почему вы мне раньше не сказали? Где я теперь найду ещё деньги на доплату? Как я теперь перенесу сроки? Не стесняйтесь открыть рот и заявить о задержке. Григорий Добряков www.dobryakov.com Как управлять проектом при недостатке ресурсов? Планируйте не то, что хотелось бы сделать, а то, без чего нельзя обойтись.. • • • • Это сейчас не нужно; Это сделаем позже; Это слишком трудоёмко и долго; Откладывать задачи – не стыдно. Григорий Добряков www.dobryakov.com Как управлять проектом при недостатке ресурсов? У вас уже не будет никакого “потом”. • • • • Сегодняшний день не повторится; “Завтра” будут новые задачи; “Послезавтра” будут новые сотрудники; Вы вернётесь к этому коду только когда потребуется его полностью переписать. Григорий Добряков www.dobryakov.com Как управлять проектом при недостатке ресурсов? Используйте таск-менеджер с очередью задач. • • • • Никаких приоритетов; Никакой важности или неважности; Никакой срочности или несрочности; Только однозначная, очевидная очередь. Григорий Добряков www.dobryakov.com Модель параллельной разработки • Каждой фиче – своя ветка (branch); • В релиз собираются только законченные и протестированные ветки; • Стажёрам - каждому свою ветку, чтобы потом не выпиливать их говнокод из ядра системы. Григорий Добряков www.dobryakov.com Спасибо за внимание! Жду вас в консалтинговой компании Paymico :) Григорий Добряков, grigoriy@dobryakov.com twitter: g_dobryakov