Г.Я. Гольдштейн      
Стратегический инновационный менеджмент       
Учебное пособие. Таганрог: Изд-во ТРТУ, 2004.

12. ПРИМЕРЫ МИРОВОЙ ПРАКТИКИ ОРГАНИЗАЦИИ УПРАВЛЕНИЯ НИОКР
    

12.1. Общность практики в больших и малых фирмах

При всем разнообразии подходов к организации и управлению НИОКР фирмы опираются на небольшое число проверенных практикой принципов [43, 44].

Сравним принципы организации НИОКР в большой корпорации, такой как Microsoft, и в малой фирме той же направленности SIL (Академический вычислительной отдел Летнего института лингвистики в г. Далласе, США).

Каждый проект, выполняемый по методике SIL, первоначально формируется так называемой руководящей командой. Благодаря наличию этой команды, которую можно назвать руководящим ядром, вся проектная команда может забыть о внешних обстоятельствах и сосредоточиться непосредственно на проекте. Здесь выполняется принцип: “Хороший менеджер – преодолеватель препятствий и поставщик ресурсов”.

Зона ответственности руководящего ядра:

– идентификация целей проекта;
– подготовка проектного задания;
– выбор и комплектование членов команды;
– определение других необходимых ресурсов и обеспечение ими проектной команды;
– мониторинг процесса в работе проектной команды;
– “сигнализация вовне” о результатах, полученных командой проекта;
– обеспечение совместимости деятельности команды с работой остальной части организации.

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

Процесс на уровне проекта начинается с составления ряда исходных документов: спецификации требований, определения проекта (название, цели, этапы, команды), плана проекта.

Роли в проектной команде распределяются в зависимости от характера проекта. Команда может включать минимально стратегического менеджера разработки и двух программистов. В проектной команде должны быть выделены три роли:

– имплементатор (комплексный специалист), который отслеживает программные блоки для всего проекта;
– специалист по области применения, который отвечает за выполнение требований спецификации и ревизует результаты;
– специалист по ревизии технических аспектов разработки.

Процесс планирования ведется по методу “сверху – вниз” и детализован до модулей. Каждый член команды работает в своем модуле, длительность которого 10-30 дней.

В каждом модуле устанавливаются пять ключевых точек:

– план составлен,
– план одобрен командой проекта (или принято решение о его развитии),
– первоначальный вариант выполнен,
– обзор и ревизия закончены (получено одобрение команды проекта и началось тестирование),
– оценка работы (модуль выполнен и оценен руководителем).

Процесс планирования и разработки проекта можно сжато изложить так.

1. Процесс на уровне проекта.
1.1. Определение проекта.
Организация решает делать проект и формирует руководящее ядро.
Руководящее ядро пишет резюме и формирует команду проекта.
1.2. План проекта.
Проектная команда разбивает проект на стадии, устанавливает стандарты и процедуры обеспечения качества работы, это получает одобрение руководящего ядра (если необходимо - проводится ревизия).
1.3. Выполнение проекта.
Проектная команда следует установленному порядку процесса для каждой стадии плана проекта.
Руководящее ядро преодолевает препятствия и обеспечивает нужные ресурсы.
1.4. Оценка проекта.
И руководящее ядро, и проектная команда ищут пути улучшения продукта, улучшения проекта и проектного процесса.

2. Процесс на уровне этапа.
2.1. План этапа.
Команда проекта разбивает этап на модули, приписывая каждый модуль члену команды, который представляет план руководящему ядру (при необходимости план пересматривается).
2.2. Выполнение этапа.
Проектная команда следует процессу на уровне модуля для каждого модуля этапа. План пересматривается по результатам опроса потребителей.
Лидер команды преодолевает препятствия и обеспечивает ресурсы, поддерживая прогресс в соответствии с планом этапа.
2.3. Оценка этапа.
Команда проекта рассматривает пути улучшения продукта этапа, улучшая план этапа и процесс проектирования.

3. Процесс на уровне модуля.
3.1. План модуля.
Программист (или старший разработчик) разрабатывает детальную методику и тестовую программу для проектной команды или план работы по модулю.
3.2. Выполнение модуля.
Программист следует разработанной методике, выполняет план, который может пересматриваться по замечаниям проектной команды.
3.3. Оценка модуля.

