Misc my tlog

Алгоритм расчёта приоритета задач

Перчатка брошена

В качестве ежедневника использую MyLifeOrganized. Это одно из, если не лучшее приложение, реализующее алгоритм GTD для управления списками задач. В нём, среди прочих достоинств, есть одна уникальная фича - сортировка списка дел на основе Вычисляемого оценочного приоритета. Задач всегда больше, чем успеваешь сделать и MLO реально помогает в сокращении списков To-Do 1. Но вот до автоматической приоритизации мы с ним так и не добрались.

Мне не приходилось встречать другие приложения, которые бы пытались сделать нечто подобное. Сортировку и фильтр по отдельным параметрам встречал. Но вот расчёт интегрированного показателя приоритета - нет. Почему так? Ведь критериев для задач не так много, они все более-менее стандартизированы. Но как свести эти критерии в одну формулу? Видимо это пока не решённая методологическая задача.

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

Передовые решения разрабатывают военные

Классический метод для приоритизации списков - Матрица Эйзенхауэра. Именно того генерала, который потом стал президентом. Видимо военным часто приходилось работать в условиях многозадачности. Согласно этому подходу дела разбиваются на четыре квадранта, в зависимости от двух логических признаков задач:

  • Срочно / Не срочно
  • Важно / Не важно

Далее следуют простых рекомендации по работе с каждым из четырёх получившихся списков:

  • делайте
  • планируйте
  • делегируйте
  • удаляйте

“Правильный” подход к организации времени - максимально работать с задачами во втором квадранте - важное / не срочное.

"Правильный" тайм-менеджмент - работать со вторым квадрантом

Универсальное решение MyLifeOrganized

Для задач в MLO рассчитывается оценка приоритета. Рассчитывается по формуле:

ОценкаПриоритета = (ОценкаСрочности * ОценкаВажности) + СуммаВесовДаты
где:
ОценкаСрочности = СрочностьПроекта * СрочностьЗадачи + ВесНедельнойЦели
ОценкаВажности = ВажностьПроекта * ВажностьЗадачи
СуммаВесовДаты = ВесСрока + ВесНачальнойДаты
Увеличенный приоритет для просроченных задач

К этой формуле у меня есть несколько замечаний.

Первое. Срочность и важность устанавливаются не только для самой задачи, но и для её родителей. В результате формула усложняется до СрочностьПроекта * СрочностьЗадачи * ВажностьПроекта * ВажностьЗадачи. Задача важна среди прочих моих задач на сегодня или среди прочих задач в рамках проекта? И если она важна для проекта, то какой мне прок от этого знания, если в проекте задачи выполняются по порядку? А там где порядок не важен я просто подниму задачу в списке.

Второе. Вместо логических важно / не важно и срочно / не срочно нам предлагается значение каждого из параметров от 0 до 200. Как использовать этот показатель? Как сравнить по этой шкале важность задачи над которой я работаю в рамках делового проекта и вечерней пробежки? Что есть той дискретной величиной, в которой я должен измерять важность?

Третье. Когда я какую-то из задач объявляю Целью недели, то, тем самым, я подчёркиваю её важность для себя. В формуле выше этот параметр почему-то увеличивает оценку срочности.

Четвёртое. При расчёте срочности алгоритм учитывает дату начала задачи. Но разве эта дата не срабатывает просто как “входной билет” - до её наступления задача вообще не появится в моём списке задач. И зачем с его помощью повышать ОценкаСрочности если задачу я всё равно не вижу в списке To-Do.

Пятое. Не понятный в своей логике “увеличенный приоритет для просроченных задач”. Приоритет повышается по мере приближения к сроку - логично. Максимальная из возможных ОценкаСрочности для просроченных задач - так же логично. Но частичное приращение приоритета для того, что уже вышло из-под контроля - не логично. Это приводит к тому, что алгоритм не правильно (не интуитивно?) сортирует задачи с / без сроков.

Светлая сторона - настройки MLO очень гибкие. Пользователи могут самостоятельно “подкрутить” значимость того или иного параметра в собственном алгоритме. Ну а там, где и этого будет не достаточно, почти наверняка найдётся обходное решение.

Настройки по умолчанию для алгоритма расчёта приоритета

Amplenote: оптимизирован для практических задач

Описание расчёта приоритета задачи описано в Repeal the todo list tax

