2009 г. Руководство командой разработчиков программного обеспечения
|
Как управлять командой разработки
Время на прочтение
9 мин
Количество просмотров 12K
Привет! Я Иван Антипин, заместитель директора департамента разработки в AGIMA. За свою карьеру я поработал с десятками команд. Где-то был разработчиком, где-то тимлидом, где-то помогал извне. У меня был миллион возможностей разобраться, как люди ведут себя в коллективе. Но всё же не на все вопросы существуют четкие ответы: что такое команда, как она работает, как ей управлять. Об этом мы подробно рассказываем на нашем курсе для тимлидов и на митапах. А в этой статье я попробую описать те методы и подходы, которые лично мне кажутся полезными и правильными.
Что делает из группы команду
В детстве я занимался футболом. Мой отец, профессиональный биатлонист, часто повторял: «В вашем футболе кто-то бегает, а кто-то на прогулку выходит. Вот и получается, что можно выложиться на 100%, быть лучше всех на поле и всё равно проиграть».
Конечно, я был с этим не согласен и продолжал играть. Понимал, что если на поле выходят случайные люди, то может быть и такое. Но если выходит команда, то выкладываются все по полной: и выигрывают все вместе, и проигрывают так же. Но почему это так, не понимал.
Взрослый я прочитал много умных книжек, сменил несколько работ и теперь уже готов объяснить себе 10-летнему, что отличает команду от группы по интересам. Это цель и видение. Каждый в команде понимает, что ему надо делать, чтобы вся команда пришла к общей цели.
Такая интерпретация команды лежит в основе фреймворка Team Canvas. Он предполагает, что формализованное представление о команде — это совокупность атрибутов. Какие это атрибуты, можно понять из схемы:
Миссия и цель
Из картинки понятно, что сердце любой команды — это предназначение. Проще говоря, это миссия и цель. Большинство авторов различают эти понятия между собой. Сравните:
Миссия |
Цель |
Сделать спорт доступнее |
Сшить дешевые, но качественные кроссовки |
Спасти экологию своего города |
Восстановить все деревья в вырубленной роще |
Уменьшить разницу между онлайном и личным общением |
Разработать удобный сервис для общения по видеосвязи |
Разницу сложно описать, но довольно легко почувствовать. Миссия намного сложнее. Она есть только у зрелых команд. Это ответ на вопрос «Зачем мы здесь каждый день?». Зачастую миссия спускается в команду через корпоративную культуру и не всегда проговаривается вслух. Часто команда понимает ее интуитивно. Или не понимает вовсе. Выполнить миссию тяжело, если вообще возможно.
А вот цель принципиально достижима. Поэтому команда может работать без миссии, но не может работать без цели. Цель — то, что заставляет команду сплотиться и работать сообща. Ее обычно ставят по системе SMART. Она должна быть:
-
ограничена во времени;
-
достижима:
-
измерима.
Хорошие примеры командной цели — выпустить MVP к концу лета или повысить Retantion продукта за 2 месяца.
Ценности
Важный атрибут команды — ценности. Люди должны быть согласны в принципиальных вопросах. От этого зависит, как они будут общаться и понимать друг друга. Ценности исходят из культуры и воспитания человека. Часто они связаны с возрастом членов команды. Могут быть личными (взаимоуважение, честность) или профессиональными (пишем только чистый код, используем только современный стек). Повлиять на них внутри рабочего процесса практически невозможно.
Показательный пример привел один из участников вебинара, который я вел. Он работал тимлидом в очень разношерстной команде: были люди из разных поколений, с разными жизненными позициями и разным опытом. Перед Новым годом они с женой решили поменять внешность: она покрасила голову в яркий розовый цвет, а он бороду — в яркий синий. У одного из взрослых разработчиков в его команде были очень консервативные взгляды. Синюю бороду разработчик воспринял как признак гомосексуальности. С этого начались профессиональные проблемы. Разработчик ставил под сомнение все решения тимлида, заставлял сомневаться остальных членов команды. И в итоге с ним пришлось попрощаться, а затем потратить много времени на восстановление авторитета.
Проблема была в том, что он не продиагностировал ценности команды, не исследовал принципы, по которым она живет. А ценности и принципы были очень разными. Чтобы собрать сильную команду, нужно помнить, что ее члены должны разделять общие ценности. Особенно это важно в кризисных ситуациях.
По моему личному мнению, именно общие ценности — тот фундамент, который делает команду сплоченной и позволяет ей пережить критически сложные для команды времена.
Правила и практики
Этот атрибут команды, как по мне, сейчас уже не так актуален. Он предполагает, что внутри команды должны быть устоявшиеся профессиональные традиции и обычаи, нормы. Но в современном мире рабочий фреймворк, будь то Agile или Kanban, определяет практики. А правила задаются корпоративными регламентами и установками.
Но иногда важно дополнять правила компании внутренними командными традициями. Клубы по интересам (у нас, например, есть TeamLead Club, Managers Club и архитектурные комитеты), вылазка на природу раз в год, дневная зарядка всем отделом — общие ритуалы объединяют. Иногда они появляются спонтанно, а иногда стоит внедрить что-то специально.
Роли и навыки
В любой команде есть своя структура: функции, должности, задачи. Тимлид понимает, какие навыки важны для каждой роли. Но в то же время помнит, что за ролями скрываются реальные люди, а не роботы. У каждого свои слабые и сильные стороны, развитые и неразвитые навыки. Хороший лидер уделяет внимание тем и другим:
-
в работе делает упор на сильные стороны человека;
-
слабые стороны улучшает за счет индивидуальных планов развития.
Проще говоря, тимлид понимает Soft Skills и Hard Skills каждого члена команды и учитывает их при планировании работы.
Как развивается команда
Чтобы сделать из коллектива команду, важно понимать, как команда развивается. У каждой команды есть свой жизненный цикл. Понять его поможет вот такой график:
Эту модель разработал американский психолог Брюс Такман. Он исследовал экипажи подводных лодок. Военным это было нужно, чтобы во время затяжного плавания на судне не произошло бунта. А для этого нужно было понять, через какие этапы проходит каждая команда. В итоге эта модель оказалась применима не только к морякам.
Исследования Такмана показали, что по большей части все команды ведут себя одинаково. График выше отражает это поведение. На этапе формирования все осторожничают, проявляют вежливость, изучают друг друга. Многие хотят зарекомендовать себя, а энтузиазм всей группы на высоте. Тут возникает иллюзия, что так будет всегда, и команда сплотилась сразу.
Но в действительности это не так. Чуть позже производительность падает, а люди в команде начинают ругаться. Именно с этого и начинается полноценное становление команды. Первая притирка приводит к бурлению — конфликтам и недопониманию. Задача тимлида на этом этапе удержать ситуацию, пережить шторм.
Из этого графика можно извлечь одно важное правило:
Производитель команды на этапе формирования всегда падает.
Только после бурления команда может выйти на рост производительности. А затем и на плато, когда она работает стабильно, четко и предсказуемо. Но важно понимать, что даже самая слаженная команда не застрахована от деградации производительности и нового витка цикла — новое бурление и новая нормализация.
И вот тут я бы хотел перевести внимание с самого формирования команды на ответственность тимлида за этот процесс. Насколько быстро команда преодолеет бурление, насколько быстро она выйдет на плато и как долго продержится без нового витка конфликтов — всё это зависит от него.
Формирование команды
Team Canvas и жизненный цикл команды — два важнейших инструмента в руках лидера. Их нужно применять одновременно и очень вдумчиво. Начинается всё с формирования коллектива. Уже на уровне найма мы можем предсказывать, как долго она будет бурлить или во что в итоге вырастет. Поэтому подходить к подбору нужно аккуратно.
Помогут в этом атрибуты команды. Когда вы решаете, принимать ли человека в коллектив, обращайте внимание на его личные цели, ценности, потребности, сильные и слабые стороны. Каким бы крутым профессионалом не был кандидат, он должен соответствовать команде по духу и внутренним установкам — это важный критерий для отбора.
Например, при найме понимание атрибутов команды поможет грамотно составить описание вакансии в части необходимых навыков соискателя, поможем «нарисовать» HR-специалистам портрет идеального кандидата и задавать нужные вопросы на собеседовании.
Как управлять командой
Если правильно подобрали команду, то управлять ей будет комфортно и интересно. Но с чего начать этот процесс? Я считаю, что начать стоит с управления самим собой. Самодисциплина и точный план действий помогут держать команду и понимать, что с ней делать даже в самые тяжелые кризисы. Для этого важно готовить инфраструктуру:
-
правила,
-
регламенты,
-
встречи,
-
алгоритмы,
-
чек-листы и т. д.
Ответственность тимлида не просто продумать, как сделать взаимодействие в команде удобным и понятным, но и самому этих правил придерживаться. Если он будет своим примером показывать, что эти законы работают, то и остальным захочется их соблюдать.
Если грамотно сформировать команду и построить процессы внутри, то провести ее через все этапы формирования можно будет почти без потерь.
Дисциплина и ответственность находятся в тесной зависимости. Если человек ответственный, ему будет сложно нарушить дисциплину. Персональная ответственность мощнее командной и персональная ответственность тимлида — пример того, какой эта ответственность должна быть.
Вовремя приходить на встречи, быть в контексте повестки, выполнять договоренности и вовремя управлять ожиданиями по договоренностям — это хороший пример персональной ответственности.
Стили лидерства
В AGIMA тимлид — это не просто роль, а отдельная профессия. Я несколько раз заострял внимание на ответственности лидера перед командой. И сейчас речь пойдет как раз о ней. Его воля, дисциплинированность и целеустремленность могут провести команду через самые серьезные испытания.
Важным инструментом в этом станет еще одна модель, которая демонстрирует стили лидерства:
Хороший тимлид не просто работает в рамках какого-то из этих стилей, но имеет управленческий диапазон. Каждый стиль — это не констатация факта, а орудие труда в руках у руководителя. И в каждой конкретной ситуации он выбирает подходящий.
Зачастую на этапе бурления важно включать диктатора: принимать все решения самостоятельно и жестко пресекать конфликты. На этапе нормализации выгоднее быть наставником — помогать, подсказывать, учить. Когда команда выходит на плато, можно доверять ей больше и чаще делегировать. Ну а когда команда уже работает как часы — остается только поддерживать инфраструктуру.
Конечно, все эти рекомендации абстрактны. Только сам тимлид может принимать решение, в какой момент и какой стиль уместнее. Даже на самом пике производительности иногда важно стать диктатором, чтобы быстро справиться с какой-то производственной проблемой — горит срок или произошел тотальный сбой. Но помнить про спектр стилей нужно всегда.
Личность тимлида
Решить, какой стиль и когда уместнее, можно только оценивая все обстоятельства сразу: настрой команды, этап формирования, ценности и личные цели каждого участника процесса. Поэтому все эти условия нужно улавливать, чувствовать и понимать.
Эмпатия — важнейшее качество тимлида, которое помогает ему понимать потребности команды.
Проявлять эмпатию — значит понимать человека без объяснений, чувствовать его настрой, ставить себя на его место и переживать вместе с ним его проблемы. Даже самый закрытый разработчик на самом деле замечает любое изменение в климате команды. И даже если он молчит, ему может что-то не нравиться.
Мне кажется, все люди делятся на два типа:
-
Одни объясняют свое решение словами «Я думаю, что…».
-
Другие — словами «Я чувствую, что…».
Первый вариант — это уровень рационального осмысления ситуации. Второй — вариант эмоциональный. Хотим мы или нет, работа с командой — это почти всегда про эмоции. Особенно важно помнить об этом на этапах бурления. И именно эмпатия поможет потушить конфликт, услышать другого человека, понять его смятение и сделать следующий шаг к сильной команде.
А вот отсутствие эмпатии всегда проявляется в кризисные моменты. Когда горят сроки и вся команда работает на износ, какими словами тимлид сможет ее мотивировать? «Я вас всех поувольняю» — вряд ли. «Заплачу за переработку вдвое больше» — возможно. Но оба варианта говорят о бессилии. Хороший руководитель обращается к людям, а не к штатным единицам. И люди это ценят.
Кризис сплочает правильно сформированную команду, а не проверяет ее на прочность.
Если вы тимлид, ответьте себе на вопрос: «Что я скажу команде, если случится так, что нам будет поработать все выходные?». Или представьте, что должен сказать вам тимлид, чтобы вы вышли в выходной на работу. Требовать и угрожать, просить или умолять, а может быть, что-то еще? Удивительно – любой из вариантов может быть правильным.
Это должно быть решение тимлида в привычных и понятных для команды формулировках. В идеальном случае это должна быть встреча команды, на которой мнение каждого человека учтут, а сама атмосфера обсуждения будет безопасной для всех участников. Повестка встречи должна быть понятная всем, как и причины возникновения такой ситуации. А повестка встречи нехитрая: мы должны выйти, если кто-то против, предлагаю обсудить, почему. Разбор причин и последствий лучше отложить до ретроспективы.
Создание безопасной среды обсуждения и культура принятия командных решений — ответственность тимлида.
Если подвести итог всему сказанному, тимлид отвечает за команду, а команда — за продукт. Поэтому лидеру чаще приходится проявлять качества человеческие, а не профессиональные. И даже больше, грамотный руководитель не боится набирать в команду людей скилловее себя, потому что именно это поможет команде добиться целей быстрее.
Его собственная цель — помочь команде.
Уверен, что у каждого, кто читает этот текст, есть свой опыт управления командой и свое представление о правильном и неправильном. Расскажите о нем в комментариях — чем больше моделей мы знаем, тем лучше. Как писал Джордж Бокс, в сущности, все модели неправильны, но некоторые полезны.
Иногда может показаться, что команда разработчиков, с которой вы работаете, говорит на другом языке 😅 Они называют людей непонятными аббревиатурами, вроде PO, PM, PMM, и обсуждают Agile, Kanban и Scrum. Без паники, сейчас мы расскажем, что это значит!В Purrweb мы занимаемся разработкой программного обеспечения с 2014 года. На протяжении этого времени мы экспериментировали с ролями в команде и пробовали несколько способов коммуникации, до тех пор пока не нашли то, что подходит именно нам.В этой статье мы поделимся своим опытом организации команды разработчиков и расскажем, какие роли существуют в IT команде. Вы узнаете, на что обращать внимание при аутсорсинге разработки программного обеспечения, и как собрать команду и избежать основных ошибок. Поехали!
3 типа команд в Agile: универсалы, специалисты и гибридная команда
Начнем с основ: вся суть Agile-подхода в разработке программного обеспечения заключается в двух правилах. Во-первых, быть настоящей командой, и во-вторых, активно коммуницировать. В отличие от традиционного подхода, который основывался на больших командах, четком разграничении ролей и индивидуальной работе каждого, в Agile-командах всё гибко и прозрачно: они работают как единый организм и подменяют друг друга, где нужно.
В идеальном мире Agile-подхода у команд существует 3 типа структуры — рассказываем про каждую отдельно.
Универсалы
Такие команды — это хакеры, которые взломали ход времени. Иначе мы не можем объяснить, как успевают работать за троих и делать всё хорошо. Обычно, в составе команды разработчиков-универсалов есть люди, которые могут занимать сразу несколько ролей и работать с разными частями программного обеспечения. Например, в стартапе универсальный специалист может одновременно работать и на фронте, и на бэкенде, и переключаться между задачами.
Такой тип работы подходит для аутсорсинга разработки программного обеспечения, небольшим IT-командам, которые готовят технически простые проекты в сжатые сроки.
Специалисты
В отличие от универсалов, эти ребята не многозадачны. Они, скорее, обладают экспертизой только в одной области, хорошо делают свою работу, и не обмениваются ролями и задачами с другими участниками команды. В Agile-командах такого типа по разработке программного обеспечения каждый специалист работает над своей частью продукта.
Теперь представьте, сколько может занимать коммуникация и управление процессами разработки, когда в команде есть только один человек, который может ответить на экспертный вопрос из своей области. Поэтому специалисты лучше всего подходят для сложных и инновационных проектов, где нет жёсктих дедлайнов и нужны экспертные знания.
Гибридная команда
Это комбо-команда, которая объединяет под одной крышей как специалистов широкого профиля, так и экспертов в одной области. Как вы могли догадаться, наличие такой структуры команды по разработке программного обеспечения обходится дорого. Плюс, чем больше людей, тем больше времени потребуется на операционные процессы.
Но, если ваша цель — надежный и многосоставной продукт, оно того стоит. Такой подход обеспечивает качественную разработку программного обеспечения для больших сложных проектов, это подтверждает наш опыт и даже научные исследованияhttps://www.researchgate.net/publication/249703186_Hybrid_Agile_Development_and_Software_Quality.
Гибридный формат организации команды разработчиков лучше всего подходит для масштабных проектов с большим бюджетом.
Как это работает в Purrweb
На самом деле, три четко разграниченных типа команд существуют только в книгах по Agile. В реальности команда разработчиков — это сложный микроорганизм, со своими правилами и особенностями. Со временем мы четко разделили роли в IT-команде и наладили быструю и прозрачную коммуникацию внутри. Это позволяет нам работать с любыми проектами, вне зависимости от сложности, размера и бюджета.
В составе команды разработчиков Purrweb есть разные специалисты: универсальные фулстек солдаты и те, кто работает только с фронтендом или бэкендом. Одна из наших главных ценностей — инвестиции в людей. Мы стараемся давать членам команды возможность расти и совершенствовать свою экспертизу. Иногда кто-то сужает свой фокус с нами, а кто-то, наоборот, расширяет набор навыков. Часть наших программистов приходили работать только на клиентской части или на сервере, а позже выросли в мастеров на все руки.
Какие бывают роли в IT-командах
Чтобы лучше понять управление процессами разработки, нужно знать не только схему, по которой построена команда разработчиков, но и кто есть кто в ней.
Вот классический набор:
- владелец продукта
- проектный менеджер
- аккаунт-менеджер
- UI/UX дизайнеры
- разработчики
- QA инженеры
Владелец продукта (product owner, PO)
Этот человек лучше всех знает, как должна будет выглядеть окончательная версия продукта. Когда у команды есть вопросы про идею или саму разработку программного обеспечения, они идут к владельцу продукта за советом и финальным словом.
В некоторых компаниях, при аутсорсинге разработки программного обеспечения, роль проектного менеджера отведена клиентам. Потому что кто может лучше рассказать про идею, чем тот, кто её придумал?
Аккаунт-менеджер
Эти люди не участвуют в разработке программного обеспечения, а общаются с клиентами. Их главная задача — выстраивать коммуникацию с заказчиком и поддерживать долгосрочные отношения. Они сопровождают весь процесс, общаются с клиентами, показывают им отчеты и иногда даже поздравляют с днем рождения и спрашивают про детей. Для аккаунт-менеджера основным KPI является то, насколько заказчик доволен работой и процессом разработки программного обеспечения.
Проектный менеджер (project manager, PM)
Известен также как мастер на все руки и гуру задач! Проектные менеджеры — это посредники в разработке программного обеспечения. Они связывают между собой команду, следят за дедлайнами и периодически проверяют, не нарушился ли рабочий процесс. Во время работы задачи могут прилетать каждую секунду, поэтому легко можно что-то потерять или забыть про срок сдачи. Если такое происходит, на место приходит проектный менеджер, который разбирается, в чем была проблема, и как сделать так, чтобы она больше не повторилась.
Если вы слышите, как кто-то кричит: «Нам нужно ускориться», «Давайте сначала просчитаем риски», «Что-то работает не так», — вероятно, проджект-менеджер где-то близко.
UI/UX дизайнеры
Эта часть команды просыпается утром и сразу думает о пользователе. Она подключается к разработке программного обеспечения на ранних этапах и следит, чтобы все в приложении было простым и понятным. Им помогают UI/UX копирайтеры, которые следят за текстом в решении и знают, как уместить важное объявление в push-уведомление, чтобы его открыли и прочитали.
Разработчики
Тут всё просто: они отвечают за задачи, связанные с разработкой программного обеспечения. Программисты создают приложения на основе технических требований и собирают архитектуру приложения. Обычно для одного проекта нужно сразу несколько разработчиков: те, кто работают на фронтенде, бэкенде, и фулстек-универсалы.
QA инженеры
Quality assurance — обеспечение качества продукта. Тестировщики ищут и удаляют баги с самого начала, а также следят, чтобы решение хорошо работало на каждом этапе процесса разработки программного обеспечения.
Как это работает в Purrweb
На пути к идеальной структуре мы сделали несколько ошибок и многому научились. Этот опыт помог нам узнать больше об управлении процессами разработки и разграничивать роли в IT-команде.
Было время, когда у нас не было аккаунт-менеджера, и процесс работы с новыми клиентами был хаотичным. Первый контакт происходил с менеджером по продажам, затем они передавали проджект-менеджеру, которые взаимодействовали и с командой, и с заказчиками сразу. Нам потребовалось время, чтобы вырасти и понять, что мы упустили. Теперь у нас есть отдельные люди, который работают только с продажами, только с клиентами, и только с командой внутри.
В Purrweb мы доверяем роль владельца продукта нашим заказчикам, потому что они знают подробности идеи лучше нас. Это не означает, что мы нанимаем их на работу 😅 Когда к нам приходит клиент, у него есть идея, а у нас — экспертиза и опыт. Поэтому мы даем возможность заказчикам «владеть продуктом»: отвечать на наши вопросы и выбирать финальные концепты, при этом учитывая наши советы и предложения.
Что касается дизайнеров, то тут мы тоже выработали четкую схему. На каждый проект по разработке программного обеспечения мы назначаем двух специалистов, которые работают в связке: сотрудничают и дополняют опыт друг друга. Также, у нас есть ведущие дизайнеры, которые обучают новичков и одобряют концепции дизайна для решений.
У разработчиков Purrweb тоже есть свои правила: в их команде есть тимлид, который отвечает за управление процессом разработки и контролирует промежуточные результаты. Кроме того, мы предпочитаем сами обучать новичков работать с фулстеком 😈.
Как понять, что перед вами эффективная организация команды разработчиков?
Когда вы только погружаетесь в разработку программного обеспечения и знакомитесь с командой, то уже с первого взгляда можно понять, будет ли сотрудничество приятным и полезным для обеих сторон. Вы спросите, как? Рассказываем!
При аутсорсинге разработки программного обеспечения следует обратить внимание на несколько вещей:
- Налажена ли у них коммуникация? Посмотрите, как члены команды общаются между собой. Да, программисты не роботы и столкновения на рабочем месте неизбежны, даже при разработке программного обеспечения. Но в здоровых, хорошо организованных командах есть инструменты, как договариваться и разрешать конфликты. Можно сразу спросить: «Ребята, а как вы коммуницируете между собой? Какие приложения используете, чтобы оставаться в курсе рабочего процесса?». Если вам расскажут про Slack, Jira и Targetprocess — направление уже верное.
- Как они распределяют рабочие роли? Главное правило хорошей Agile-команды — отсутствие хаоса. Процесс разработки программного обеспечения должен быть структурирован, а каждый участник — знать, что он должен делать и к кому обращаться за советами. Чтобы проверить, как это устроено, вы можете просто спросить команду, как выглядит их рабочий процесс, кто отвечает за каждый шаг и кому вы можете задать вопрос о промежуточных результатах.
- Есть ли у них общие цели? Большинству Agile-команд не нужны четкая иерархия и строгий контроль, потому что у них общие цели и они знают, ради чего работают каждый день. Например, в Purrweb наша цель — помочь стартапам быстро проверить свои бизнес-идеи, и если вы спросите кого-либо из нашей 100 членов команды, они скажут вам тоже самое.
- Могут ли они быть независимыми? При разработке программного обеспечения строгий надзор не приносит никакой пользы ни клиенту, ни команде. Чтобы следить за каждым движением, со стороны заказчика потребуется много времени, которого у стартаперов обычно нет. А для команд пристальный контроль может демотивировать и мешать креативности. В общем, хорошая команда должна уметь работать независимо, чтобы вам не приходилось тратить все силы на управление процессами разработки.
Итоги
Cо временем, в Purrweb, нам удалось сформировать сильную профессиональную команду. Мы не можем сказать, к какому из трех типов организации команды разработчиков мы относимся, но мы нашли индивидуальную схему, которая работает для нас и делает процесс эффективным.
Наша команда создает мобильные приложения и веб-решения с фокусом на минималистичный и грамотный UI/UX-дизайн. Мы — команда полного цикла, и это означает, что у нас в составе есть все необходимые люди для разработки программного обеспечения: разработчики, UI/UX-дизайнеры и копирайтеры, QA инженеры и проджект-менеджеры. Так что вам не потребуется нанимать кого-либо еще для проверки своей идеи.
Хотите познакомиться с нашей командой и получить помощь в проверке идеи для вашего стартапа? Напишите нам!
Руководство командой разработчиков ПО
С. Архипенков
Об авторе
• Сергей Архипенков, PMP PMI.
• Стаж в разработке ПО более 30 лет.
• Автор книг, статей, учебных курсов.
• Контакты:
o www.arkhipenkov.ru
o [email protected]
О чем?• Что общего между ракетами, футболом
и разработкой ПО?
• Почему классические методы
управления не работают.
• Семь принципов адаптивного
управления.
• Необходимые и достаточные условия
эффективной работы.
• Мотивация.
• Лидерство.
• Эмоциональные интеллект.
• Эффективные коммуникации.
• Конфликты.
• Командообразование.
• Динамика команды.
(с) www.arkhipenkov.ru 3
КЛАССИЧЕСКИЕ МЕТОДЫ УПРАВЛЕНИЯ НЕ РАБОТАЮТ
4(с) www.arkhipenkov.ru
Баллистический полет
«Как получится». Можно, но не далеко
и не точно.
Объект
управления
u r
5(с) www.arkhipenkov.ru
Жесткое управление
«Водопад». Лучше, но не эффективно.
6(с) www.arkhipenkov.ru
Объект
управления
u r
Регулятор
Гибкое управление
Объект
управления
u r
Agile методологии. «Планы — ничто,
планирование — все».
Регулятор
7(с) www.arkhipenkov.ru
Самонаведение
Объект
управления
u r
«Метод частых поставок».
Регулятор Уточнение
цели
8(с) www.arkhipenkov.ru
Классические методы не работают
Объект
управления
u r
Структура и свойства объекта не
известны / меняются со временем.
Регулятор Уточнение
цели
9(с) www.arkhipenkov.ru
Адаптивное управление
Объект
управления
u r
Регулятор Уточнение
цели
Адаптер
a Адаптивное управление,
направленно на изучение и
изменение свойств и структуры
объекта управления: людей и их
взаимодействия.
Задачи руководителя:
1. Обеспечить эффективность каждого участника рабочей группы.
2. Обеспечить эффективные процессы взаимодействия.
10(с) www.arkhipenkov.ru
Задача 1. Обеспечить эффективность каждого участника
рабочей группы
Для «хорошего» управления количество возможных состояний управляющего устройства (разнообразие) должно быть не меньше, чем количество состояний объекта управления.
Источник: У.Р.Эшби “Введение в
кибернетику” М., ИЛ, 1959
Наблюдать
Общаться Анализировать
Синтезировать
ПробыватьОбобщать
12(с) www.arkhipenkov.ru
(с) www.arkhipenkov.ru 13
История #1 «О
сферических конях»• Коммуникация
– И.Иванов. Пытается решать проблему для самого общего случая, повторяется, рассматривая вопрос с разных сторон, пытается связать обсуждаемую проблему с другими.
– В.Пупкин. Постоянно задает вопросы: А кто? А где? А когда? А ты это пробовал? А сколько раз? А это нам сейчас надо?
• Результат
– И.Иванов: «Этот Пупкин просто тянет время своими глупыми вопросами! Он не хочет ничего менять! Лишь бы нечего не делать!»
– В.Пупкин: «Этот Иванов опять рассуждает о сферических конях в вакууме! Конкретные вопросы его не интересуют! Будет и дальше постоянно генерировать свои новые идеи! Лишь бы ничего не делать!»
(с) www.arkhipenkov.ru 14
Поведение человека
• Тип личности обеспечивает
относительное постоянство
ответных реакций человека.
• В мире разработано более 150
моделей.
• MBTI, на основе типологии
К.Юнга, наиболее широко
применяемая модель на
протяжении последних 40 лет.
Тип личности
Опыт
Окружение
Интеллект
Мотивация
ВоспитаниеРоль
(с) www.arkhipenkov.ru 15
Типы Майерс-Бриггс [1]
MBTI Значение
Экстраверты /
интроверты
Направление энергии
(психической
активности)
Конкретное
восприятие /
интуиция
Сбор информации
Логика / этика Принятие решений
Рациональность /
иррациональность
Способ
взаимодействия с
внешним миром
Б. Шнейдерман, «Психология программирования», М., Радио и связь, 1984
История #2 «Все достало!»Старший программист
• Имеет глубокие знания и развитый интеллект, быстро осваивает
все новое, нацелен на решение трудных задач. Пользуется
заслуженным авторитетом среди коллег.
(с) www.arkhipenkov.ru 16
• В начале проекта активно выдвигал новые идеи, убедительно их обосновывал, добивался их признания всеми. Находил неизвестные возможности, существенно сократившие трудоемкость работ по проекту.
• В середине проекта потерял интерес. Стал «витать в облаках» и отвлекаться на изучение каких-то новых технологий. Постоянно заваливает сроки, делает глупые ошибки, непростительные для его опыта. Расхолаживающевоздействует на команду.
Командные роли[2]
17(с) www.arkhipenkov.ru
Генератор идей
Исследователь ресурсов
Координатор
Мотиватор (шейпер)
Аналитик (критик)
Вдохновитель команды
Реализатор
Контролер (педант)
Специалист
История #3. «Программист Ашманова» [3]
Программист:
• Ну, не знаю, у меня на машине всѐ работает.
• Я уже неделю ночами работаю, а вы меня укоряете за срыв срока.
• К пятнице готово не будет, но в понедельник — точно. Или во вторник.
• Чего там планировать, я быстрее сделаю и всѐ уже будет работать.
• Планировать разработку бессмысленно, жизнь всѐ равно богаче.
• Программные проекты всегда срывают сроки потому, что это сложное и творческое дело, вроде научных исследований.
(с) www.arkhipenkov.ru 18
(с) www.arkhipenkov.ru 19
История #4. «Делаем все по правилам!»
Программист
• Стремиться сделать наиболее общее решение задачи, учесть все возможные последующие изменения и расширения.
• Старается разработать самый быстрый алгоритм, требующий минимальных ресурсов.
• Использует в решении все лучшие практики, паттерны проектирования, самые новые инструменты.
Навыки программиста
(с) www.arkhipenkov.ru 20
• Проводит декомпозицию задачи и
проектирует ее решение.
• Адекватно оценивает затраты на
выполнение.
• Планирует свою работу и составляет
график.
• Соблюдает принятые стандарты.
• Обеспечивает требуемое качество,
минимизируя затраты и риски.
• Выполняет тестирование и отладку кода.
• Анализирует найденные дефекты и
отклонения от графика.
• Корректирует свой рабочий процесс для их
предотвращения в будущем.
Для того чтобы ваш
сотрудник мог эффективно
решить поставленную вами
задачу, необходимо и
достаточно выполнение
четырех условий:
1. Понимание целей работы.
2. Умение ее делать.
3. Возможность ее сделать.
4. Желание ее сделать.
21(с) www.arkhipenkov.ru
Штурман-направляет
Наставник-обучает
Помощник-обеспечивает
Вдохновитель-мотивирует
22(с) www.arkhipenkov.ru
Зависимость мотивов от опыта
Потребности Профессионализм
Стажер Мастер Эксперт
Самоактуализации 10% 50%
Самоуважения 10% 30% 40%
Принадлежности 40% 20% 10%
Безопасности 20%
Материальные 50% 20%
23(с) www.arkhipenkov.ru
Проект – кооперативная игра
Менеджер проекта
Мотивация
24(с) www.arkhipenkov.ru
Задача 2. Обеспечить эффективные процессы взаимодействия
ЭФФЕКТИВНЫЕ КОММУНИКАЦИИ
26(с) www.arkhipenkov.ru
Коммуникации
Коммуникации занимают 50%
рабочего времени.
Неэффективные коммуникации могут
служить причиной провала проекта.
Цели коммуникации:
• Получения информации.
• Высказывание мнения.
• Обучение, инструктирование или руководство.
• Подтверждение, поддержка, поощрение.
• Распоряжение или приказ.
27(с) www.arkhipenkov.ru
Для эффективности коммуникаций надо
• Уметь активно слушать.
• Учитывать:
– индивидуальные особенности людей.
– историю взаимоотношений.
– текущую ситуацию.
– степень формальности обстановки.
• Общаться всегда на равных уровнях.
• Избегать модальных глаголов и повелительного наклонения.
28(с) www.arkhipenkov.ru
Каналы передачи информации
• По оценкам экспертов в области общения:
– 10% информации через слова;
– 30% передается через интонацию;
– 60% – через язык мимики и жестов и может быть еще через что-то, что, например, телевидение не передает.
• Наиболее эффективные коммуникации, если люди находятся в одной комнате. На мой взгляд, 5-7 человек оптимальный размер команды.
• В виртуальных командах эффективность коммуникаций снижается минимум в 2 раза.
Эф
фект
ивн
ост
ь
Способ коммуникации
2 человека у доски
видеоконференция
телефон
видеокассета
звукозаписьбумага
29(с) www.arkhipenkov.ru
(с) www.arkhipenkov.ru 30
• Девиз группы: «Давайте работать, а
не конфликтовать!»
• Все члены команды стараются
избегать конфликтов и поддерживать
согласие.
• Как правило, никто не спорит, все
соглашаются с мнением
руководителя и следуют его
указаниям.
• При возникновении трудных
ситуаций все ждут решения от
руководителя.
• Редкие противоречия разрешаются
путем взаимных уступок.
История #5. «Сверхлояльность»
КОНФЛИКТЫ
31(с) www.arkhipenkov.ru
Объектконфликта
Структура конфликта
Конфликт – столкновение противоречащих интересов, целей, желаний людей в ходе их взаимодействия.
Внутренняя позиция
Внешняяпозиция
Внутренняя позиция
Внешняяпозиция
Сторона А Сторона Б
Вредные: Конфликты отношений – разногласия, связанные с личными и социальными моментами, которые не имеют отношения к работе.Полезные: Конфликты, связанные с задачей, разногласия по поводу подходов к решению.
32(с) www.arkhipenkov.ru
Стили разрешения конфликта
Конкуренция Сотрудничество
Компромисс Приспособление
Уклонение
Выиграл БПроиграл
Про
игр
алВ
ыи
грал
А
33(с) www.arkhipenkov.ru
Сотрудничество
34(с) www.arkhipenkov.ru
• Признать, что конфликт есть.
• Отделить проблему от людей: конкурируют идеи, а не люди.
• Договориться об общем: формулировка проблемы, разделяемые цели.
• Сформулировать видение проблемы каждой из сторон.
• Собрать объективные данные о ситуации.
• Выдвинуть и рассмотреть максимум альтернативных решений.
• Выбрать оптимальное решение, взаимовыгодное для всех сторон.
• Проинформировать о решении всех участников проекта, которых оно касается.
КОМАНДЫ
35(с) www.arkhipenkov.ru
Самоуправляемая команда
36(с) www.arkhipenkov.ru
• Ясность общих ценностей и
целей.
• Доверие, взаимный контроль,
взаимопомощь и
взаимозаменяемость.
• Коллективная ответственность
за результаты труда.
• Всемерное развитие и
использование
индивидуального и группового
потенциалов.
Руководитель программного проекта должен стать лидером, вокруг которого сплотится эффективная команда.
37(с) www.arkhipenkov.ru
Неправильные люди
• Непорядочность.
• Синдром острого дефицита
эмпатии.
• Звезданутость.
• Социальный паразитизм.
• Анархизм.
Рекомендация — лечить
хирургически.
38(с) www.arkhipenkov.ru
Правильные люди
39(с) www.arkhipenkov.ru
E = IQ x EQ2
Эмоциональный интеллект
• Самосознание. Понять свои собственные чувства.
• Самоконтроль. Научиться управлять своими чувствами.
• Эмпатия. Умение увидеть мир глазами другого. Способность к сопереживанию и взаимопомощи.
40(с) www.arkhipenkov.ru
Кол
лект
ивность
управл
ения
Степень признания лидера
Признание: нет.
Доверие: нет.
Признание: нет.
Доверие: да.
Признание: да.
Доверие: нет.
Признание: да.
Доверие: да.
S1. Директивное
управление
S2. Объяснения
S3. Участие
S4.Делегирование
41(с) www.arkhipenkov.ru
Работа менеджера на этапе делегирование
«Точить пилу» — это значит работать на опережение, «играть от защиты»:
• Постоянный мониторинг и оценка эффективности всех процессов, используемых в проекте. «Что лишнее мы делаем?» «Что можно делать проще?» «Что угрожает проекту?». Сокращение ненужных усилий вместо «стремления к новым победам».
• Определение узких мест и применение корректирующих действий там, где процессы начинают буксовать или риски слишком велики.
Важно. Не команда должна приспосабливаться к процессам, а
процессы должны подстраиваться под команду по мере ее развития и
становления.
42(с) www.arkhipenkov.ru
43(с) www.arkhipenkov.ru
Четыре фазы командообразования
Эф
фект
ивн
ост
ь
Время
1. Forming
2. Storming
3. Norming4. Performing
44(с) www.arkhipenkov.ru
Form
ing
Sto
rmin
g
Norm
ing
Perf
orm
ing
Fo
rmin
g
Sto
rmin
g
Norm
ing
Perf
orm
ing
Застой и стагнация
Четыре фазы становления команды должны циклически повторяться, чтобы обеспечить непрерывный рост эффективности.
Эф
фект
ивн
ост
ь
Время
Reforming
45(с) www.arkhipenkov.ru
Растите профессионалов
Программист состоит из четырех компонентов: тело, сердце, разум и душа.
1. Телу необходимы деньги и безопасность. 2. Сердцу — любовь и признание. 3. Разуму – развитие и
самосовершенствование. 4. Душе – самореализация.
(с) www.arkhipenkov.ru 46
Источники и дополнительная литература
•Том Демарко, Тимоти Листер,
«Человеческий фактор:
успешные проекты и команды»,
Спб. Символ-Плюс, 2005
•Стивен У. Фланнес, Джинджер
Левин, «Навыки работы с
людьми для менеджеров
проектов», М., Технологии
управления Спайдер, 2004 г.
•С. Архипенков, «Руководство
командой разработчиков
программного обеспечения.
Прикладные мысли», 2008
(http://www.arkhipenkov.ru).
47(с) www.arkhipenkov.ru
ВОПРОСЫ
48(с) www.arkhipenkov.ru
Команды разработчиков зависят от эффективного руководства, которое поможет им достичь своих целей в рамках параметров каждого проекта. Управление командой разработчиков требует определенных навыков, знаний в области разработки и целеустремленности. Понимание того, как эффективно управлять командой разработчиков, может помочь вам развить навыки для работы и создать более продуктивную и надежную команду. В этой статье мы объясним важность управления командой разработчиков, обсудим, как это сделать, и поделимся преимуществами внедрения более эффективных процессов управления.
Почему важно управлять командой разработчиков
Управление командой разработчиков важно, потому что лучшее руководство может позволить команде более эффективно достигать своих целей. Это также может помочь командам быть более продуктивными и сосредоточиться на определенных талантах, таких как инновации и креативность. Эффективное лидерство создает ответственность внутри команды и лучше гарантирует, что каждый понимает ожидания команды и проекта. Руководитель группы также разделяет ответственность за успехи и неудачи команды, поэтому важно, чтобы он сосредоточился на развитии лидерских качеств, чтобы улучшить свои лидерские навыки и привести команду к успеху.
Как управлять командой разработчиков
Управлять командой разработчиков часто становится проще, когда вы понимаете, как работает ваша команда, каковы параметры каждого проекта и почему важны лидерские качества. Вот шесть шагов для улучшения ваших навыков управления командой:
1. Определите и сообщите об ожиданиях
Одним из наиболее важных шагов в управлении командой разработчиков является определение индивидуальных и коллективных ожиданий для каждого проекта и команды как единого целого. Ожидания помогают установить параметры для проектов, производительности команды и индивидуальной производительности. Они также помогают установить границы и привлечь членов команды к ответственности за их вклад в проект. Постарайтесь определить индивидуальные и групповые ожидания с самого начала проекта и подкреплять их по мере продвижения проекта. Это, вероятно, требует частого и четкого общения через групповые собрания, электронные письма или индивидуальные конференции с членами команды.
2. Регулярно соблюдайте сроки
Сроки важны для проекта, потому что они определяют дату завершения и скорость разработки. Установление жестких сроков дает команде цели и может помочь отдельным членам команды лучше спланировать свой вклад в проект. Важно сообщать сроки выполнения проекта каждому члену команды, чтобы убедиться, что они понимают сроки. Это включает в себя основные вехи, такие как дата сдачи проекта, и более мелкие вехи, такие как запуск продукта или первый цикл обзора клиента. Старайтесь как можно чаще сообщать об этих сроках своей команде с помощью электронных писем или командных сообщений в программном обеспечении для управления проектами.
3. Будьте доступны для команды
В процессе разработки у команды могут возникнуть вопросы, замечания или предложения по проекту. Обеспечьте максимальную доступность для каждого члена команды во время разработки, чтобы вы могли быстро решать проблемы или улучшать процесс разработки. Это может помочь вам установить четкий стандарт общения для себя и команды и убедиться, что все работают для достижения одной цели. Рассмотрите возможность выделения рабочих часов для индивидуальных встреч, регулярно проверяйте свою электронную почту или платформы для обмена сообщениями и проводите еженедельные групповые собрания, чтобы улучшить общение в команде.
4. Используйте программное обеспечение для совместной работы
Современные технологии предоставляют командам разработчиков множество инструментов для совместной работы, общения и хранения файлов. Рассмотрите возможность использования платформы управления проектами или платформы облачного хранилища для сохранения, совместного использования и совместной работы над файлами проекта. Многие из этих программ имеют встроенные инструменты планирования или связи, такие как обмен мгновенными сообщениями и групповые календари. Это может помочь вам лучше организовать командные цели, ожидания и сроки для более эффективного процесса разработки. Многие платформы также делают файлы и командные работы более доступными для удаленных сотрудников, что может улучшить совместную работу и инклюзивность команды.
5. Установите сроки проекта для членов команды
Временная шкала проекта обычно является визуальным представлением текущего и ожидаемого проекта. Эта визуализация помогает членам команды видеть свое текущее состояние и то, когда вы ожидаете, что они достигнут определенных этапов. Вы также можете создать индивидуальные сроки проекта для каждого члена команды, чтобы выделить их вклад в проект и помочь им понять свою роль в процессе разработки. Это может повысить их уверенность и вдохновить на достижение личных целей во время разработки.
6. Формируйте отношения с членами команды
Еще одним важным шагом в управлении командой разработчиков является формирование отношений с каждым членом вашей команды. Профессиональные отношения могут помочь вам установить границы и взаимное уважение. Когда члены команды уважают своих менеджеров, они могут работать лучше и продуктивнее. Они также могут ценить взаимное уважение, которое они получают от менеджеров, которые показывают им, что они ценны для команды, проекта и успеха бизнеса. Сосредоточьтесь на уважительных беседах, расспросах об интересах вашей команды и изучении их личных мотивов, чтобы наладить отношения и вдохновить на прогресс.
Преимущества передовых методов управления
Применяя лучшие методы управления, руководители групп могут получить следующие преимущества для своих команд и для себя:
-
Улучшение отношений с командой: менеджеры могут формировать более значимые отношения с членами команды, основанные на взаимном уважении усилий друг друга. Улучшение отношений между членами команды может повысить производительность и инновации.
-
Больше довольных клиентов: с более продуктивной, совместной и инновационной командой проекты по разработке могут развиваться быстрее и качественнее. Это может повысить общую удовлетворенность клиентов компанией, увеличить доход и узнаваемость бренда.
-
Более высокий доход от каждого проекта: Лучшее управление часто помогает разработчикам улучшить качество своей работы и стабильность доставки. Повышение точности и более быстрая доставка конечных продуктов могут помочь увеличить доход от проекта.
-
Повышение уверенности в своих лидерских способностях. Сосредоточив внимание на развитии своих управленческих навыков, лидеры групп могут повысить свою личную уверенность и уверенность своей команды в своих лидерских способностях. Это может помочь им завершить более крупные или более сложные проекты и вдохновить членов их команды на успех.