2021年26周: 达成一个里程碑

截止今天,我在供职的第二家公司里待满 5 年了,也收到了公司给准备的 5 年礼包,开心一下。

记得从第一家公司离职的时候,我给自己的目标就是在下一家待满 5 年,今天终于达成所愿了。

5 年来,对我来说成长的最快的就是刚来公司过试用期的那半年。我从一个后端开发生生给学成了全栈。虽然学的比较粗浅,但是也拓宽的视野。

在 5 年的交付训练中,我下意识的养成了干一件事情准备多个方案的习惯。

其实公司和学校是一样的,它能给你最大的财富不是公司,不是学到的技术,而是一群可爱又厉害的同事。很多东西我不会,但是我知道谁会去找谁,很多事情我不知道,但是我知道谁知道。

2021年25周: 提方案

给客户提方案,底下一堆开发,居然没有人 challenge, 所有人都说 All good。这是危险信号,一般有两种情况:

  • 客户没有主意
  • 不关心

2021年24周: 2FA 认证

现在多数账户开始 2FA 认证,使用类似 Okta Verify 的工具,配置一个六位的认证码,输入完账户名和密码后,再输入动态的认证码来保护账号的安全。这种模式让我想起了多年前银行发的电子密钥,一个小仪器,里面动态刷新6位密码,使用网上银行的时候,再输入。我记忆中,第一次用过,后来一直等到电池没电,也没有用过,也不知道放在了哪里。

同样,这种放在 Okta Verify 上的认证码也很容易丢失,一个不小心,我就删掉了自己 Github 上的配置。这个时候,我的账号就登陆不进去了。通常这个时候,当年第一次使用生成的恢复码一定是找不到的,难呀。

当然不同的账号方,都会提供一定的机制帮你重置,像 Github,花点时间。

2021年23周: 不要浪费

每半年一次,客户都要拿出来 3 天时间让我们自己做点东西,我所在的团队已经获得过了该活动的所有奖项。问题是,我们做的很绚丽,概念很新颖,但都止步于活动。活动后再也没有人使用过,或者再次开发过。

正好这次活动的主题是“不要浪费”,所以这次我们以实用为准,做了个日常工作中真正需要的工具。现在活动结束一周,我们组的人都用了起来,非常开心。当然,这次是没有得奖的。

3 天时间想把一个 feature 做到产品级别也是不可能的,还有很多 bug。所以不要低估了产品的工作量。

2021年22周: Github Project Board 统计

践行过敏捷实践的团队都用过白板吧,使用最多的有 Trello,Jira,最近 Github 也出了个 Project,由于和 Github 的血亲关系,很多团队开始转向 Github Project。

Github Project 基本还原了 Trello 的主要功能,但是缺乏丰富的插件,目前还没有看到 Github 开放接口来支持插件。没有插件的 Board 没有统计功能,甚至一个迭代做了多少张卡都需要自己数一数。

苦于此,第一时间能想到的是 Github API,尝试了一番,能很容易拿到 MovedColumnsInProjectEvent。当卡片移动时,移动的信息将记录在卡中。但是看不出来是从那个 column 移动到那个 column。最终在文档发现,projectColumnName 信息在 preview API 中才会出现。preview API 需要在 headers 里面添加

Accept: application/vnd.github.starfox-preview+json

注:Preview API 不稳定,可能随时被删除。

GraphQL Client 中的文档并不全,可见在使用 API 时,还是要以官方文档为主。GraphQL 查询脚本如下所示:

{
  repository(owner: "zddhub", name: "gpkit") {
    milestones(first: 20) {
      nodes {
        title
        issues(last: 100, states: CLOSED) {
          nodes {
            title
            url
            timelineItems(itemTypes: [MOVED_COLUMNS_IN_PROJECT_EVENT, ADDED_TO_PROJECT_EVENT], first: 100) {
              nodes {
                __typename
                ... on MovedColumnsInProjectEvent {
                  createdAt
                  projectColumnName
                }
                ... on AddedToProjectEvent {
                  createdAt
                  projectColumnName
                }
              }
            }
          }
        }
      }
    }
  }
}

注意这里使用 Milestone 来跟踪项目的进度,对没有使用 Milestone 的项目,也可以直接查 issues 获得类似结果。

搞清楚了 API,剩下的就简单了,顺便学习了一下 deno, 一个小的统计功能就生成了,目前支持两个指标:

  • Cycle Time:卡从开始做(Doing)到完成(Done)所用的时间。
  • Lead Time: 代码提交到部署上生产所用的时间。

统计的准确性需要卡片正确的拖动来配合,源码在这里,欢迎参考使用。