Распределенная программа для учета времени

Сегодня мы поговорим об учете самого важного, на мой взгляд, ресурса — времени. Почему я считаю его самым важным? Потому, что он невосполнимый: его есть определённое количество и нового не будет. Можно только постараться максимально разумно распорядиться доступным. И куда же в этом деле без грамотного учёта? Я бы сказал, что учёт является базой для таких вещей, как тайм-менеджмент и планирование, т.к. без понимания, как расходуется время, крайне непросто его распределять и вообще что-то планировать. Да и просто полезно осознавать, на что и в каких количествах мы тратим драгоценное время нашей жизни.

Для решения этой задачи я предлагаю достаточно простой инструмент. Заинтересовавшимся добро пожаловать под кат.

Распределенная программа для учета времени - 1

Как можно догадаться из названия статьи, речь пойдет о программе для учета времени или таймтрекере. И, чтобы выяснить, какой должна быть эта программа, начнем с идеологической части.

Идея

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

Именно такой подход я и выбрал: учитывать все время. И в наш век высоких технологий, хочется что-то более удобное, чем просто записи на листочке. Поскольку мы постоянно окружены разнообразными гаджетами и просто компьютерами, было бы неплохо задействовать их для решения нашей задачи: зачем вручную вести всю эту бухгалтерию, если есть машина? Время тратить, опять же :) Значит, нам нужна программа, в которой мы будем отмечать, чем мы занимаемся и которая будет все подсчитывать, выводить отчеты и рисовать красивые графики :)

Теперь нужно определиться со списком требований, которым должна удовлетворять эта самая программа.

Требования

Список небольшой:

  • Ручной учет. На этом остановлюсь подробно чуть ниже.
  • Простота. Исходя из предыдущего пункта, программу предполагается использовать часто и не хотелось бы тратить постоянно кучу времени на сам учет.
  • Кроссплатформенность.
  • Синхронизация между устройствами.
  • Безопасность. Не сильно хочется доверять такие данные какому-то непонятному сервису, как с точки зрения приватности, так и с точки зрения надежности — сервис может в один прекрасный день перестать работать.
  • Средства для анализа. Собранные данные необходимо обработать и представить в понятном и удобном для восприятия виде.

Почему не автоматический учет?

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

Главная проблема такого подхода — а как понять, чем действительно занят пользователь? Например, если я нахожусь на рабочем месте, значит ли это, что я работаю? Мы же с вами прекрасно понимаем, что вовсе не значит :) Если у меня открыт браузер вместо среды разработки, значит ли это, что я отдыхаю? Снова, нет. И даже если в браузере открыта социальная сеть, нельзя сказать однозначно, чем я там занят. Наверняка еще и придется подстраиваться под программу, чтобы она могла выдавать адекватные результаты. Резюмирую: на мой взгляд, на данном этапе развития технологий, подобный метод не может обеспечить приемлемую точность.

А что же ручной учет?

Нет необходимости пытаться определить, чем мы заняты в конкретный момент времени. Ведь мы сами это знаем! В любой момент времени мы можем сказать, чем мы занимаемся. Осталось только начать записывать :)

Конечно, нужна будет некоторая дисциплина, по крайней мере, пока это не войдет в привычку. Зато когда постоянно отмечаешь, чем занимаешься, немного меняется восприятие времени. Можно даже сказать, что появляется такая вещь, как осознанность.

Поэтому, я сделал выбор в пользу ручного трекера и именно такой мы сейчас и рассмотрим.

G-TimeTracker

Когда мне понадобилась программа, которая соответствует означенным требованиям, я таковой не нашел, пришлось писать самому :) Прошу любить и жаловать: G-TimeTracker или Global Time Tracker — (первая?) распределенная программа для учета времени. О том, к чему тут "распределенная" мы поговорим чуть позже, а сперва рассмотрим основной функционал.

Собственно учет

Основной экран программы показывает недавние записи. Его можно листать, чтобы посмотреть более ранние. Конечно есть и поиск и просмотр истории за конкретный период времени. Выглядит это примерно так:

Распределенная программа для учета времени - 2

Процесс учета времени крайне прост: жмем на кнопку ‘+’ и в открывшемся окне редактора указываем время начала деятельности, категорию и опционально пишем комментарий. Время конца указывать не нужно, т.к. оно рассчитывается автоматически, исходя из времени начала следующей записи.

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

Если вдруг можете — аккуратнее с этим, пожалуйста

Распределенная программа для учета времени - 3<spoiler/>

Категории можно создавать/удалять/редактировать. Есть поддержка подкатегорий, уровень вложенности не ограничен. По умолчанию создается небольшой набор категорий, которые можно смело дорабатывать под себя.

Статистика

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

Распределенная программа для учета времени - 4

Синхронизация

А теперь разберемся, что же это за распределенность такая. Данный функционал я готов назвать киллер-фичей программы :)

Итак, экземпляры программы запущенные на разных устройствах могут синхронизироваться между собой. Казалось бы, что тут такого, облака и облака. Но все намного интереснее. Само приложение не привязано ни к каким облакам. Просто нужно создать каталог, который будет синхронизироваться при помощи каких-либо облачных сервисов и указать этот каталог в программе. Программа будет синхронизироваться с этим каталогом, а тот в свою очередь между другими устройствами. Так что вам не нужно заводить учетную запись в еще одном облачном сервисе и доверять кому-то еще свои данные. Просто продолжаете использовать то, чем пользовались раньше, будь то Google Drive, DropBox или SyncThing.

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

Кстати, синхронизацией пользоваться необязательно, программа полностью функциональна и без нее.

Оценки

Программа не выставляет каких-либо оценок. Здесь нет каких-то "хороших" и "плохих" категорий или "продуктивных" и "непродуктивных". Это инструмент для исследования, в задачу которого входит сбор и отображение данных, а их интерпретация уже дело пользователя.

Разное

На данный момент есть сборки под Android, Windows и Linux. Появление под другие платформы вероятно :)

Есть поддержка импорта/экспорта в CSV-подобный формат.

Рекламы нет, код программы открыт, лицензия GPLv3.

Ссылки

Заключение

Обычно, когда говорят о цене, имеют в виду некую сумму денег. При помощи учета времени мы можем сделать эдакий виртуальный ценник вида "это стоит мне N часов в неделю/месяц/год". Это дает нам дополнительный инструмент для того, чтобы повысить свою продуктивность и минимизировать потери времени на малозначительные вещи, что в итоге делает нашу жизнь лучше.

Буду рад получить замечания, предложения и отзывы по моей программе :)

Автор:

Источник

Оставить комментарий