В этой статье я хочу рассказать о том, зачем мне понадобился тайм-трекер, как я его искал, почему не нашел и что из этого всего в итоге получилось.
Выбор трекера
Почти всю свою карьеру я работаю фрилансером. Специфика деятельности такова, что все контракты с оплатой не почасовой, а за сделанную в установленный срок работу. В таких условиях привыкаешь работать когда есть настроение — главное уложиться в срок. То есть весь день не прикасаться к проекту, а на следующий день 16 часов безотрывно пахать как раб на галерах — обычное дело. Заказчикам это, как правило, безразлично. Работая в таком режиме, о тайм-трекере не задумываешься.
В начале 2015 года мне предложили интересный удаленный проект и внезапно с оплатой не за проделанную работу, а с фиксированной зарплатой каждый месяц.
Спустя пару месяцев с момента начала работы, стало очевидно, что мой обычный подход работает плохо. Когда перед тобой висит некий дедлайн, а факт оплаты привязан к сдаче работы — дополнительная мотивация не нужна, тем более что нарушение сроков может вылиться в солидную неустойку. В случае фиксированной оплаты дело обстоит иначе. Осознав это, я понял, что работаю неэффективно и вряд ли мой работодатель будет доволен, если я продолжу работать в том же темпе.
В конце марта на хабре была опубликована статья Надзиратель для фрилансера: выбираем систему учета рабочего времени. Эта статья идеально совпала с моими размышлениями о повышении эффективности. Она посвящена в основном веб-инструментам и не подходит под мои задачи, но основная идея с учетом времени показалась мне серебряной пулей, которая позволит правильно распределить рабочее время и не подвести работодателя.
На мою удачу в комментариях к статье читатели делились своим опытом использования всевозможных трекеров, а Alexey2005 выложил ссылку на сравнительную таблицу трекеров.
Чем дальше я погружался в изучение разнообразных трекеров, тем очевиднее становилось, что ни один мне не подходит.
Был сформирован список требований к трекеру:
- Никаких ручных таймеров. В мире, где пользователь постоянно переключается между разными задачами, отходит «покурить», отвечает любовнице в ICQ, точность ручных таймеров стремится к 0.
- Только Open Source. Считайте меня параноиком, но я не хочу, чтобы закрытое ПО отдавало информацию о моей активности на чужой сервер. Еще пару лет назад я бы не стал об этом даже задумываться и спокойно установил себе проприетарный трекер. Но последние тенденции в мире слежки научили меня двум вещам:
- Если у компании есть данные — она будет их использовать.
- Данные обязательно утекут или будут предоставлены по судебному запросу
Очень не хочется, чтобы в один прекрасный день ко мне «пришли» с обвинениями в использовании какого-нибудь запрещенного bitcoin.
- Кросс-платформа. Как разработчик игр, я в основном работаю в Windows, но Linux и Mac OS X также сопровождают значительную часть моей активности. Тайм-трекер, который будет отслеживать активность только в одной из ОС, не будет давать полной картины.
Автоматических кроссплатформенных трекеров существует две с половиной штуки. Open Source среди них я не нашел ни одного.
Пишем свой
Что же делать? Выбор очевиден — будем писать свой трекер.
Основной алгоритм работы прост — программа висит в фоне и, при смене активного окна, запоминает на какое приложение переключился пользователь. Если в течение некоторого времени пользователь не нажимал никаких кнопок, не двигал мышь и окна не переключались — переходим в режим сна, скорректировав соответствующим образом последнюю запись (отнимем время, которое пользователь был неактивен).
Было бы логично привязаться к переходу ПК в режим энергосбережения (отключение мониторов), но у многих этот режим отключен совсем или пауза слишком большая, так что полагаться на него нельзя.
Кроме этого, очевидно, что для точности подсчета времени нужны профили. В зависимости от типа текущей деятельности разные приложения могут относиться к разным категориям. Например, я использую notepad++ как во фриланс-проектах, так и в своих собственных.
Профили позволяют назначить приложение в разные категории. Соответственно, если активен профиль «свои проекты», то время использования notepad++ будет записано в одну категорию, а если активен профиль «фриланс» — в другую.
Внешние трекеры
И вот первая версия трекера написана и запущена. После нескольких дней активного тестирования оказывается, что текущей автоматизации недостаточно. На скриншоте в заголовке видно, что Хром съел 3 часа 50 минут и, в тоже время, категория Прокрастинация тоже заняла 3 часа 50 минут. Но на самом-то деле Хром используется также для доступа к багтрекеру, документации, stackoverflow. Но первая версия трекера не умела отличать эти действия и записывала всё в одну категорию. Одно из временных решений — использовать Хром для чтения хабра / почты / vk и т.п., а всю рабочую деятельность вести в Frirefox. Но привычка была слишком сильна и всё равно в итоге часть работы делалась по привычке в Хроме.
Проблема усилилась при работе в виртуальной машине. Трекер, естественно, сам по себе не способен увидеть: что там творится внутри VBox и видит лишь активность VirtualBox.exe. Конечно, под виртуальными машинами в один момент времени велась деятельность только одного типа и проблему можно было решить переключением профилей. Но изначально очень хотелось уйти от ручного управления.
В итоге родилось решение в виде внешних трекеров.
Внешний трекер — это программа, которая запускается внутри недоступного для тайм-трекера окружения и передает оттуда информацию. Например, в случае виртуальной машины этот трекер ведет себя идентично тайм-трекеру, но не запоминает, что за приложения запущены, а по udp-каналу сообщает о них основному трекеру на 25855 порт.
Формат сообщений получился достаточно простым:
5 char — фиксированный заголовок. TYTET
1 int - номер версии протокола. Сейчас 1.
utf8 строка(1 int длина строки и далее массив char) — текущее состояние системы.
Например, виртуальная машина просто отдает текущее приложение в видe chrome.exe, qtcreator.exe, explorer.exe. С браузером — чуть сложнее, так как сайтов — море, а в качестве состояния отдаются основные сайты, с которыми взаимодействует пользователь: habrahabr.ru, geektimes.ru, vk.com, gmail.com, google.com и т.п. Остальные же сайты уходят под общим статусом: undefined. То есть основные сайты определяются в соответствующие категории на уровне тайм-трекера, а undefined идут в отдельную категорию. Например, undefined у меня пишутся в Прокрастинацию, так как гораздо проще определить набор рабочих сайтов, чем миллионы мусорных, на которые попадаешь, читая очередную фигню.
1 int — количество перекрываемых приложений
utf8 — массив строк с именем каждого перекрываемого приложения
Перекрываемые приложения — это список приложений, которые будут подменяться при наличии свежей (менее 10 секунд) информации с трекера. Например, трекер Хрома перекрывает два приложения:
chrome.exe и Google-chrome-stable.
Соответственно, если от него приходит текущий статус habrahabr.ru, то тайм-трекер во время активности в chrome.exe под виндой и Google-chrome-stable в линуксе будет писать в БД не Хром, а habrahabr.ru.
1 unsigned char — контрольная сумма. Контрольная сумма считается простым сложением всех байт в пакете.
Тайм-трекер в комбинации с внешними трекерами позволяет получить максимально корректную информацию о времени, проведенном за ПК.
В принципе, ничего не мешает внешнему трекеру быть действительно внешним, например, андроид-телефоном. Это позволит учитывать активность и за пределами ПК. Но мне такой функционал не нужен, поэтому я его не реализовывал.
Работа с трекером
С точки зрения пользователя приложение представляет из себя иконку в трее, у которой есть контекстное меню, вызывающее нужные окна:
Незначительные функции:
Настройки позволяют определить общие детали функционирования приложения.
Профили позволяют, не открывая окон приложения, переключаться между активными профилями.
И самое важное:
Приложения — позволяют распределять приложения по категориям (приложения автоматически добавляются в список во время работы) и редактировать профили:
Статистика — позволяет выдрать из БД информацию за указанную дату и нарисовать график и таблицу.
С одной стороны — отображение статистики является важной частью тайм-трекера. Но я считаю, что само приложение трекера должно быть лишь простым поверхностным инструментом для анализа данных. Основное — это сбор. А красивые диаграммы можно и LibreCalc нарисовать на основе экспортированных CSV данных.
Отдельно стоит обсудить работу с БД.
Сначала я опасался, что она будет очень быстро расти и придётся программно разбивать ее на части.
Но процесс тестирования первой версии показал, что за полгода работы в трёх ОС с сотней приложений БД займет всего 1 мегабайт. 20 мегабайт за 10 лет. Не тот размер, о котором стоит беспокоиться. Зато код приложения упрощается, если держать БД одним куском.
Так как держать отдельный файл для каждой ОС бессмысленно с точки зрения статистики, то для себя я сделал exFAT-раздел на 100 мегабайт, куда положил БД и теперь Windows / Linux / Mac OS X работают одним этим файлом. В итоге — общая статистика, доступная в одном месте.
Идём в Open Source
Прошло около 10 месяцев с тех пор как была написана первая версия приложения. Для себя я оценил приложение как весьма пригодное. По счастливой случайности январе вышла статья Почему и зачем писать open-source код?. И подумалось — а не опубликовать ли тайм-трекер на github, ведь задача подсчета времени весьма актуальна, а Open Source решений не так уж много.
И вот, знакомство с github, переписывание приложения с учетом всех нюансов, накопленных за почти год использования и первая сборка лежит, готовая к скачиванию и созданию fork'ов.
Let me speak from my heart
Внезапно самым сложным при публикации Open Source-проекта оказалось плохое знание английского. В тот момент, когда стало понятно, что проект не имеет смысла без хотя бы минимальной документации и комментариев — возникло желание не публиковаться, чтобы не позориться… Потому что мой английский позволяет смотреть фильмы с субтитрами, читать документацию, понимать простую разговорную речь… Но писать осмысленные, граматически и орфографически чистые предложения — это мне не по зубам…
И встал выбор:
- Ничего не публиковать вообще.
- Ограничиться односложными комментариями. Авось не догадаются, что я не знаю английского.
- Писать столько, сколько считаю нужным на плохом английском.
Первый вариант показался неприемлемым. Проект видится полезным и публикация его важна. Думаю, несколько десятков пользователей для него найдется, так что жалко оставлять неопубликованным.
Второй вариант не позволяет полноценно расписать важные моменты по работе с исходниками и самим приложением. Да и какова вероятность, что я смогу в коротких предложениях расписать всё правильно?
В итоге остановился на третьем варианте. В конце концов это не экзамен по английскому и не книга, а ПО. Возможно серьезные косяки поправят более образованные товарищи, а может быть приложение сможет функционировать и с моими кривыми комментариями.
Исходники доступны здесь:
github.com/Allexin/TrackYourTime
Комментарии (86)
VioletGiraffe
23.01.2016 15:04А вы уверены, что почасовая ставка, предложенная работодателем, расчитана на столь скрупулёзный учёт времени? Вполне возможно, рабодатель не расчитывает на то, что вы будете сами вычитать время, потраченное на прокрастинацию.
AllexIn
23.01.2016 15:08+4С работодателем никак не обговаривался учет времени. И в договоре не фигурирует почасовая оплата. Оплата каждый месяц с учетом 8 часового рабочего времени. Инструмент создавался чисто для себя.
ИМХО инструмент совершенно не пригоден для контроля со стороны работодателя, ка краз из-за излишней детализации. Это инструмент для разработчиков, которые хотят чуть получше контролировать своё время и понимать — куда оно делось.
P.S>
Я согласен с вами насчет «добровольного рабства». Собственно, если бы работодатель предложил мне как быто нибыло контролировать мое время и вести отчеты на эту тему — я бы не согласился.
ivanbolhovitinov
23.01.2016 15:47+6Это просто инструмент для поддержания внутренней дисциплины.
Также и всякие домашние бухгалтерии люди пишут не для последующего доклада в налоговые органы.foxmuldercp
23.01.2016 16:43Свою веб бухгалтерию я на asp.net mvc вечерами писал где-то с год, с нуля без знаний web-программирования как таковых (скрипты на powershell/perl/bash не считаю). Запустил, работает.
А вот чтобы написать домашнюю бухгалтерию с реалиями сдачи налоговой отчётности — у меня пару месячных зарплат уйдут только на юристов/бухгалтеров/налоговиков, и это без учёта тех, кого придётся привлекать, потому как объёмы кода там будут несопоставимы.zirf
23.01.2016 20:47у меня пару месячных зарплат уйдут
Не-а. Для УСН самообразования хватит. Только Вам не скучно будет читать кучу нормативов, они скучные до нельзя, как и тетки из налоговой.
foxmuldercp
23.01.2016 16:43Хорошая идея инструмента, и что самое важное для меня — опыт, полученный во время написания таких проектов
vitaly_KF
23.01.2016 19:01+1Первая идея, которая пришла мне в голову после прочтения: было бы круто добавить функцию учёта активных вкладок браузера, а также контактов в Skype. Так как и там и там есть набор личных и рабочих вкладок/контактов.
AllexIn
23.01.2016 19:11Есть поддержка внешних трэкеров.
Приложение открывает UDP-порт на 25855 и ждет информацию от внешних трэкеров.
Для виртуальной машины я уже сделал такое приложение, правда еще не допилил, поэтому не выложил исходники и бинарники.
Для браузеров и скайпа тоже можно сделать, но я в ближайшее время этого сделать не смогу, потому что не знаком с особенностями написания софта под них.Alexey2005
23.01.2016 22:49ИМХО, гораздо проще читать заголовок активного окна и просто пропускать его через задаваемые пользователем regexp'ы. Это покроет большинство потребностей пользователя.
AllexIn
24.01.2016 00:44Рассматривал этот вариант. Не понравился. Тем более что очень часто заголовок анализу не поддается или вообще никакой полезной инфы не содержит.
Lol4t0
24.01.2016 00:53тут проще extension изготовить. Например, можно начать с этого: stackoverflow.com/questions/25625109/chrome-extension-get-the-current-domain-on-every-tab-change
Vapaamies
23.01.2016 19:18А бинарников для Windows нет? Для тех, кто не пишет на сях, установка компилятора/среды, установка Qt, пляски с бубном во время сборки — однозначно прокрастинация. Как ее учитывать? Рекурсия-с!
AllexIn
23.01.2016 19:21+4Есть конечно же. Только они не в репозитории, а в разделе Релиз.
Я уже осознал свою ошибку, люди не пользующиеся github не знаю про раздел «Релизы» и ищут бинарники в исходниках.
Добавил ссылку внутри репозитория на релизы.
Вот такую:
github.com/Allexin/TrackYourTime/releasesEvilsInterrupt
23.01.2016 21:27+1У Вас на заглавной страничке(readme.md) можно указать «How to install» и в этом разделе поместить все необходимое
AllexIn
23.01.2016 21:40+1Да, это единственно верное решение. В голову не пришло так сразу сделать. Хотя проекты на которые я смотрел как раз так и делают.
EvilsInterrupt
23.01.2016 22:29+1Выкладывать готовые, собранные бинари в репозиторий очень глупая затея. То где сейчас в 'Releases' это верное. Это же общепринятая практика, когда на страничке проекта есть вкладка «Downloads»
MacIn
23.01.2016 21:18del. Не посмотрел в корень.
AllexIn
23.01.2016 21:20Да. Qt. Проект настроен на сборку под MSVC 2013. Под MinGW не настраивал — там есть особенности и я пока не тратил время, чтобы с ними разобраться. В основном потому, что чуть больше размер дистрибутива получается из-за MinGW либ.
MacIn
23.01.2016 21:23Очень полезный инструмент, мне пригодится — как раз работаю удаленно по часам, бывает полезно самого себя контроллировать. Спасибо.
zirf
23.01.2016 22:04А репозиторий Ваш работает. Да, выглядит все кустарно, но это пока. Просто со мной шутка злее два варианта SalesPlatform . Стесняюсь у разработчиков спросить, почему их репозиторий пустой. Напоминает dockerhub и оригинальный vTigerCRM — сборки сугубо типа «example», к эксплуатации не годные. Но ладно, это способ зарабатывания денег (внедрение), у кого надо — свои сборки в закрытых репозиториях. Но как авторы у себя на гитхабе хостят по принципу — «все там и мы тоже». Залили допотопную ветку и забыли.
Вообще муть — на сайте вообще нет бесплатного варианта, но покопаться он оттуда же и скачивается.
Agel_Nash
23.01.2016 23:23Ничего удобнее RescueTime не встречал. Жаль, конечно, что не OpenSource.
Klaster
24.01.2016 05:39Не смог найти как ей указать какие приложения у меня для работы, какие для отдыха. И список сайтов нужных в браузере тоже. Как она собралась без этого учитывать мое время не понятно.
Agel_Nash
24.01.2016 05:50Для начала открываем приложение. Потом заходим на сайт в раздел Reports -> Applications & Websites. Находим наше приложение и сопоставляем его с какой-то категорией, выставляем тип продуктивности. Profit.
Agel_Nash
24.01.2016 06:06Пример выше описывает сценарий, когда в конкретный день нужно изменить категорию/продуктивность для приложения. Чтобы изменения применялись всегда, нужно открыть Tools -> Categorize Activities. Тут отображаются все приложения, которые уже сопоставлены с каким-то видом активности. Вообще, новые приложения иногда самостоятельно каталогизируются (предложенную категорию и тип продуктивности можно поменять) на основании категорий выбранных другими пользователями RescueTime. Не забудьте так же заглянуть в раздел categorize your common activities — туда попадают новые приложения, которые не удалось каталогизировать автоматически.
leoismyname
24.01.2016 17:29Скука какая. Никогда ежесекундно не использовал аналитику с этого сайта. А что мешает собрать статистику за неделю или две и скорректировать принадлежность к той или иной категории? Думаю, это проще, чем искать как что-то занести в какой-то там список.
Klaster
24.01.2016 17:37У меня приложений в которых я работаю, ну десяток, это если максимум, обычно два :). В разных проектах, это разные приложения. + определенные сайты, какие то для работы, какие то нет. Вспоминай потом через неделю, что было и зачем.
leoismyname
24.01.2016 17:57Раз в неделю приходит отчет с RT, он содержит круговую диаграмму и список самых посещаемых сайтов и используемого ПО. Так вот, в этом списке отражена доля записей, которые автоматически не удалось привязать к какому-либо типу, в таком случае, можно перейти по ссылке в письме и откорректировать. За неделю то вспомнить сможешь :) Если я с какой-то программой за неделю поработал пол часа или час, все равно легко вспоминается.
Минусы у RT тоже есть, так что не призываю конкретно к этому варианту, просто решил поделиться своим решением подобной проблемы.
voidMan
24.01.2016 05:23Под OS X 10.11.2 не запускается. Рискну предположить, что из-за SIP.
AllexIn
24.01.2016 10:43SIP не должен мешать. Приложение не делает ничего что попадало бы под его контроль.
Скорее всего macdeploy не все зависимости добавил в бандл. А проверить я толком не могу, потому что у меня то окружение со всеми зависимостями уже.
zirf
24.01.2016 08:38Ветка превратилась в подобие трекера, поэтому предложение:
Идете на gitter.im, регитесь с эккаунта github и создаете chatroom (кнопка Create посередине, там #channel), шарите, Вам предложат варианты обычный урл и бэйдж в README.md возьмите второй и суньте ссылку в свой README.md (сверху где-нибудь) и будет у вас прямо в README.md ссылка на Вашу конмнатку виде картинки .
Вообще про подобные украшения спросите google про github badges. Там чего только нет, хоть пожертвования собирай.
zirf
24.01.2016 09:04В догонку, если будет только урл, то вставка в README.md такого вида:
[![Join the chat at gitter.im/your-name/your-room](https://badges.gitter.im/your-name/your-room.svg)](https://gitter.im/your-name/your-room?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
your-name на github,gitter
your-room — что Вы там выдумали.
slonm
24.01.2016 11:14Великолепная штука для оценки времени рутинной части работы.
К сожалению так не учтешь сколько времени потрачено на обдумывание способов решения проблемы во время велосипедной прогулки, просто расхоживая по квартире, а так же делая наброски на бумажках или доске
Antelle
24.01.2016 11:45+1А что за приложение ArchiFuck.exe (на первом скриншоте пятое снизу)?
AllexIn
24.01.2016 11:46+1Несколько месяцев назад мне пробовали троянчика подкинуть. Никуда из песочницы он вылезти не смог, но след в трэкере оставил. :) Я как-то пропустил матерщину на скриншоте, вылетел из головы этот случай. Сейчас исправлю скриншот.
RedSadnessTint
24.01.2016 13:46Конструктив:
— было бы полезно для некоторых приложений устанавливать таймаут индивидуально;
— Браузеры было бы полезно учитывать по контенту, т.е. какие-то сайты добавлять, которые являются работой, какие-то 100% прокрастинацией;
+ удобную штуку (плагин) к браузеру, котрой можно быстро отметить домен в какую-то категорию.
Очень понравилась простота, никаких тебе настроек, просто запустил и работает почти сразу, что очень большой плюс.
Удачи в развитии!
synchrone
24.01.2016 14:17Подброшу ещё проект по теме: arbtt.nomeata.de.
Очень гибкая штука, можно скриптовать свои правила. Работает под Windows + Linux.
SkryabinD
24.01.2016 17:46Под Mac пользуюсь трекером Timing. Трекер простейший, однако позволяет разбить по категориям сайты, пути в консоли, контакты в скайпе, открытые файлы в WebStorm, открытые базы в менеджере БД. Таким образом я могу учитывать даже время общения с заказчиком, или посчитать время работы над каждым проектом отдельно.
Я это к тому, что раз у кого-то это получилось, значит, это как-то можно сделать, без всяких надстроек над браузерами и т.д. А учет времени только по названию программы точен быть не может.AllexIn
24.01.2016 17:48Трекер простейший
Это вы на основе чего такой вывод сделали?SkryabinD
24.01.2016 18:01Я им пользуюсь уже давным-давно, и покупал, если мне не изменяет память, за 1 доллар. В то время из-за отсутствия синхронизации я записал этот трекер в разряд простейших. Конечно, трекер мощный и удобный, но для меня он остается родным и простым :).
Чтобы случайно не начался спор, предлагаю считать его простейшим в плане юзабилити :)AllexIn
24.01.2016 18:04Понятно.
Просто с точки зрения сбора данных: там, видимо, огромная база приложений с алгоритмами расписанными как каждое из них анализировать.
Это не реально сделать для беслпатного продукта, потому что приложения появляются быстрее чем можно себе позволить добавлять их поддержку.SkryabinD
24.01.2016 18:39Не знал про базу, думал, что есть какие-то универсальные способы.
Но все равно, если выделите определение приложения в какие-то отдельные файлы/модули, то уверен что кто-то поддержит и поможет добавить обработку самых нужных приложений.AllexIn
24.01.2016 18:41Я тоже «не знаю» про базу, но не вижу универсального способа анализировать активность внутри приложений. Как минимум regexp для анализа заголовка каждого отдельного приложения.
SkryabinD
24.01.2016 18:53Кстати да, вот сейчас посмотрел, как трекается программа Sequel Pro (для работы с Mysql): в трекинге как раз отображается то, что в заголовке окна программы. Причем не совсем корректно составляется дерево активности. Но тем не менее, это позволяет выделить работу с разными базами в разные проекты.
zb3k
24.01.2016 20:45Думаю что база там не большая. Доступ к информации об открытых файлах или url-адресах программа получает с помощью AppleScript. В случае с файлами это стандартные методы. А вот для получения url скрипт прописан для каждого браузера. Для всех остальных берется заголовок активного окна.
Вот чего не хватает в Timing так это возможности самостоятельно прописывать путь к файлам/урлам в AppleScript.
RouR
24.01.2016 22:44Но на самом-то деле Хром используется также для доступа к багтрекеру, документации, stackoverflow. Но первая версия трекера не умела отличать эти действия и записывала всё в одну категорию. Одно из временных решений — использовать Хром для чтения хабра / почты / vk и т.п., а всю рабочую деятельность вести в Frirefox. Но привычка была слишком сильна и всё равно в итоге часть работы делалась по привычке в Хроме.
Так как была решена эта проблема? Я установил, запустил, а в отчётах только сам браузер без возможности разделить что эти сайты смотрю по работе, а это я во вконтактике сижу.AllexIn
24.01.2016 22:46+1Решена. Тестирую сейчас и допиливаю до приемлемого уровня. В паблике этого функционала пока нет.
monah_tuk
25.01.2016 14:14Никаких ручных таймеров. В мире, где пользователь постоянно переключается между разными задачами, отходит «покурить», отвечает любовнице в ICQ, точность ручных таймеров стремится к 0.
с остальными двумя пунктами согласен, но для себя идеалом таймера принял шахматные часы. только с количеством циферблатов по количеству задач — ткнул, ход пошёл.
В общем и целом получилось: gitlab.com/hatreds-tools/task-timer
собираешь (бинарники для винды могу дать, под Linux главное dev пакеты для Qt4 поставить), запускаешь, висит в трее, заводишь таски — начал заниматься кликнул по ней. Если долго отсутствовал — предложит скорректировать время задачи (время реакции оценивается по времени бездействия пользователя за компьютером и задаётся в настройках), на что можно согласиться или нет. Да и вообще, как показывает моя практика, для учёта достаточно точности до 30 минут и кто рапортует, что работал больше 30-35 (плюс-минус) часов в неделю и так круглый год, тот лукавит :)AllexIn
25.01.2016 14:17Ну так то и таймер не нужен. :) с 9 до 18 рабочее время, что тут считать.
задача то как раз в том, чтобы посчитать что внутри этих 9 часов.monah_tuk
25.01.2016 15:14Нужна раскладка по задачам. Что бы потом можно было оринетироваться, типа «на изучение спеков нового чипа, ориентировочно столько часов», «на устранение такого рода проблем — столько часов» ну и так далее. Т.е. у меня в трекере, допустим, десяток задач, нужно понимать, но что ушло время и в каких соотношениях. Собственно эти задачи в трекере и висят и между ними происходит переключение как в шахматных часах.
mn3m
25.01.2016 16:29Пробовал ли автор Hamster Time Tracker?
Подробнее о Hamster- OpenSource, Python, QT;
- есть в стандартных Debian based дистрибутивах GNU/Linux в стандартном репе (sudo apt-get install hamster-applet);
- хоткеи для переключения активности;
- некое подобие отчётов;
- есть возможность переключения активности при переходе на альтернативный Workspace;
- есть hamster-cli свой консольный интерфейс для расширения функциональности или просто для доступа из консольного интерфейса;
AllexIn
25.01.2016 16:37Он разве кроссплатформенный?
Я натыкался на него в процессе поисков, но не увидел нигде намека на кроссплатформу и поэтому не изучал глубоко.
monah_tuk
26.01.2016 07:47<зануда>QT — Quick Time?</зануда> А если серьёзно, то где вы его увидели:
Hamster is written in PyGTK, using SQLite for data storage.
?
mn3m
25.01.2016 19:52Теоретически — да, т.к. Python, но практически — весьма сложно, т.к. зависит от множества библиотек которые прийдётся перетащить в чужеродную среду, среди которых D-BUS. Работать оно возможно даже будет, но вопрос — какой ценой и надо ли оно. И я ошибся. Он использует не QT, а GTK2.
mvs3d
26.01.2016 11:15Много лет работал на почасовой основе, за это время перепробовал различные варианты и сложилось такое мнение:
- автоматические трекеры более точно считают время, но далеко не всегда поймешь к чему его отнести (скайп, например используется и в работе и для общения с родственниками… про браузер вообще молчу);
- ручные трекеры дают более точную картину того над чем занимался, не только над каким проектом но и какой задачей, но бывает забываешь про него (что обидно, частенько забываешь запустить трекер именно в ходе самых продолжительной и продуктивной работы — в это время и про еду можно забыть, что уж говорить о кнопке «Старт» в трекере?);
В целом, второй вариант выглядит все-таки предпочтительнее, если вы хотите получить более ясную картину о том, куда ушло время (а не только работал в это в время или в игрушки играл), плюс прививает рабочую дисциплину. НО! Автоматический трекер мог бы стать больши подспорьем в случаях, когда в пылу работы «про все забыли», или когда забыл поставить на паузу задачу когда отошел от компа или тебе позвонил родственник в скайп.
В общем, мне видится полезным объединить два типа трекеров в один. Впрочем, можно использовать ваши данные, загружая из в свой «ручной» трекер… надо будет эту мысль обдумать. Спасибо за софт!AllexIn
26.01.2016 11:21Плагинчики просто нужны внутри софта, чтобы было понятно что делало в том же скайпе.
По поводу ручного режима — для этого есть профили.
Пожалуй единственное что мешает их использовать как «задачи» — отсутствие возможности перенести профиль в архив не удаляя его. Это в планах, но не приоритет.
Anton_Gorodezkiy
26.01.2016 17:34В своё время я использовал taskcoach.org. Он opensource.
AllexIn
26.01.2016 18:10Он не автоматический.
Anton_Gorodezkiy
26.01.2016 18:18Ну так opensource же, вы могли бы заточить его под себя (не знаю конечно насколько это было бы легко).
Ну да не суть, я просто хотел вам о нем рассказать, если вы не сталкивались. Мне очень помог, когда было нужно.
gotch
В ICL habrahabr.ru/company/icl_services есть трекер, как мне кажется мини-шедевр в свое роде. С выгрузкой отчетов в Microsoft Project Server, отличной статистикой.
Так что вы не одиноки в своем начинании.
AllexIn
А где его посмотреть можно?
gotch
Вот с этим проблемка — надо устроиться к ним на работу в Казани или Воронеже. )) Или попробовать спросить, зря что ли заводили блог корпоративный. Будет что написать.
Но тут интересна сама идея, что десктопное приложение это своеобразный клиент к Project Server. И там видно сколько часов работал каждый инженер, по какому проекту, по какому клиенту, сколько провел на митингах, учебе, и т.д.
Правда со стороны сотрудника это уже не так весело. Если из Outlook можно автоматически импортировать календарь, то вот остальные задачи надо заводить вручную, и не забывать нажимать на кнопочки Play и Stop, когда работаешь надо задачами.
gotch
Честно говоря, немного не понимаю минусный дождь. Мысль которую я хочу донести, что проблема учета рабочего времени — довольно популярная. При этом мне пока не встречались настоящие адапты коммерческих систем онлайн трекинга. Все пилят свой велосипедик.
Только практика подсказывает, что маловато скриншотить процессы и полагаться на автоматику. Трекинг хабра — это работа или развлечение? По делу читаем, или резвимся в комментариях?
И на выходе мы должны получить какую-то полезную информацию, объективную, измеримую, на основании которой мы можем принять какое-то решение. Мы потратили на разработку сайта 100 часов и получили 1000$, а на мобильную игру — 60 часов и 1500$, значит мы или за сайты слишком мало денег берем, или надо бы больше игровых заказов брать, или повышать свою сайтописательность, или часть на атусорс отдавать.
Вторая мысль, что отчетность, аналитика, может и в некоторых случаях даже будет лучше, если она дальше извлекается из профильного инструмента, например системы управления проектами. Так делают многие крупные компании. Для себя может не надо, но просто знайте, что при учете ресурсов, рабочего времени стараются использовать проектный подход. Не нравится Microsoft Project — есть OpenProject, хотя последний уж очень аскетичен.
Как мне видится, зачастую прокрастинация — это недостаток планирования. Например, вы делаете веб проект, но ни на этапы не поделили, ни подзадачи не выделили, ни сроки выполнения — и получился не проект, а супчик такой. И мы с этим боремся, документируем сроки прокрастинации. Но есть и другие варианты.
extempl
Очевидно, что минусы за «в некоторой компании есть супер приложение для проблемы, которую вы решаете, оно офигенное, только я вам его не покажу.»
Wesha
"У нас есть такие приборы! Но вам про них не расскажем."
gotch
У них есть такие приборы, и кое-что про них мы расскажем.
gotch
Вы бесспорно правы с одной стороны. Хотел бы, но не могу, мопед-то не мой. Но вдруг ведущие корпоративный блог сами расскажут, до чего доросла их система.
С другой стороны, мне кажется было бы интересным, если бы в комментариях вдруг появились сотрудники HP/MS/1cloud и написали бы — да, мы тоже имеем свой велосипед. Конечно, код мы не можем отдать. Но в нем основная идея то, то, и то. Возьмите на заметку. Кругозор-то расширить оно никогда лишним не бывает.
Хотите еще расскажу про трекинг рабочего времени? В одной очень большой и распределенной компании, когда еще у них не было хороших каналов от центра до каждой точки присутствия тоже написали свой тайм-трекер. Он был в форме плагина к Outlook, и проделанную за день работу отправлял по «внутренней» корпоративной почте.
В этом был мой посыл.
zirf
Если Вы официальный партнер MS/HP, то кое-что Вы узнаете, не о потрохах продуктов, но об их свойствах. Используют эти компании свой софт, идущий на продажу. у этой фирмы нет партнеров, так это не название, а ТМ, и даже зная ИНН: 16601462300 / ОГРН 1101690062638, то мало, что понятно, но если Вы там работаете, то знаете откуда ноги. Просто сравнение ICL КПО ВС имеет в клиентах «Газпром» ICL-Services кучу контор с латинскими буквами в названии, знающему политику «Гапрома» все понятно.
zirf
В тихушку скажу — навряд ли оно такое офиненное. Создавала небольшая закрытая группа. Это .Net. Обычно не на продажу делается кустарщина.
zirf
Не в бровь, а в глаз, я уже заметил что оно — отстой, это тоже правда, проверить все равно нельбзя.
zirf
Есть одно «но». В реальном бизнесе нужно отслеживать другую активность. Поэтому ПО для отслеживания CRM или телефонной активности — навалом и реальный бизнес его берет. Увы, с точки зрения «гениальности» телемаркетор или продавец активных продаж — робот, и чем больше, тем лучше. К роботу нужен датчик только и всего.
k3lmiir
Минусы наверное были от сотрудников компании, которые используют этот ТТТ. На самом деле это не то что шедевр, хотя нет, это именно что «шедевр». Ужасная утилита с ужасным юзабилити, причем на всех концах, и со стороны сотрудника, который его заполняет и со стороны менеджера, который просматривает статистику.
Про интеграцию с Outlook тоже не совсем правда — были самописные скрипты, которые реализовывали импорт из Outlook, из коробки все это либо не работает вообще либо работает из рук вон плохо. В общем не все так солнечно, как идея, такой подход хорош, а вот его реализация даже не плоха — отвратительна (я не имею ввиду утилиту тс).
gotch
Смотрел на нее с обеих сторон, и остался вполне удовлетворен. С учетом числа проектов, инженеров, разнообразия задач результат мне показался вполне достойным.
И главное — можно довольно точно понять чем занимаются все эти бесчисленные инженеры, часть из которых, как оказывается и вовсе ничем не занята.
k3lmiir
Вот именно, что смотрели, а не использовали. Когда начинаешь использовать этот «шедевр» каждый день, начинаешь тихо закипать.
Интерфейс неудобный, функционал нулевой, время отнимает…
По большей части трекинг происходит следующим образом — когда приходит напоминание о необходимости заполнения, достается файл, в которым ты отмечал свою активность или делается выгрузка из тикитной системы (так как это удобнее и проще) и начинается заполнение «задним числом» c подгонкой времени. Заполнять это по факту — мука. У ТСа гораздо лучше реализован принцип трекинга по процессу, в силу специфики работы можно добавить возможность одним кликом создать таск из письма и стартовать его, автоматическое заведение тасков из пришедших инцидентов и завершение по закрытию инцидента.
zirf
Блог заведен для рекламы. Идея малофонкциональна по двум причинам. 1. Это очень дорогой продукт, MS Projectecr Server. 2. Основная идея никак не связана с топиком — это всего лишь электронный колпак.
Да и называть «шедевром» никому не видимый продукт, согласитесь, странно. Я говорю «это о полный отстой» и прав как и Вы. Проверить все равно нельзя.