Лидер команды и старший программист рассматривают пути улучшения продукта модуля, улучшения плана этапа, улучшения процесса проекта.

В любом проектировании возникает проблема специфицирования в начале проекта сложной системы. Практически всегда в ходе выполнения проекта она будет дорабатываться или даже полностью меняться. Поэтому SIL при разработке ПО применяет итеративную стратегию. Блокирование проблемы сложности осуществляется следующими пятью способами.

1. Планирование осуществляется по частям. Наиболее полно и почти что с минутной разбивкой во времени осуществляется планирование начальных частей проекта, а с большей свободой – последующих. Проект, как правило, разбит на двухнедельные части (модули).

2. Каждый модуль проекта превращается в законченную рабочую систему определенного функционального назначения и сразу же тестируется. Это значительно выгоднее, чем организовывать большое тестирование в конце этапа проекта. В конце каждого модуля предусмотрена его интеграция в остальной проект. Имплентатор включает новые блоки программ в систему программных блоков проекта и делает ее новую версию для остальной проектной команды. На каждом уровне планирования выделяется отдельное время для ревизии выполненного пользователем и старшим по должности.

3. Объектная технология, которую применяет SIL, хорошо встраивается в итеративный характер разработки.

4. Быстрое создание прототипов и испытание созданной части проекта пользователем помогает разработчикам быстро довести свои идеи до пользователя и дает последнему возможность конкретизировать свое отношение к ним.

5. Каждый модуль полностью тестируется перед передачей его результатов остальной команде. Для этого используются программы автоматической проверки, а затем новые коды передаются на вход системы. Так как для этого необходимо не более одного-двух дней, то исполнители склонны делать это “в рабочем порядке”, не дожидаясь выделенной планом фазы тестирования. Так как каждый модуль включает оценку валидности его результатов в системе, то устраняются многие побочные эффекты новых кодов перед их использованием остальной частью проектной команды.

На основании своего опыта SIL сформулировал ряд рекомендаций:

1. Когда система слишком сложна для специфицирования, ускорьте создание ее прототипа.

2. Команды должны выработать стандартные процедуры разработки и описать их в деталях. Это часть того, что способствует формированию команд.

3. Включайте всю команду в организацию процессов разработки, это создает чувство сопричастности.

4. Если ваш процесс не изменяется, если он не является объектом дискуссии и дебатов, то он не может быть использован. Хороший процесс органичен, превращается в привычку. Как и любое действие, вы можете его документировать. Лучшее, что вы можете сделать – руководить его развитием, но попытки ускорить это в приказном порядке больше похожи на поощрение восстания, чем на участие.

5. Точно определяйте роль каждого члена команды и делайте так, чтобы каждая команда имела персонально обозначенную ключевую роль.

6. Организуйте эффективные коммуникации в вашем процессе - тренируйте членов команды в командной динамике и эффективной технике совещаний.

7. Разделяйте проекты на малые куски. Выполняйте большое дело путем малых шагов.

8. Выпускайте письменный отчет в конце каждого этапа, однако спрессовывайте время, которое вы можете уделить этому. Это поможет понять вам, что же случилось, и спланировать следующий этап более тщательно. Публикуйте отчет для ваших старших исполнителей и руководства.

9. Небольшие изменения лучше, чем их отсутствие. И всегда хорошо, если имеется ряд изменений.

10. Желательно, чтобы команда принимала решения консенсусом. Это позволяет работать вместе для нахождения приемлемых решений перед внесением их в план. Это не всегда легко, но групповой консенсус – помощь в создании техники.

11. Защищайте людей от препятствий и излишнего вмешательства руководства.

12. Обычно тестируйте план. Как правило, план отводит 1/3 времени кодированию, 1/3 – тестированию и ревизии и 1/3 чему-нибудь еще.

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

Распространено мнение, что малые команды талантливых людей лучше в сфере НИОКР, чем большие команды средних или даже талантливых людей. Было оценено [44], что при разработке программного обеспечения талантливые программисты в десять и более раз продуктивней наименее талантливых в команде. Однако это может оказаться неверным для других типов исследований и разработок, инжиниринга и прочей интеллектуальной работы. В то же время существует и другая истина: малым командам присущи и определенные ограничения, например, при создании очень больших изделий в сжатые сроки. В автомобильной промышленности для разработки нового образца требуется около семи миллионов инженеро-часов. В фирмах “Тойота”, “Хонда”, “Крайслер” над одним образцом работают 500-1000 инженеров в течение 3-5 лет. В “Боинге” этим заняты несколько тысяч инженеров.

