惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The GitHub Blog
The GitHub Blog
MyScale Blog
MyScale Blog
爱范儿
爱范儿
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
美团技术团队
Y
Y Combinator Blog
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
Martin Fowler
Martin Fowler
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
M
MIT News - Artificial intelligence
博客园 - Franky
V
Visual Studio Blog
I
InfoQ
V
V2EX
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
博客园 - 司徒正美
L
LangChain Blog

博客园 - 咖啡机(K.F.J)

带团队后的日常思考(十八) Node.js躬行记(34)——用 AI 生成一个小浣熊水浒卡鉴赏网站 Node.js躬行记(33)——AI生成官网 Node.js躬行记(32)——F2A实战 创新聚变的2025年 2025年终活动回顾 用户体验定律和消费心理学记录 Web优化躬行记(7)——后台上传大批量图优化 Node.js躬行记(31)——IP白名单变迁史 Node.js躬行记(30)——SkyWalking使用和排查分析 童年小浣熊水浒卡探究(二) 童年小浣熊水浒卡探究(一) 推陈出新的2024年 带团队后的日常思考(十六) 设计心理学 设计能力量化 《简约至上 交互设计四策略》记录 前端体验优化(5)——后台 带团队后的日常思考(十五) 两个有趣的AI项目 研发效能与稳定性保障 可观测性 带团队后的日常思考(十四)
带团队后的日常思考(十七)
咖啡机(K.F.J) · 2025-07-28 · via 博客园 - 咖啡机(K.F.J)

一、日常问题

1)应对简陋需求

  最近接到隔壁算法组的一个广告配置的需求,就给了两行描述,两张配置截图,给的信息太简陋。

  给的信息太少,在开发过程中很容易出现目标偏差,例如将预期的圆形最后做成方形。

  所以前期的准备一定要做好,首先就是理解需求背后的目标,然后再确认也没结构和交互细节。

  从沟通中了解到需要在现在的广告列表页面增加个流量配置的功能,那就基于列表页做修改。

  既然有了配置,那就应该有张管理界面,包括列表和上下架。

  再根据提供的两张配置截图,确认配置需要的字段,并且修改原先的交互流程,改成更利于实现和维护的方式。

  界面效果完成后,在技术联调时,又出了些问题。之前做的都是需求准备,漏了技术准备。

  虽然我这边做的技术调整并不复杂,但是调整也是需求花时间的。

  若遇到复杂情况,调整整个技术方案,那将是巨大的浪费,之前有个需求,就是因为调整了多次方案导致持续一年才上线。

  所以说,遇到一个简陋需求,要主动去引导提需求的人完善细节,然后做足需求和技术的前期准备,避免不必要的返工和调整。

 2)眼见为实

  当需求描述比较模糊或比较复杂时,一定要做出个实物让人能看到,而不是靠嘴说。

  靠嘴说总会出现偏差,导致最后的返工。而实物不一定要可操作的程序,可以是一张图,一张表等等。

  只要能将问题描述清楚,所有人能达成共识就行了。

  只有在大家眼睛看到了后,才能感同身受,不然就是盲人摸象,各有各的理解。

3)团队意识

  在找工作时,招聘条件中经常会有一条叫要有团队意识。

  我觉得不给别的组增加工作量,就是团队意识的一种体现,即不给别人添麻烦。

  团队意识这个问题不是发生在我们组,是隔壁组,当时有个需求改动。

  然后周四下午明确了技术方案,新的需求采用新接口新的数据库表,老的功能全部沿用不变。

  结果周五下午,测试开始工作时,发现老的功能都受了影响,大大增加了她的工作量,翻了几倍。

  本来只要测试新的需求即可,但是现在要连同老功能一起测试,当天晚上,她还要加班验收。

  这对于我们团队也是个警示,确认好方案后,不要随意变动,若会影响其他团队,要及时同步。

