这个模块的注释比代码还长,说明改过很多次。我愣了两秒,然后继续敲代码。我把 mvn dependency:tree 的结果拉了三屏,果然有版本冲突。从此我多了一条团队规约

后端最擅长的事是把一个简单需求做成一次架构升级。我想反驳,但发现他说得对。我把 mvn dependency:tree 的结果拉了三屏,果然有版本冲突。我把这条经验写进了团队 wiki

查了三小时的 bug,是缓存的锅;又查了三小时,还是缓存的锅。我打开记录从头到尾扫了一遍。我在心里把这个需求的实现路径理了一遍,然后决定先问一下。第二天这个方案就变成了团队标准做法

我看了眼这条链路的层级,深得看不到底。我先确认了一遍前置条件,再动手。我把这个异步改成了同步,问题解决了,性能下来了。我沉默了,但心里是服的

这个系统设计得很优雅,跑起来全靠重启。我愣了两秒,然后继续敲代码。我把大事务拆成了小批次提交,锁等待时间立刻降了下来。我把这条经验写进了团队 wiki

这个模块的注释比代码还长,说明改过很多次。我不知道该说什么,就笑了笑。我在心里给这个接口的 QPS 估了个数,真实值差了十倍。这大概就是程序员的人生吧

同一个接口,测试环境返回三秒,生产环境返回三百毫秒,没人知道为什么。我想反驳,但发现他说得对。我把这个服务的配置项从代码里挪到了配置中心。第二天这个方案就变成了团队标准做法

这个模块的注释比代码还长,说明改过很多次。我忽然觉得,这可能就是这一行的常态。我打开了链路追踪,一段一段地看耗时,最后定位在连接池。那一刻我觉得自己还是很专业的

服务之间的调用链越来越长,一次请求要经过六个服务。我发现自己居然没法反驳。我打开了线程池的监控,队列已经堆了八百个任务。我沉默了,但心里是服的

我加了这个字段之后,下游有三个服务需要跟着改。我重新看了一遍手上的计划,把风险项标了出来。我在心里给这个模块的可维护性打了个分,不太高。第二天这个方案就变成了团队标准做法