Мифический человеко-месяц или как создаются программные системы - Фредерик Брукс 16 стр.


Такой проект определённо хорош, но если полагаться на его идеальное осуществление, это приведёт к катастрофе. Хорошая информационная система не только должна выявлять ошибки в интерфейсах, но и способствовать их исправлению.

Организация крупного программного проекта

Если над проектом работаетnчеловек, то существует(n2-n)/2интерфейсов, через которые может происходить обмен данными, и потенциально существует почти 2 nгрупп, внутри которых должно происходить согласование. Цель организации работы состоит в сокращении необходимого объёма обмена информацией и согласования. Поэтому создание правильной организационной структуры является решающим направлением решения проблем информационного обмена, рассматривавшихся выше.

Способы, которыми сокращается обмен информацией, —разделение трудаиспециализация функций . Древовидная организационная структура отражает уменьшение потребности в подробном обмене информацией при использовании разделения труда и специализации.

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

Рассмотрим древовидную организацию программистов и исследуем существенные характеристики, которыми должны обладать поддеревья, чтобы быть эффективными. Таковыми являются:

1 — задание,

2 — продюсер,

3 — технический директор или архитектор,

4 — график работ,

5 — разделение труда,

6 — определение интерфейсов между разными частями.

Все перечисленное очевидно и обычно, исключая различие между продюсером и техническим директором. Сначала рассмотрим сами эти две функции, а затем их взаимоотношения.

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

А что же технический директор? Он постигает проект, который должен быть реализован, выявляет его составляющие, определяет, как он будет выглядеть внешне, и делает эскиз внутренней структуры. Он обеспечивает единство и концептуальную целостность проекта в целом и таким образом способствует ограничению сложности системы. При возникновении технических проблем он изыскивает их решения или при необходимости изменяет системный проект. Он, согласно прелестному выражению Ала Каппа, является «своим человеком в паршивых делах». Общение его происходит преимущественно внутри команды. Его работа почти исключительно техническая.

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

Возможны три типа отношений, и все они с успехом встречаются на практике.

Одно и то же лицо может быть продюсером и техническим директором.

Это вполне оправдано в маленьких командах, насчитывающих от трех до шести программистов. В более крупных проектах это очень редко осуществимо по двум причинам. Во-первых, редко встречаются люди, сочетающие в себе большие административные и технические способности. Мыслители встречаются редко, практики ещё реже, но реже всего — мыслители-практики.

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

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

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

Что менее очевидно, продюсер может с помощью символов статуса (таких как размер кабинета, ковровое покрытие, мебель, рассылка вторых экземпляров документов и т.п.) подчёркивать, что директор, находясь вне административной цепочки, обладает, тем не менее, властью в принятии решений.

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

Директор может быть начальником, а продюсер — его правой рукой.Роберт Хайнлайн ярко описывает такую организацию в «Человеке, продавшем Луну».

Костёр закрыл лицо руками, затем взглянул вверх:

— Я разбираюсь в этом. Я знаю, что нужно делать, но всякий раз, когда я пытаюсь заняться технической проблемой, какой-нибудь болван хочет, чтобы я принял решение по поводу грузовиков, или телефонов, или ещё какой-нибудь ерунды. Простите, мистер Гарриман. Мне казалось, я справлюсь со всем этим.

Гарриман очень мягко сказал:

— Не отчаивайся, Боб. Ты ведь недосыпал последнее время, правда? Вот что я скажу: мы перехитрим Фергюсона. Я возьму твой стол на несколько дней и построю организацию, которая оградит тебя от таких вещей. Я хочу, чтобы твои мозги были заняты векторами реакции, эффективностью топлива и сложностями проекта, а не контрактами по грузовикам. — Гарриман подошёл к двери, выглянул наружу и заметил человека, который был, возможно, старшим клерком. — Эй, вы! Подойдите сюда!

Человек показался озадаченным, встал и, подойдя к двери, спросил:

— Да?

— Я хочу, чтобы этот стол в углу и все, что на нём, были перенесены в пустую комнату на этом этаже, и немедленно.

Он проследил, как Костёр и второй его стол переехали в другую комнату, убедился, что телефон в новом помещении отключён, и, подумав, заставил перенести туда диван.

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

Часа через три он позвал Баркли, чтобы познакомить его с Костером. Главный инженер спал, сидя за столом, положив голову на руки. Гарриман хотел выйти, но Костёр проснулся.

Назад Дальше