Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
2007 г.

Антипаттерны руководства командами разработки ПО

Сергей Архипенков

Прокомментировать статью можно здесь

«Программист рожден для счастья…,
а приходится работать!»

(с) В. Короленко + программисты

О чем?

Некоторые руководители программных проектов, в первую очередь начинающие, в работе с людьми постоянно наступают на одни и те же грабли. В компьютерной науке для подобных частонаступаемых граблей придумано название «антипаттерны» - это повторно используемые практики, которые могут давать видимость эффекта и даже временный эффект, однако, их применение наносит несоизмеримый ущерб конечному результату. Цель статьи - собрать вместе некоторые наиболее тяжелые грабли (антипаттерны), которые встречаются на пути управления командами разработки ПО, и попытаться объяснить, почему на них не стоит наступать.

Первоисточники

«Русские программисты никогда не читают руководств», (с) утерян в недрах FIDO. То, что приходится наблюдать в управлении проектами разработки ПО, убеждает, что российские менеджеры программных проектов так же, как и программисты, не читают руководства по работе с людьми. Вот перечень книг, которые, на мой взгляд, необходимо (но, разумеется, не достаточно) прочесть и усвоить каждому руководителю программных проектов, если он хочет быть эффективным.
  1. Стивен Р. Кови, «7 навыков высокоэффективных людей. Мощные инструменты развития личности», 2-е изд., М., Альпина Бизнес Букс, 2007
  2. Алан Картер, Колстон Сенджер, «Программистский камень», 1997 (русский перевод С.Козлов)
  3. Кьелл А. Нордстрем, Йонас Риддерстрале, «Бизнес в стиле фанк. Капитал пляшет под дудку таланта», Стокгольмская школа экономики в Санкт-Петербурге, 2005 г.
  4. Том Демарко, Тимоти Листер, Человеческий фактор: успешные проекты и команды, Санкт-Петербург, Символ-Плюс, 2005
Примечание. Все совпадения с этими, а также с другими многочисленными источниками не случайны и означают, что это действительно так – проверено на собственном опыте.

В какое время мы работаем?

Скажу сразу, что ответ: «с 9:00 до 18:00» - неправильный. Мы работаем в век «информатики и кибернетики», который еще называется «постиндустриальное общество». Отличительные особенности этой новой общественно-экономической формации следующие.

Эпоха перемен. Все в мире стало непрерывно и стремительно изменяться. Изобилие стало причиной острейшей конкуренции. Инновации - неотъемлемый атрибут нашего времени. «Если у вас медленный доступ в Интернет, вы можете навсегда отстать от развития информационных технологий». Практика должна постоянно перестраиваться применительно к новым и новым условиям. Пример. Hewlett-Packard получает большую долю прибыли на товарах, которые год назад даже не существовали.

Глобализация. Всеобщая взаимозависимость и взаимосвязанность. Транснациональные компании, бизнес идет туда, где дешевле рабочая сила. Интернет. Конкуренция без границ. Пример.Google. За ночь любой из нас в принципе может создать многомиллионную компанию у себя в гараже. С помощью Интернета вы можете выйти на рынок, на котором более 100 млн. потребителей.

Все решают таланты. Простая мобилизация средств и усилий уже не может обеспечить прогресс. Вспомним Ф. Брукса, «Если проект не укладывается в сроки, то добавление рабочей силы задержит его еще больше». Идею богатства теперь связывают не с деньгами, а с людьми — не с финансовым капиталом, а с «человеческим». Рынок труда превращается в рынок независимых специалистов и его участникам все больше известно о возможных вариантах выбора. Работники интеллектуального труда начинают самостоятельно определять себе цену.

Интеллект - основная производственная сила постиндустриального общества. От 70 до 80% всего, что сегодня делается людьми, делается при помощи их интеллекта. В любом товаре, сделанном в США доля зарплаты - 70 процентов (в России, пока, - только 30). Но, как писал Алан Картер, «Мы, программисты, - из числа наиболее мыслящих людей в обществе», и все, что делается в разработке ПО, создается исключительно при помощи интеллекта.

Известно, что производительность программистов может отличаться в десятки раз. В индустриальную эпоху производительность ручного труда увеличилась более чем в 50 раз. Задача менеджеров XXI века - сделать воспроизводимой высокую эффективность интеллектуальной деятельности.

Наш ответ на вызов времени – это:

Проекты. Сделать то, до чего другие компании еще не додумались, сделать это как можно быстрее, иначе это сделают другие. Предложить потребителю более качественный продукт или такой продукт, потребность в котором потребитель даже не может пока осознать.