Многие менеджеры проектов программного обеспечения предпочитают очень малые проектные команды из дюжины или менее программистов. Это наследие культуры ранних лет программирования, когда два или три человека могли создать новый продукт. Первые версии MS-DOS, Word и Excel в начале 80-х годов создавались программными командами из 6–10 человек. Они включали несколько десятков тысяч программных строк. Но такие малые команды даже в 60-е годы не могли быть использованы IBM, когда в ней около тысячи человек создавали операционную систему для 360 компьютеров. В 1993 году первая версия Windows NT включала 4,5 млн программных строк, а проектная команда состояла в пике занятости из 450 человек. В 1995 году пакет Windows 95 состоял из 11 млн программных строк и над ним работало примерно такое же количество программистов в течение 3 лет. В 1996 году команда из 300 человек создала ключевые компоненты Internet Exрlorer browser, а на несколько сотен больше работали над устройствами типа Internet–mail [44].

Автор работы [44], профессор Слоуновской школы менеджмента Массачусетского технологического института исследовал работу фирмы Microsoft с 1986 по 1995годы. Основной подход Microsoft к управлению НИОКР характеризуется лозунгом “Синхронизация и стабилизация”. Вывод исследования был концептуально прост. В фирме синхронизуется то, что люди делают индивидуально и как члены команды, работая параллельно над разными частями проблемы, периодически стабилизируются разные стороны проекта на текущих выходах процесса еще до его полного окончания. Термин “выход” относится к акту компиляции или “интегрирования” законченных частей программного обеспечения в процессе разработки. При этом выясняется, какие функции работают и какие проблемы существуют.

В больших проектах большое число членов команды разрабатывают большое число отдельных компонентов проекта, которые тесно взаимосвязаны. Проблема начальных этапов разработки состоит в правильной идентификации этих частей. Менеджеры корпорации Microsoft пытаются структурировать и координировать работу отдельных инженеров и команд таким образом, чтобы предоставить исполнителям определенную гибкость в работе и развернуть параллельную разработку деталей проекта на этих этапах. Для обеспечения экономии времени и качества разработки требуется тестирование законченных частей совместно с потребителями и отработка конструктивных элементов уже в ходе разработки.

В области разработки программного обеспечения с середины семидесятых годов исследователи и менеджеры много говорят об “итеративном улучшении”, “спиральной модели разработки”, “параллельных альтернативных проектах” и так далее. Многие фирмы пытаются реализовать эти идеи, но делают это медленно и во многом формально. Такой стиль контрастирует с последовательным внедрением в Microsoft параллельной “водопадной” манеры разработок. Процесс разработки организован так, что максимально сближаются и соединяются фазы разработки и тестирования, причем практикуется тесное взаимодействие с потребителями в ходе ОКР. Это отвечает задачам быстрой реализации результатов проекта в условиях быстро меняющейся рыночной ситуации.

Ключевая стратегия фирмы Microsoft в области НИОКР состоит в фокусировании усилий на разработке компонентов при “фиксированных” ресурсах. Известно, что продуктивность людей с идеями зависит от четкой направленности их идейного потенциала. Менеджеры Microsoft заставляют разрабатывающий персонал помнить о том, что люди, вкладывая деньги в приобретение продукции, будут иметь ограниченные возможности. Велик и риск ничего не продать на рынке, особенно такой быстроменяющейся отрасли как программное обеспечение.

Microsoft начинает проект с разработки “резюме ситуации” (обычно это документ на нескольких страницах с определениями цели проекта, приоритетов по потребителям и рыночным сегментам).

Маркетологи фирмы, ставя эти задачи, консультируются с программными менеджерами. Затем последние консультируются с разработчиками, выделяя части проекта и организуя их размещение. В общем, подход соответствует известной схеме Твисса [7].

Спецификация, естественно, не полностью определяет все детали проекта. В дальнейшем она трансформируется в результате естественного “обучения” исполнителей в процессе работы. Опыт Microsoft свидетельствует о том, что такие изменения затрагивают 30% и более первоначальной спецификации. Далее проект, как уже говорилось, делится на части и в нем выделяются три или четыре подпроекта с ключевыми точками, которые составляют главную часть проекта. Все аспектные части проходят полный цикл разработки, интеграции этих аспектов, тестирования и фиксации в каждой ключевой точке подпроекта.

