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: 代码提交到部署上生产所用的时间。
统计的准确性需要卡片正确的拖动来配合,源码在这里,欢迎参考使用。