Проекты над которыми трудятся разработчики можно часто рассматривать как одну (или несколько) больших задач. А чтобы было проще решать большую задачу, ее нужно разделить на более мелкие. Для этого отлично подойдет Asana — collaborative task management application. Под хабракатом описание данной системы и один use-case который мы успешно используем при разработке сайтов. Статья большая и с картинками. Кому интересно только то как мы используем Asana на работе, можете перейти сразу к примеру, или к примеру в картинках. Также на хабре уже был обзор данной системы, но он устарел, а система продвинулась намного дальше с тех пор.
Что такое асана
Асана — не просто список задач, а целая система мелких инструментов которые помогут заменить почти любое приложение по управлению задачами, взаимоотношениями с клиентами, проектами и многое другое. Сразу скажу что существует только английская версия.
Отзывчивость приложения настолько высокая, что иногда кажется что это не вэб — а локально установленная программа. Почти всем можно управлять используя лишь клавиатуру.
Сразу в бой
Вот так выглядит мой рабочий стол (это при ширине монитора 1280, при более меньших размерах — сайт адаптируется по-разному):
Если это выглядит массивно или сложно, то это лишь первое впечатление. Давайте разберем все по полочкам.
Как она устроена
Первыми в иерархии стоят рабочие столы (workspaces). Они удобны для разделения доступа по группам (один рабочий стол для работы, другой для семьи и т. д.). К одному рабочему столу могут иметь доступ бесплатно до 30 пользователей, дальше платно. Есть два типа рабочих столов — стандартный и собственные проекты. В этой статье будут рассматриваться только стандартные рабочие столы. Кому интересно про собственные проекты — можно почитать на блоге.
Тут видны сразу все рабочие столы и проекты, но чтобы сфокусироваться лучше перейти на рабочий стол в котором мы хотим работать. Делается это нажатием на заголовок проекта.
Пользователей можно добавлять как ко всему рабочему столу (будут доступны все проекты), так и только давать доступ к одному проекту.
В каждом рабочем столе всегда есть два раздела: Мои Задачи (My tasks) и Входящие (Inbox) и три типа категорий (может это и не категории но больно похоже): проекты, теги и пользователи.
При выборе одного проекта, тэга или пользователя — в окне задач будут показаны только те что соответствуют выбору.
В Моих Задачах находятся все задания которые назначены данному пользователю.
Во входящих находятся лента новостей всех изменений задач (добавление новой, комментирование, назначение и т. д.) к которым данный пользователь подписан.
Теперь посмотрим на все задания проекта:
Визуально задачи бывают простыми или заголовками приоритетов (priority heading). Заголовки используются для визуального разделения задач на категории, при этом их функциональность та же что и у обычных задач. В списке видны:
- заголовок
- аватар назначенного пользователя
- теги
- приоритет
- родительская задача (если таковая есть)
Статус задач, назначенного пользователя и заголовок можно изменять прямо из списка. Так же чтобы создать заголовок достаточно просто добавить к концу имени двоеточие.
Завершенные задачи помещаются в верх списка, а чтобы они оттуда исчезли — их можно архивировать (к примеру к концу дня когда делается обзор выполненного за день):
При открытии одной задачи доступны следующие детали: заголовок, описание, назначенный пользователь, проект к которому задача принадлежит, дочерние задачи, срок, теги, файлы, подписчики, комментарии и лента активности.
Также тут доступны базовые функции:
Из интересных функций тут есть:
- Описание может содержать ссылки на другие задачи или других пользователей (умное автозаполнение появляется после ввода знака @)
- Подзадачи есть ни что иное как такие же задачи быстрый доступ к которым осуществляется через родительскую задачу
- Одна задача может вообще не принадлежать к проекту (к примеру дочерние задачи) или ко множеству
- Срок может быть как одной простой датой, так и повторяющейся (при повторе создается такая же задача только со сроком увеличенным на указанный интервал)
- Задача может быть назначена одному лишь человеку (с возможностью изменения), но зато за задачей можно следить (все изменения будут появляться во Входящих)
- Задачу можно назначать человеку который не добавлен к рабочему столу/проекту. Для этого нужно указать его емайл, на почту он получит уведомление с возможностью зарегистрироваться и получить доступ к данному рабочему столу или задаче (в зависимости что вы выбрали при назначении). Если даже человек не хочет регистрироваться, он просто может ответить на данное письмо и его ответ будет комментарием в данной задаче
- В комментариях также работает умное авто заполнение
Где можно узнать больше или увидеть примеры работы
Чтобы почувствовать всю мощь приложения, нужно его попробовать в работе. И желательно изначально просмотреть Asana в 2х минутах (eng) и How to use it (eng).
Пример использования для небольшой вэб студии
Мы команда из 5ти человек которые делают сайты на рельсах (Ruby on Rails):
- Менеджер Проекта / Таск Менеджер / отношения с клиентами
- Дизайнер / UI / UX
- Фронт-енд дев / UI / UX
- Бэк-енд дев / Модели / База данных
- Бэк-енд дев / Контролеры / Хелперы / Тесты
Для каждого сайта мы создаем проект. Все задачи разделены заголовками приоритетов которые соответствуют страницам сайта (см картинку выше с задачами). Очередность задач в списке для нас не важна, для этого мы используем теги. Вот список приоритетов выполнения задач в зависимости от тега (по убывающему):
- баг
- срочно
- (задача без тега)
- неполное описание
- не срочно
- на будущее
Также есть тег документация который присваивается к информативным задачам. Их выполнять не нужно. Еще много информации хранится в заголовках приоритетов для каждой страницы.
Для подзадач мы используем текстовый список где перед каждым элементом стоят пустые квадратные скобки, а в конце каждого элемента имя того кто должен будет выполнить данную задачу. Под подзадача имеет отступ в два пробела от родительской подзадачи.
Почти все задачи проходят следующий цикл жизни:
- Задача создана Таск Менеджером
- В описание задачи добавляются подзадачи и ссылки на тех кто должен будет их выполнить
- Если есть некая дополнительная информация — она добавляется в комментарии
- Задача назначается человеку указанному в первой невыполненной подзадаче
- Подзадача выполняется, в скобках подзадачи ставится символ х, повторяется пункт 4
- Если подзадач больше нету, задача назначается как завершенная
Но конечно не все задачи проходят гладко, в разных ситуациях нужны разные действия:
- Если после выполнения подзадачи, нужно поделиться некой информацией которая может быть полезной при выполнении остальных подзадач — нужно отписаться в комментариях
- Если при выполнении подзадачи выясняется что одна из предыдущих подзадач была выполнена не правильно/глючит тогда пишем об этом в комментариях, опустошаем скобки данной подзадачи и переназначаем задачу тому кто ответственен за данную подзадачу
- Если при выполнении подзадачи выясняется что чего-то не хватает в описании, назначаем данной задаче тег неполное описание и переназначаем ее Таск Менеджеру
- Если для выполнения некой подзадачи нужно чтобы была выполнена некая подзадача из другой задачи, снимаем назначение с нынешней задачи, и пишем в комментариях другой задачи что после ее завершения нужно назначить нам обратно нынешнюю задачу
- Если вы выполнили некую подзадачу и уже переназначили ее кому-то другому, а потом вдруг вспомнили что не доделали чего-то:
- Если тот кому вы назначили задачу уже указал приоритет (today, later, upcoming) нужно написать ему и попросить задачу обратно
- Если нет, то смело можно отбирать задачу обратно
То же самое только в картинках
Вот этим занимается Такс Менеджер
А вот этим все (включая Таск Менеджера)
Почему мы не используем встроенные подзадачи
Когда мы начали пользоваться данной схемой, подзадач еще не было. Да и сейчас, насколько я понимаю, они в бета релизе (когда-то давно указал что согласен на бета фичи, да и в проекте мы используем маркировку подзадач которую они сами рекомендовали в их видео как возможный сценарий использования системы).
Но даже когда нам стали доступны подзадачи, мы столкнулись с неудобством их использования. Если иметь только одноуровневые подзадачи — тогда все просто. Хотя даже в этом случае они нам не подходят так как при назначении подзадачи это появится во Входящих соответствующего пользователя и в его Личных Задачах, а мы стремились к тому чтобы в Личных Задачах были только задачи над которыми человек уже может работать, да и во Входящих не должно быть избытка ненужных событий. А в случае если у ваших подзадач будут свой подзадачи, тогда уже визуально не получится оценить все подзадачи одной задачи, и это намного усложнит понимание прогресса и количества подзадач. Также это приносит фрагментирование комментариев и файлов которые имеют непосредственное отношение к задачам.
Результаты
В конце каждого дня можно проанализировать статистические данные.:
- Количеству закрытых задач за день
- Количеству оставшихся назначенных задач для каждого члена команды
Вот так уже работаем около месяца, за это время:
- Продуктивность выросла ощутимо
- Время затрачиваемое на reddit, reader и другие не относящиеся к работе сайты упало в среднем с 2-х часов на человека до 30 мин (RescueTime)
- Никто больше не жалуется что ему нечего делать
- Меньше багов и меньше забытых для выполнения вещей
- Более реалистичный расчет сроков
Автор: bumbu