Долго хотел идеальный планировщик задач.

Спойлер: пришёл к excel’ке.

Подход

Самое важное в нём - автоматическое упорядочивание. Я не стал заморачиваться за сдвигаемые не сдвигаемые, точные даты итд. Единственное что было необходимо получить - плюс-минус реалистичное и автоматическое упорядочивание.

У меня два отдельных несвязанных списка задач, которые приоретизируются немного по-разному - один для самообразования, другой для работы и важных личных дел. Почему их два и почему работа перемешана с личными делами: работа с личной жизнью делят общий ресурс - время. На самообразование я не выделяю время, я заполняю им время в транспорте.

Как это работает - чтобы задачи отсортировать нужно свести задачу к одному числу. Чтобы получить одно число - нужно было вывести вообще метрики и формулу от них. Для самообразования и дел довольно метрики немного отличаются, но в целом подход один и тот же.

Самообразование

  • процент завершения дела - (0..100%) если дело начато, его важнее закончить, чем ещё не начатое. В противном случае можно начать бросаться на кучу дел и ничего не довести до конца.
  • время завершения дела - (1..N) сколько дней потребуется на то, чтобы закончить изучение чего-то. Минимум - один. Для книг можно считать 4 страницы на английском в день, 10 на русском.
  • интерес - (1..5) насколько мне это интересно, т.е. насколько я буду рад от того что узнаю лучше предмет. Радость от изучения - это важно.
  • насколько это нужно сейчас - (1..5) насколько изученное что-то пригодится в работе.
  • насколько это пригодится в будущем - (1..5) насколько технология или что-то там ещё востребовано на рынке и пригодится в случае потери работы.

Итоговая формула с коэффициентами на текущий момент:

  • процент завершения дела - 34
  • важность интереса - 2
  • важность текщуей пользы - 4
  • важность долгосрочной пользы - 3
  • неважность времени - 5. Если не вводить этот фактор - быстрые мелкие неважные задачи будут выходить вперёд, книги читаться не будут.
(Процент завершения дела * 34) +
(интерес * 2 + важность текущей пользы * 4 + важность долгосрочной пользы * 3) /
(дней для завершения * (100% - процент завершения дела) * 5)

Когда-нибудь я эту формулу улучшу, подгоню туда какие-нибудь нелинейные зависимости, но сейчас она вполне неплохо справилась с тем, чтобы утащить второстепенную херню типа потратить недельку на изучение Ruby далеко вниз моего бэклога.

В бонус: в остортированном списке с процентом завершённости дела и оценкой времени на реализацию можно посчитать приблизительное время реализации любой задачи. Оно будет неточным, но можно оценить как далеко простираются ваши планы по самообразованию и когда приблизительно у вас дойдут руки до какой-то штуки (или книги).

Работа и жизнь

Почти такая же формула, только другие метрики:

  • Время исполнения (неважность) - 25, измеряется в минутах
  • Процент завершённости - здесь не играет отдельной роли, используется только для расчёта оставшегося времени
  • Краткосрочная польза - 2, (1..5)
  • Долгосрочная польза - 1, (1..5)
  • Принесёт денег - 1, (1..5)
    • 1 - сделает удобнее жизнь разработчиков
    • 2 - поможет 1-3 имеющимся клиентам
    • 3 - один новый клиент будет пользоваться и в итоге купит продукт
    • 4 - сделает жизнь многих старых клиентов лучше
    • 5 - привлечёт много новых клиентов или сделает процесс внедрения клиенту проще

Итоговая формула с коэффициентами на текущий момент:

(принесёт денег * 1 + краткосрочная польза * 2 + долгосрочная польза * 1) /
(время выполнения / 25 * (100% - процент завершения))

Результат вообще неидеальный, но хоть какой-то.

Я не следую строго тому порядку, который даётся, т.к. есть задачи, которые надо сделать хоть как, но до определённого времени и хрен с ним что даже с максимальной краткосрочной пользой их рейтинг ниже других.

Но как правило текущая задача находится в top-3.

Впихать невпихуемое

Помимо таблички для упорядочивания я использую отдельную, пока не синхронизируемую смесь таблички и календаря.

Столбец - день, строка - час, ячейка(и) - задача. Помогает визуально увидеть что всё впихать в один день не получится. Легко переносить задачи на потом, пока их мало. Стараюсь синхронизировать с упорядоченным списком не чаще чем раз в день, заполнять вперёд не больше чем на 5 дней. Ещё это помогает наглядно увидеть конфликты между рабочим расписанием и личными делами и решить их заранее.

Комментарии в твитторе