Команды. Самоорганизация и самоуправление совместной деятельностью, взаимный контроль, взаимопомощь и взаимозаменяемость, ясность общих ценностей и целей, коллективная ответственность за результаты труда, всемерное развитие и использование индивидуального и группового потенциалов.

Лидерство. Умение руководить людьми сегодня становятся ключом к конкурентному преимуществу. Это искусство достижения выдающихся результатов с помощью обычных сотрудников. Лидеры должны создавать силовые поля, магниты, которые притягивали бы таланты, а не просто служащих, стремящихся занять рабочие места. Никто больше не верит в руководителей, которые всегда правы и притворяются, что знают больше, чем мы. Стадом баранов может управлять пастух. Стае львов нужен лидер.

Что такое эффективность?

Эффективность это количество полученных результатов на единицу затрат. В новых условиях надо осознать, что люди – это теперь не затраты. Люди - это капитал. Затраты: плата за аренду, коммунальные услуги, электроэнергию и проч., - не надо путать с инвестициями, которые увеличивают капитализацию. Вложение в людей это увеличение числителя в формуле эффективности. Создание и закрепление эффективной команды - это стратегическое приобретение компании. Обучение участников проекта новым технологиям – инвестиции. Уход из компании всех профессионалов после проекта, выполненного по принципу «любой ценой», – затраты, причем очень тяжело восполняемые. Это все равно, что «зарезать курицу, которая несет золотые яйца». Что стоит выигранное сражение, если мы проиграли войну?

Предприятие обязано относится к своим работникам так же, как к своим лучшим клиентам. Те предприятия, которые этого не поняли, не выживут потому, что не смогут быть эффективными. Современное предприятие – это посредник. Предприятие, с одной стороны, предоставляет услуги и продукты своим клиентам, а с другой, - рабочие места для наемного персонала.

Принципы «Одно предприятие на всю жизнь», «Работай продуктивно, а предприятие о тебе позаботится» - ушли в прошлое. Посмотрите на рынок рабочей силы в ИТ - правила устанавливают профессионалы. Мало кого интересует, в каких компаниях вы работали, зато всех интересует, в каких проектах вы участвовали и ваш вклад в их успех.

Цель предприятия, которое стремиться к эффективности, сделать счастливыми не только своих клиентов, но и своих работников. Сегодня у проекта разработки ПО не три, а четыре фактора успеха:

  1. Выполнен в соответствие со спецификациями.
  2. Выполнен в срок.
  3. Выполнен в пределах бюджета.
  4. Каждый участник команды уходил с работы в 18:00 с чувством успеха.
Задача эффективных руководителей сделать так, чтобы этот четвертый фактор успеха был воспроизводимым.

Сегодня эффективный менеджер – это в первую очередь лидер, который признан командой. Во-первых, получил признание своей профессиональной компетентности, во-вторых, своих исключительных человеческих качеств. Не выполнение хотя бы одного из этих условий служит причиной воспроизводства неадекватных методов управления, которые приводят к катастрофическим результатам:

  • Тотальная демотивация исполнителей. Вместо мотивирования сотрудников на успех, мотивирование их на избежание риска и негативных для себя последствий.
  • Подавление свободы, самостоятельности, творчества и инициативы.
  • Деструктивное подчинение. (Это когда все работают строго по инструкции и только в соответствие с указаниями руководства.) Отсутствие ответственности исполнителей. («А какие ко мне претензии? Как сказали, так я и сделал!»)
  • Низкая эффективность и качество работы.
  • Ухудшение морального климата. Вместо доверия и сотрудничества подозрительность и формальное взаимодействие. (А вы никогда не видели, как тимлид беседует с программистом только «под протокол» и с подписями на каждом листе?)
  • Стрессы. Усталость участников. Личные проблемы.
  • Увольнение наиболее профессиональных сотрудников.
  • Провал проекта.
Атипаттерны руководства командами разработки ПО можно разделить на два класса, исходя из «диагноза заболевания» - источника их устойчивого повторения.

Некомпетентность. Руководитель не самостоятелен. Не имеет необходимого опыта. Не является специалистом в своей области. Сильно зависим от окружения и обстоятельств. Не готов брать на себя ответственность. «Армия львов под управлением барана всегда проиграет армии баранов под управлением льва», (с) Наполеон Бонапарт.