Отдельные части проектной команды синхронизируют свою работу на основе дневной или недельной временной сетки. В конце выполнения каждой части проекта (и всего подпроекта) разработчики фиксируют все ошибки, тестируют работу и предоставляют возможность первым пользователям ее оценить. Такая частая коррекция ошибок стабилизирует продукт, позволяет разработчикам понять, что сделано, а где появились проблемы.

Microsoft также устанавливает приоритеты частей в каждой ключевой точке, чтобы первыми выполнить наиболее важные части проекта.

Устанавливается буферное время (20-50% от полного) в рамках каждого подпроекта для того, чтобы в случае возникновения непредвиденных трудностей или задержек, или дополнительных работ, не срывались основные сроки. Разработчики продукта составляют краткий обзор положения перед кодированием, так как персонал реализует и то, что не было предусмотрено ранее для улучшения продукта. Такой подход оставляет разработчикам благоприятные возможности, но и таит определенные угрозы. В частности, для прикладных продуктов команды разработки пытаются переходить от частей схемы прямо к особенностям их использования, что типично для поведения потребителей, и это требует тщательного обдумывания и тестирования с пользователями. Дополнительно проекты наиболее прикладного характера имеют модульную структуру, что позволяет командам частично добавлять или комбинировать относительно легко отдельные части.

Менеджеры обычно позволяют членам команды иметь свои собственные планы, но только после того, как они согласуют это в деталях с остальным персоналом. Менеджеры затем “фиксируют” проектные ресурсы по численности команды по каждому проекту. Они также ограничивают проект во времени, особенно в приложениях, таких как Office или мультимедийный продукт.

Microsoft использует вторую стратегию – параллельное выполнение чего-то с частичной синхронизацией. Целью при этом является дисциплина в процессе разработки без непрерывного контроля каждый день. Большие проекты проще в планировании и управлении, если они выполняются четко определенными функциональными группами, по точным правилам и под контролем. Этот подход, однако, не способствует инновациям и переоценивает важность синхронизации. Связь и координация затруднена по функциям и фазам и это может вызвать задержку осуществления проекта и дополнительную необходимость в людях.

Это заставляет Microsoft делать так, как это делается в малых компаниях и при индивидуальных исполнителях – обеспечивать свободную работу в параллель.

Подход Microsoft к организации маркетинга НИОКР (“синхронизация – стабилизация”) дает ценные уроки в том, как управлять большими командами по проекту и как интегрировать работу многих подкоманд или отдельных лиц.

Интеграционный процесс особенно труден в проектировании программного обеспечения, так как здесь можно легко менять компоненты и трудно предвидеть последствия этого для других компонентов и процесса тестирования. Программисты не имеют дела с металлом и производством, которое длится не один месяц. Это – также проблемы технического и управленческого образования.

Для поддержания объемов проектов в небольших пределах менеджеры компании пытаются ограничить их размеры и области разными путями:

– четкое, ограниченное продуктовое видение;
– ограничения по персоналу;
– временные ограничения (обычно создание новой версии существующих продуктов занимает от 9 до 24 месяцев);
– использование делимой продуктовой архитектуры;
– использование делимой процессной архитектуры.

В заключение отметим ключевые элементы подхода Microsoft:

– размеры проекта и области ограничены (ясное и ограниченное продуктовое видение, персонала и ограничения времени);
– делимость продуктовой архитектуры (модули, функции, подсистемы и цели);
– делимость проектной архитектуры (команды по кускам и кластерам, субпроекты по ключевым точкам);
– структура и управление малыми командами (много малых мультифункциональных групп с высокой автономией и ответственностью);
– немного твердых правил по координации и синхронизации (деление проекта по дням, немедленное обнаружение ошибок и их коррекция, стабилизация по ключевым точкам);
– хорошие коммуникации внутри и между функциями и командами (широкая ответственность, одно место, обычный язык, открытая культура);
– гибкость продукта–процесса для подстройки к неизвестному (развитие продуктивной спецификации, буферное время проекта, развитый процесс).

Предыдущая страница | Оглавление | Следующая страница



Защита от автоматического заполнения   Введите символы с картинки*