Это настолько обычное явление в нашем мире, что никто в цепочке, включая нашего клиента, не поставит под сомнение обоснованность требования об увеличении количества сотрудников, работающих над проектом.
Уменьшение масштаба
Бывает, проекты приходится сокращать. Если клиенту нужно уменьшить скорость расходования бюджета или проект просто достиг такой точки, в которой требуется не так много работы, как прежде, процесс масштабирования проекта происходит аналогичным образом. Поскольку наши команды не основываются на «башнях знаний», и никто из разработчиков не владеет своей личной частью кода, и все работают во всех частях кода, и люди, которые перешли в другой проект, по-прежнему сидят в этой же комнате в пределах видимости и слышимости, у нас не происходит существенной потери информации о проекте.
Как же команда возвращается к первоначальной скорости, когда появляется необходимость снова вернуть проект на прежний темп через несколько месяцев? Как производится уменьшение масштаба, когда проект сходит до нуля? Возможно ли заново начать работу над проектом после нескольких месяцев заморозки или вернуться назад, чтобы добавить какое-то количество новых возможностей в уже завершенный проект? Для этого нужно обратиться к документации и стандартному процессу работы. Автоматизированные модульные тесты обеспечивают первый фундамент. Они отлавливают несоответствия, когда в код вносятся поправки. Если пара программистов возвращается к работе над проектом, делает изменения, а один или более тестов модулей не срабатывают, программисты сразу же узнают о том, что была допущена ошибка. Это освежает в их памяти решения, которые они приняли ранее. Управление кодом является также важной частью этого процесса, поскольку код изучается и дорабатывается в течение долгого времени таким количеством разных людей, что превращается в основную часть работы, отражающую всем ясный замысел, а не что-то запутанное, понятное только герою, придумавшему его.
То, что на ваших глазах начинает развиваться в индустрии программного обеспечения, представляет собой набор стандартов, напоминающих таковые, сформировавшиеся в строительной индустрии. Когда ремонтники заходят в более-менее современный дом, они могут быть уверены, что здесь через каждые сорок сантиметров стоят профили размером 2 × 4 и что электрическая сеть и связанный с нею выключатель (пример автоматизированного тестирования модулей) гарантируют соответствующую силу тока – в противном случае они расплавились бы и загорелись, если б этот предел был превышен.
Предусматривайте резерв, чтобы управлять масштабированием
Было бы просто прекрасно, если б по всем нашим текущим проектам необходимость увеличивать и уменьшать масштабы оказалась бы чудесно сбалансирована и точно соответствовала графику отпусков. Возможно, где-то так и есть, но здесь, на планете Menlo, это никогда не происходит гладко и прекрасно. Оставляя для себя резерв времени на случай, если понадобится добавить или убрать членов команды, работающих над проектом клиента, мы встраиваем в нашу систему буферные элементы. Это внутренние проекты, на которые можно направлять дополнительных сотрудников, или гибкие бизнес-договоренности с отдельными клиентами, которые не против, чтобы мы время от времени немного увеличивали или уменьшали количество сотрудников, занятых в их проекте, в обмен на скидки с нашей стороны.