Мнительность. Отсутствие доверия между участниками проекта. Чрезмерная настороженность. Скрытность. Неспособность делегировать полномочия. Руководитель не осознал синергию взаимозависимости и взаимопомощи. Все взаимодействия рассматривает только в духе «выиграл/проиграл». Исходит из предпосылок индустриальной эпохи Генри Форда: «Работники ленивы, поэтому им необходимы внешние стимулы для работы. У людей нет честолюбия, и они стараются избавиться от ответственности. Чтобы заставить людей трудиться, необходимо использовать принуждение, контроль и угрозу наказания». Манфред Кетс де Врис называет данное отклонение «параноидальным управлением».

Ниже приведена лишь небольшая часть существующих антипаттернов управления командами. Однако, перечисленные здесь грабли, на мой взгляд, являются наиболее распространенными и тяжелыми по последствиям наступания на них. Следует заметить, что на практике описанные антипаттерны чаще всего применяются не изолировано, а в той или иной композиции.

Антипаттерны некомпетентности

«Я сделал все, что мог!» Руководитель не способен оценить сложность решаемых задач, эффективность способов их решения и реальное состояние проекта. Постоянные негативные оценки прогресса проекта: «Все плохо! Надо делать быстрее! Надо делать лучше!», не вдаваясь в подробности «как это надо делать». Раздувание недостатков до глобальных размеров. Постоянная публичная критика участников команды и жалобы вышестоящему руководству на некомпетентность исполнителей. Надежда на то, что если проект провалится, то удастся свалить вину на команду: «Я сделал все, что мог!». Если же проект окажется успешным – присвоить успех себе: «Если бы я не «строил» команду, ничего бы не получилось!»

«Yes-man!» Руководитель, который полностью зависим от Босса. Всегда согласен с его мнением, как бы оно не расходилось с его собственными взглядами и мнением его команды. Руководствуется принципом: «Возлюби Босса своего и никогда не спорь с ним!». Интересы фирмы, команды, продукта и его пользователей не учитываются вовсе. «Босс хочет, что бы мы закончили проект в два раза быстрее. Как? Это ваша забота, вам за это деньги платят!». Не принимает ни одного решения без согласования с Боссом. Испытывает постоянную потребность «угадать и угодить» Культивирует любимчиков в команде, которые никогда с ним не спорят.

«Охота на ведьм». Руководитель сознает свою некомпетентность и опасается, что если он не возглавит борьбу с «врагами» проекта, то «врагом» проекта может оказаться он сам. Постоянный поиск виновных и «козлов отпущения». Наказания. Разжигание конкуренции в команде: «После проекта останутся только лучшие!». Действия по принципу «разделяй и властвуй». Исполнители проекта распадаются на несколько противоборствующих клик. Пресечение любой критики и опасного для себя поведения подчиненных: «Ваше поведение непрофессионально / некорпоративно!» (вы ни разу не слышали этой фразы – завидую, вам везло с начальниками).

«Нет времени точить пилу!» (в англоязычной википедии у этого антипаттерна другое, более жесткое название – «Headless chicken»). Руководитель не умеет управлять приоритетами, постоянно занимается пожаротушением, полностью погружен в решение неотложных вопросов. Времени на уточнение целей, разработку стратегии, адекватное планирование, оценку и повышение эффективности применяемых процессов не остается. Героический труд («у плохих генералов всегда много героев»). Темп поступления проблем превышает скорость их решения. Большинство задач, которые получают участники проекта, имеют наивысший приоритет и срочность. «Это надо было сделать еще вчера!» Работа постоянно выполняется под давлением нереальных сроков. Обучение, анализ, проектирование и рефакторинг – «Это все потом!». Постоянные сверхурочные и авралы. Большой проблемный код.

Антипаттерны мнительности

«Агрессия». «На то и волк в лесу, чтоб пастух не дремал!» Руководитель стремится удерживать подчиненных вне «зоны комфорта». («Настоящие лидеры задают трудные вопросы и выбивают людей из зоны их комфорта. Затем они управляют возникающим стрессом!», (с) Р.А. Хейфетц, Д.Л. Лори, «Работа лидера», 1997.) Постоянное давление. Нереальные сроки. Сверхурочные. Авралы. Непрерывная критика и понижение самооценки («заодно можно сэкономить на зарплате!»). Грубость. Запугивание. «У нас незаменимых нет!» «Поощрение непричастных и наказание невиновных». Назначение в несколько проектов одновременно. («Чем больше, тем лучше - обязательно что-нибудь провалит! Сотрудник должен все время ощущать свою вину!») Постоянные перемещения людей по горизонтали и вверх-вниз. Обязанности определены самым общим образом: «Ты в ответе за все!» Поручения не зависят от обязанностей. Правила меняются по ходу игры.