4)npm删除stylus

  周三下午发生了件突发事故。

  测试环境的一个项目在发布后突然不能启动了,排查发现是 stylus 被 npm 平台删除了。

  

  找到 stylus 的 Github 主页,在 issues 的第一条置顶中找到了解决方案

  就是切换下载的源地址,从 npm 切换到 Github 中,package.json 参考:

{
  "dependencies": {
    "stylus": "github:stylus/stylus#0.54.4"
  }
}

  yarn 打包的,也是在 package.json 修改,参考:

{
  "resolutions": {
    "stylus": "github:stylus/stylus#0.54.4"
  }
}

二、工作优化

1)埋点引起的4个问题

  在本次的年终盛典活动中,有两张页面是直接在后台界面配置生成的。

  当时就觉得不会有问题,但没想到在运营要埋点数据时,却出现了 4 个问题。

  第一个问题是,他们不知道看板在哪里,问数据组的人,她居然也不知道,后面只能反查数据库表去搜索。

  第二个问题是,有个产品知道看板在哪里,但是点进去是空白的,原来从去年 10 月份开始,看板就异常了,但居然没人上报反馈。

  第三个问题是,有一张页面的埋点没有入库,排查后发现是因为有个值不符合入库规则,那马上就修复了传送规则。

  由此就引出了第四个问题,由于是后台生成的页面,所以没有引起注意,埋点也就没有让 QA 验收,流程上的漏洞导致没有发现埋点问题。

  在未来,无论是手写还是生成的,都要验收埋点。

  其他项目也是的,很多细节还是要打磨推敲,避免遗漏。

2)需求更改流程优化

  当业务或产品在开发的过程中,提出业务的修改时,一定要引起警惕。

  很多时候,他只是说了简单的一句话,但是真做起来却要触发很多联动。

  所以,最科学的方法是让相关人员补齐需求文档,然后任何改动都要同步给测试组。

  若与服务端或其他端有关,也要一并同步,各组之间要达成共识。

  在拿到改动的文档后,再各自评估改动的成本,然后计算风险,再决定改不改。

  上来就干,就会有很多项目风险隐患,还可能会影响其它项目的进度。

  上个月有个短剧的需求,运营在群里说增加个多语言的功能,没通知产品,服务端就开干了。

  干到后面才发现搞定不了,需要客户端介入,增加了几天的工作量。

  最后才通知到产品,产品认为这个功能可以先不做,运营也没有强求。

  如果按流程来,那么这个需求都不用开始,也不必耗费人力在此处。

3)管理后台分离

  公司有两个产品,当年两个产品的后台设计在了一个项目中,随着时间的推移,项目变得越来越庞大。

  每次在代码发布时,构建都会消耗不少时间,于是就想到了优化。

  那这个时候其实有很多方法可供选择,例如拆分成两个独立的后台,但如此一来,公共代码也要拆分成两份维护。

  或者采用微前端技术,剥离一个项目出来,不过有一定的开发成本。

  在观察后发现,构建会根据路由文件来,如果路由文件中没有声明,那么就不会将此文件纳入构建流程中。

  于是声明了两份路由文件,大家维护各自的路由。

  公司采用的是 umi3.0 框架,在执行和构建两个命令中增加一个自定义的环境变量来区分。

  "scripts": {
    "start": "umi dev",
    "start2": "THEME=fj umi dev",
    "build": "umi build",
    "build2": "THEME=fj umi build",
  },

  在 .umirc.js 配置文件中,就能根据此变量来引入合适的路由。

import routes from './src/routes';
import routes2 from './src/routes-fj';
const { THEME } = process.env;
export default {
  define: {
    'process.env': {
      THEME
    }
  },
  routes: (THEME === 'fj' ? routes2 : routes),
}

  在完成路由构建后,前后的代码发布总时间减少了 3 分钟以上。

  经过一个月左右的时间,陆续将测试、预发和生产的三个发布流水线部署完成。

  当然,在改造的过程中,也会遇到些问题,例如菜单的显示。

  路由分离后,需要根据当前环境在展示相应的菜单,而不是像以前那样展示所有。