Вес задачи рассчитывается на основе нескольких параметров и времени, прошедшего с момента её создания.

В качестве параметров используются:

  • срок
  • срочность
  • длительность 2
  • важность

Параметры задачи Amplenote

По словам разработчиков “Вес задачи решает две извечные проблем, с которыми сталкиваются составители списков”:

  1. достижения среднесрочных и долгосрочных целей
  2. периодической чистки списка задач

Вот как авторы описывают сложности связанные с первым из них:

В рукописном списке важные задачи практически никогда не поднимутся в топ списка задач. Только машинный алгоритм приращения веса задачи со временем позволяет важной задаче подняться выше срочной.

Вес задачи в Amplenote

Выше график, иллюстрирующий работу алгоритма 3. Из него не видно, что бы Важные задачи на бордовой кривой набрали бы больший Вес по вертикали по сравнению со Срочными на жёлтой. Всё что сказано по этому поводу в посте:

«Важные» задачи и 30-минутные задачи растут с одинаковой скоростью, и «важные» в конечном итоге набирают больше баллов чем 30-минутные.

Да, это пересечение кривых видно не графике. Но, где тут “машинный алгоритм, который позволяет важной задаче подняться выше срочной”?

Вторую задачу управления списками дел разработчики образно называют “освободиться от ракушек”:

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

Я только начал тестировать приложение. И пока не получал никаких напоминаний. Но видимо тут имеется ввиду другое:

Задача без свойств, которая была открыта в последний раз 100 дней назад, будет более ценной, чем задача, созданная сегодня и помеченная «Срочно». Эта стратегия важна для очищения от задач ракушек… В конце концов, мы должны выполнять или отказываться от каждой из задач.

“Более ценной” означает стоять в выше в списке чем Срочная задача? Решение не однозначное и его удобство ещё надо проверять.

Сравнивая эти два подхода

  1. Amplenote использует логические параметры для важности и срочности. Это выглядит более естественным чем дискретные величины в MLO.
  2. Подход Amplenote оптимизирован для решения всего двух вопросов - сокращение списков задач и концентрация на главном 4. Насколько хорошо алгоритм решает эти вопросы - не готов говорить. Но сам этот подход мне представляется более правильным, чем универсальность MLO.
  3. К алгоритму расчёта приоритета в MLO у меня есть существенные замечания. Алгоритм Amplenote мне пока не понятен, но его исходные параметры просты и логичны. Надеюсь что формула, которая их связывает, так же проста и логична.
  4. Интересным выглядит подход учёта времени выполнения при расчёте приоритета задачи. Но в Amplenote это только 15, 30, 60 и 90+ минут. В MLO это дискретная величина, которая лишь добавит путаницы при расчётах.
  5. Скорее всего в формуле Amplenote учитывается период с момента открытия задачи. В MLO для этого есть более формальный показатель Дата обзора. В любом случае рост приоритета задачи со временем - правильный подход, который стимулирует очистку списка задач.

P.S. Если говорить не об алгоритме, а о практическом применении. MLO выглядит более удобным для работы в условиях многопроектности и переключения контекстов. Amplenote ориентирован на работу с заметками и важными задачами. Впрочем, это не исключает того, что сильные решения найденные в одном из приложений, могут найти своё развитие в другом.

  1. в сокращении списков To-Do

    через подзадачи по порядку, закрытые контексты, зависимости между задачами 

  2. длительность

    чем меньше времени требуется на выполнение задачи, тем больше баллов она набирает 

  3. иллюстрирующий работу алгоритма

    Пояснение к графику

    • Срочные задачи значительно превосходят все остальные типы задач. Вы должны сделать это немедленно.
    • Следующим по количеству очков являются 15-минутные задания. Выполнение этих задач предотвратит раздувание вашего списка и поможет вам набрать обороты для выполнения более серьезных задач. Вы должны сделать это немедленно.
    • «Важные» задачи и 30-минутные задачи растут с одинаковой скоростью, и «важные» в конечном итоге набирают больше баллов чем 30-минутные. «Важная» задача - это задача, которую необязательно делать в какой-то определённый момент времени, но если она находится в вашем списке более 20 дней, вам следует серьезно подумать о ее выполнении или о том, что бы удалить её.

  4. концентрация на главном

    Хорошие менеджеры добиваются прогресса в важных задачах, иногда чередуя их с задачами которые не являются ни важными, ни срочными, если они выполняются быстро