«Управление грибами». (Почему грибами? Потому, что грибы держат в темноте и кормят навозом.) Удержание работников в неинформированном и постоянно занятом состоянии. Замыкание всех внешних и внутренних потоков информации на себя. Фильтрация и искажение информации в личных интересах. Зависимость исполнителей от более информированного начальника. Строгое разграничение прав доступа к проектной документации и исходным кодам. Ограничение доступа в Интернет («а вдруг узнают среднюю зарплату на рынке?»), запрет ICQ, препятствование общению с коллегами из других компаний. Загрузить работой так, чтобы времени на обдумывание чего-либо не оставалось. Постоянно находить какие-нибудь «важные и неотложные» дела.

«Микроменеджмент». Отсутствие делегирования в любом виде. Строгий контроль всех работ через активное личное наблюдение. Руководитель замыкает на себя принятие решений по всем вопросам. Считает себя самым компетентным. Влезает во все самые мелкие работы, от структуры таблиц в БД до цвета шрифтов в интерфейсе. Вместо объяснения того, что надо делать, постоянные указания на то, как надо делать. Навязывает собственные идеи. «Думать – это моя работа! Просто, делай, как я сказал!» Жестко контролирует, каждый шаг исполнителей.

«Методологическое безумие». Безграничная вера руководителя в методологию с большой буквы «М» - всеобъемлющую теорию того, как следует решать весь класс задач, возникающих в процессе производства. «Методологию создавали умные люди, а исполнители некомпетентны!» Методология принимает все решения, люди не принимают решения вовсе. Многоступенчатая бюрократия. Все процессы регламентированы. Все делается по инструкции. Эксперименты запрещены. Применяемые методы ограничены. Установлен тотальный контроль соблюдения регламентов. Инструкции постоянно разрастаются вследствие попыток учесть все возникающие новые ситуации. Внедрены всеобъемлющие нормы и метрики. Большая часть времени исполнителей тратится на соблюдение правил и писанину, которую никто никогда не читает. Большая доля «сизифова труда».

Заключение или Что надо программисту для счастья?

Что? В вашей компании эти методы работают? Сочувствую. Это означает, что вы наняли не тех, кого следует.

Описанные подходы к управлению - наследство из нашего индустриального и аграрного прошлого, где один день был очень похож на другой. Эффективность труда зависела от согласованной работы масс. Работа не требовала большой изобретательности. Труд являлся слепком, копией с деятельности другого человека либо копией своей собственной деятельности, освоенной в предшествующем опыте. Чем больше повторено стандартных действий, тем больше результат! «Нормирование», «тотальный контроль», «пряник и кнут», «человеческий ресурс – это винтик, который легко заменить», - вот главные принципы эффективного менеджмента предыдущих эпох.

В программировании нет повторяющихся задач. После третьего повторения однотипного действия программист пишет утилиту, которая это действие автоматизирует. Никто пока не знает, каким местом программист думает и как он этим местом это делает. Бессмысленно сажать за его спиной нормировщика-контролера с секундомером. Что он увидит и измерит? Не стоит заставлять программистов работать больше, устраивать сверхурочные, авралы и субботники. Работать больше, это совсем не значит - работать продуктивнее. Наоборот. Излишнее давление и суета приводят к непродуманным решениям, большому проблемному коду и многочисленным последующим дорогостоящим переработкам.

Все, кто пытается примерить методы управления фаст-фудом к разработке ПО, обречены.

Программист устроен просто. Он состоит из четырех компонентов: тело, сердце, разум и душа.

  1. Телу необходимы деньги и безопасность.
  2. Сердцу - любовь и признание.
  3. Разуму – развитие и самосовершенствование.
  4. Душе – самореализация.
Предоставьте все это вашим сотрудникам, и эффективность их труда возрастет многократно. (Как? Это вопрос из другой области – теории мотивации. А мы здесь, в основном, - о практике демотивации.) В противном случае профессионалы найдут все это в другой компании, а в вашей останутся только посредственности.
Об авторе
Стаж в разработке ПО 30 лет. Занимался созданием имитационных моделей сложных космических систем в Центре управления полетами. Руководил коммерческой разработкой ПО в компаниях PriceWaterhouseCoopers, Luxoft, CBOSS, в подчинении до 150 человек. Выполнял проекты по заказу Европейского космического агентства (ESA), Даймлер-Бенц Аэроспейс (Германия), Боинг (США), ЦБ РФ, ОАО «Газпром».

На CITForum.ru в 2004 г. было опубликовано эссе Сергея Архипенкова «Психология управления программными проектами».

Управление программистами - непростая задача. Планирование проекта выходит на первый план.

Новости мира IT:

Архив новостей

Последние комментарии:

Loading

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 985 1945361
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2015 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...