Сегодня я хочу представить вашему вниманию отрывок из книги Фредерика Брукса "Мифический человеко-месяц".
В самом начале книжки автор описывает, почему ввод новых людей в проект не очень хорошо сказывается на производительности. И действительно, если вдвоем мы сделали работу за месяц, по математической логике, добавь нам еще двоих, и мы за следующий месяц сделаем в 2 раза больше!
Но это только на первый взгляд. А если подумать - то всегда присутствует кривая обучения. Пока человек будет "входить" в проект, он будет мало эффективен + он потратит часть времени коллег на объяснения. Но и это еще не все. Если раньше при обсуждении какой-то фичи / улучшения / стратегии необходимо было договориться между собой, то теперь надо прийти к согласию с большим числом людей.
А что делать, если команда не 3-4 человека. и даже не 10, а сотни, тысячи? Харлан Миллз предлагает свое решение. Он предложил, чтобы на каждом участке работы была команда, организованная наподобие бригады хирургов, а не мясников. Имеется в виду, что не каждый участник группы будет врезаться в задачу, но резать будет один, а остальные оказывать ему всевозможную поддержку, повышая его производительность и плодотворность. Итак, наша команда:
Хирург - Миллз называет его
главным программистом. Он лично определяет тезнические условия на функциональность и эксплуатационные характеристики программы, проектирует ее, пишет код, отлаживает его и составляет документацию... Он должен обладать большим талантом, стажем работы свыше 10 лет и существенными знаниями в системных или прикладных областях.
Второй пилот - это второе "я" хирурга: он может выполнять любую работу хирурга, но менее опытен. Его главная задача - участвовать в проектировании, где он должен думать, обсуждать и оценивать. Хирург испытывает на нем свои идеи, но не связан его предложениями. Он подстраховывает на случай беды с хирургом. Он может даже заниматься написанием кода. но не несет ответственности за какую-либо его часть.
Администратор. Хирург - начальник, и ему принадлежит последнее слово в отношении персонала, прибавок к жалованию, помещений и т.п., но на эти дела он должен тратить как можно меньше времени. Поэтому ему необходим профессиональный администратор, заботой которого будут деньги, люди, помещения, машины и который будет контактировать с административным механизмом организации в целом.
...
Отладчик (
ныне тестировщик). Хирургу потребуется набор подходящих контрольных примеров для отладки написанных им фрагментов кода, а затем и всей программы. Отладчик является, таким образом, как противником, разрабатывающим контрольные примеры для системного тестирования, исходя из функциональных спецификаций, так и помощником, готовящим данные для ежедневной отладки. Он также обычно планирует последовательность тестирования и создание среды для тестирования компонентов.
Чем хороша такая бригада? Над задачей трудятся 10 человек, 7 из которых профессионалы, но система является продуктом одного ума или по крайней мере двух, действующих
uno animo (как одно целое). И если в обычной бригаде партнеры равны, в хирургической различий интересов нет, а разногласия единолично решаются хирургом
------------------------------------------------------------------------------------
Вот с одной стороны - неплохо звучит. А с другой, как представишь, что ты можешь что-то предлагать, тут улучшить, тут починить, тут поправить - но никакого веса у твоих слов нет. Решение хирурга - единоличное... Как-то смущает меня такой подход.
С другой стороны, если посмотреть на нашу организацию - решения по изменению требований принимает аналитик, очень грамотный и умный. И такому аналитику не страшно доверить принятие решения, но! Он его всегда обоснует и твое предложение покажет с другой стороны. И всегда открыт для внесения предложений и даже, возможно, контруктивных споров, в которых рождается истина. А не так, что "хм, идея хорошая. но - нет!". И все. И помалкивай дальше, ты же не хирург.
Страшно представить себе такую ситуацию. Но когда народу много, так и бывает. Тест-менеджер следит за группой своих тестировщиков, архитектор - за группой своих разработчиков, и чем выше по иерархии в большой компании, тем больше ответственности. Бррр. Хорошо работать в небольшом коллективе. Где ты сам себе хирург или хотя бы второй пилот