工时统计工具汇总

01 Dec 2023 2486 words 9 minutes BY-SA 4.0
develop

难道不想看看自己每天都干了啥嘛~

statistic

统计工时的原理本质上就是:

  1. 工作时工作需要使用的软件上的某个插件每隔一段时间发送数据到统计工具的服务器上
  2. 统计工具的服务器每隔一段时间通过邮件、微信、钉钉机器人等发送工时信息的通知
  3. 统计工具提供一个可视化的网站

统计工具

统计工具通过插件统计每天工作的时间。这些插件可以包括:

为了防止挂机,插件要在规定时间间隔内发心跳信号。最终显示不同系统不同编辑器不同语言不同项目的工作时间。

或者统计操作次数,一次操作称为 1 点经验:

不用发心跳信号,可以计算经验后一次性 post 到统计工具的服务器上。

一般统计操作次数的统计工具插件更难实现。最终显示不同机器不同语言不同时间段的操作次数。

可以查看开源代码来了解插件需要获取哪些信息防止数据盗取。

徽章

可以通过统计工具的接口获取工时信息。用途是实现徽章以放置在你的主页上或者下载以备份。一般统计工具都提供了封装好的接口。

XP 是经验的缩写!!!

数据同步

因为不少统计工具的数据保留更多时间要付费,所以可以将每天的数据下载下来以备份。

on:
  schedule:
    # modify by yourself
    - cron: MM HH dd mm ww
  workflow_dispatch:

jobs:
  update:
    runs-on: ubuntu-latest
    steps:
      - uses: superman66/wakatime-sync@v1.0.0
        env:
          GH_TOKEN: $
          GIST_ID: $
          WAKATIME_API_KEY: $
          SCU_KEY: $

数据可视化

需要对下载的数据进行可视化。

wakatime-dashboard

插件开发

再多提一嘴关于插件的开发。因为普通用户对这个可能不感兴趣所以放在了最后。

按编程范式来分,这是典型的事件驱动编程:当某个事件触发时,执行一个回调函数,在回调函数中向 wakatime / codestats 的服务器发送信息。 wakatime 因为提供了 wakatime-cli 所以会简单一点,只需要在后台另起一个 detach 的子进程即可。

笔者负责了 wakatime 的一些编程语言的 REPL , gdb 的插件开发:

wakatime

不同的软件提供了不同的回调函数(钩子 hook 或句柄 handle ):

笔者也希望更多开发者尝试开发相关插件,以便更好地统计大家每天使用各种软件的时间

总结

工时统计主要是用于个人编写周报时回顾工作内容。然而似乎也有一些公司部门试图用其做 KPI 考核。私以为不妥。在有开源软件代码审核员呼吁大公司不要刷 KPI 的前车之鉴下,古德哈特定律必将再次灵验:

若一个经济学的特性被用作经济指标,那这项指标最终一定会失去其功能,因为人们会开始玩弄这项指标。

– 查尔斯·古德哈特

https://user-images.githubusercontent.com/32936898/199681341-1c5cfa61-4411-4b67-b268-7cd87c5867bb.png https://user-images.githubusercontent.com/32936898/199681363-1094a0be-85ca-49cf-a410-19b3d7965120.png https://user-images.githubusercontent.com/32936898/199681368-c34c2be7-e0d8-43ea-8c2c-d3e865da6aeb.png