УМП Технологические подходы к разработке ПО 75
• Матричная.
В линейно-функциональных организациях весь персонал разбит на непересекающиеся
функциональные подразделения, каждое из которых выполняет определенный специфи-
ческий вид работы. Персонал отчитывается перед руководителем подразделения. Такой
способ организации производства хорош для организаций, выполняющих не отдельные
проекты, а постоянный, непрерывный и отлаженный производственный процесс. Напри-
мер, конвейерное производство автомобилей или розничная торговля. Никаких специаль-
ных команд проекта не создается. При производстве программного обеспечения линейно-
функциональная структура практически не применяется и поэтому здесь не рассматрива-
ется.
В проектно-ориентированных организациях персонал проекта организационно отчитыва-
ется перед руководителем проекта. Руководитель проекта является административным на-
чальником команды проекта. Разработчик всегда прикреплен к какому-либо конкретному
проекту и организационно не связан с другими разработчиками в других проектах внутри
компании. Преимуществом является упрощение вертикали власти, однако основной не-
достаток заключается в профессиональной изоляции разработчиков. Например, очень ма-
ленькие компании почти всегда организованы по принципу проектной ориентации, однако
даже огромные компании иногда организуются так же, особенно когда хотят произвести
впечатление на заказчика.
Вообще говоря, системы отчетности на практике имеют более сложную и комплексную
структуру, чем в проектно-ориентированных организациях. Это происходит из-за исполь-
зования матричной структуры организации. Такая структура предусматривает, что слу-
жащие относятся к функциональным подразделениям (например, отдел разработки, отдел
продаж и т. п.) и выделяются этими подразделениями для участия в том или ином проекте.
Таким образом, административный начальник программиста, отвечающий за своего под-
чиненного, является руководителем соответствующего функционального подразделения
(например, отдел разработки). Однако в каждом проекте, в котором разработчик принима-
ет участие, он одновременно подчиняется руководителю проекта. Обычно разработчиков
на постоянной основе привлекают не более чем к двум-трем проектам. Основным досто-
инством матричных организаций является профессионализм и возможность улучшения
навыков. К недостаткам относится нечеткость в линиях субординации. Довольно часто
компании стараются найти золотую середину между матричной и проектно-
ориентированной структурами.
Мы будем считать, что так или иначе, здесь рассматриваются такие организации, в кото-
рых существуют команды проекта.
4.1.3. Развитие команды и развитие персонала
Каждый проект, кроме достижения основной своей цели, должен использоваться руково-
дителем проекта для развития команды. А именно, в процессе выполнения проекта:
• происходит приобретение участниками новых технических знаний, освоение но-
вых технологий, т.е. техническое обучение и совершенствование профессиональ-
ного мастерства,
• вырабатываются и укрепляются навыки командной работы,
• приобретается опыт выполнения проектов в соответствии с принятой в компании
схемой организации процесса разработки программного обеспечения.
Поэтому косвенным результатом любого проекта является развитие персонала, что приво-
дит к более успешному выполнению последующих проектов.
4.1.4. Специализация, кооперация и взаимодействие
Программирование отнюдь не однородно. В модели процесса мы выделили несколько
фаз. Успешное выполнение каждая из фаз требует наличия определенных навыков у ра-
ботников. Частично эти навыки для разных фаз совпадают, но есть и специальные навыки,