Navigation

Планирование программных разработок: делюсь опытом

Сегодня я хочу поделиться своей методикой планирования времени в разработке ПО, которая может быть очень быстро внедрена в небольших коллективах. Она очень проста во внедрении и «поддержке», чем показала себя очень эффективной.
В разное время, имея разные задачи и разные ограничения в управлении разработкой, я испробовал всё: от Microsoft Project и онлайн-сервисов до «самописных» решений. У каждого варианта есть свои недостатки и преимущества, и каждый из них заслуживает отдельной статьи. Сегодня речь пойдет о наиболее простом варианте — управление релизной разработкой в Excel-е. Также я поделюсь шаблоном этого плана, который каждый может доработать «под себя».

Стоит сразу сделать несколько оговорок, чтобы предупредить ненужный флейм. Описываемое мною решение задачи подходит не для любой команды разработчиков, не для всех задач, не для любого класса программных проектов и не для каждой методики разработки. У него есть очевидное преимущество — может быть внедрено в нулевое время, не требуется никаких серверов, специального ПО, вообще ничего не требуется, кроме офиса. Правда, желательно майкрософтовского.
Итак, задача: упорядочить процессы разработки и поддержки продуктов компании при следующих условиях: основную часть задач составляют задачи длительностью от дня до трех недель, каждая затрагивает одного разработчика и одного тестировщика, разработка ведется на «релизной» основе — раз в неделю оттестированные модули включаются в очередную версию, каждая задача имеет конкретного внутреннего «заказчика» (менеджеры), которому , конечно, важна дата релиза, где появится его задача, общее число параллельных задач в производстве — от десяти до пятидесяти.

Как я уже говорил выше, я испробовал разные способы упорядочивания работы с такими проектами. Microsoft Project, например, не обладает достаточной степенью гибкости в управлении изменениями в плане, он предназначен для управления связанными в проект задачами, в которых их очередность объясняется их сущностью, а не порядком поступления или срочностью. Менять задачи в плане Project местами довольно неудобно, особенно, если это нужно делать часто. Да и вообще, для описанной задачи там всё неудобно.
Использовать сервисы web-based, как онлайновые, так и инсталлируемые на офисный сервер — лучше, потому что среди них выбор больше. Например, на прошлом месте работы я внедрил JIRA и мы ее очень активно использовали. Но минусов у нее хватает… Решения, которое нужно было мне, я среди них не нашел. Если кто-то может его подсказать, буду рад.
Возвращаясь к теме планирования задач с использованием Microsoft Excel.
Вот так выглядит план:

Итак, строки плана — задачи. Столбцы имеют следующую структуру:

На последующие недели заполняется желтая область, по прошлым неделям заполняется синяя область. Важно — в этом плане не указаны исполнители на задачу, если это нужно — просто добавляем столбец (в моем случае — не нужно, потому что исполнителям каждую неделю назначаются задачи из пула запланированных на эту неделю исходя из текущего состояния дел, это позволяет добавлять гибкости).
Внизу автоматически суммируются часы по всем задачам одного типа на неделю. Предполагается, что задачами одного типа занимаются программисты одной специализации, поэтому эти часы можно соотнести с доступными часами этих программистов. Как рассчитывать доступные для планирования часы — у каждого по-своему, например, можно заложить процентов 20 на исправление багов и на непредсказуемые срочные доработки, а 80 оставить для планирования.
Прошедшие недели «сворачиваем» минусиками сверху. Новые недели добавляем копированием предыдущей недели на следующий период. При копировании можно автоматически пересчитывать даты и номер недели.
Как только задача полностью выполнена, в блоке сделано ставим «Да». Настраиваем фильтр так, чтобы он НЕ показывал сделанные задачи (снимаем галочку с «да» в первом столбце).
Очень удобно, что при всем при этом работает фильтрация (Filter в «экселе») по строке 5, с заголовками. Это позволяет отвечать на вопросы:

  • Все задачи одного «заказчика» (фильтр по ЗАКАЗЧИК)
  • Все задачи на указанную неделю (фильтр по TOTAL части «План» недели)
  • Все сделанные задачи (фильтр по «сделано») и все задачи, которые еще предстоит сделать (фильтр по «сделано»)
  • И многое другое…

Как только задач становится больше 50, или задачи более сложны по структуре, или исполнителей много, или вы чувствуете, что эксель — слишком сложный или неподходящий инструмент для планирования, тогда нужно искать что-то более подходящее, благо на рынке довольно много готовых решений. Для относительно простых ситуаций (а их все-таки большинство) данного инструмента, IMHO, было бы достаточно... если бы не следующий абзац.
Теперь я опишу решение, которое для меня было бы идеальным. Я не нашел нигде реализации похожей концепции и буду рад, если кто-то может ее подсказать:
Строки — исполнители (люди, группы или целые отделы) , столбцы — время. Приходит новая задача — падает в «неразобранное». Я ее оттуда перетаскиваю на нужную строку, она либо раздвигает стоящие там уже задачи, либо перетаскиваю в хвост этих задач у конкретного исполнителя, и она цепляется в «водопад» после последней. Перетаскиванием я могу произвольно менять порядок очередных задач для исполнителя, но задачи для него всегда выстраиваются в «водопад». Либо могу переносить задачу с одного исполнителя на другого, тогда перестраивается «водопад» у обоих. После нажатия на кнопку "Применить " мне демонстрируется перечень изменений (заказчик — задача — старая дата — новая дата) и по нажатию на кнопку «Разослать» происходит уведомление заказчиков и исполнителей об изменениях. Текущая задача может быть в любой момент прервана, ее остаток может быть пересмотрен по времени и поставлен куда-нибудь в будущее или перенесен в блок «неразобранное» или вообще удален. Что происходит в этом случае? Все следующие задачи сдвигаются.
Вот иллюстрация:

Шаблон плана можно найти у меня на моем блоге rauf.lj.ru или в разделе «Полезное» моем сайте RaufAliev.ru