人工智能

技术课题不是业务时间做的

博客分类: 

上周一个团队成员找我聊天,提了个问题:"既要做业务,又要做技术课题。但业务开发已经占满我的时间了,技术课题怎么办?"

我当时没有直接回答,而是反问了一句:"你觉得技术课题应该在什么时间做?"

他愣了一下,说:"当然是工作时间啊,不然呢?"

这个对话让我意识到,很多人对"技术课题"这件事的理解,从一开始就错了。

 

大部分人误解了技术课题的本质

 

先说结论:技术课题从来不是业务开发的平行任务,而是向上突破的选择题

很多开发者把技术课题理解成"额外的工作任务",觉得应该和业务开发一样,在8小时工作时间内完成。这种理解有两个致命问题:

第一,技术课题不是分配来的,是争取来的

在金融团队里,业务开发是职责范围内的工作,做不好要被考核。但技术课题不是——它更像是公司给你的一个额外机会:用时间和精力,换一个证明自己技术能力、拓展技术视野、提升团队影响力的机会。

既然是机会而非义务,凭什么要公司为你的成长买单?

第二,如果技术课题能在业务时间完成,说明它不够有价值

技术Leader的尴尬时刻

做技术管理这些年,我发现一个有趣的现象:越是成功的技术Leader,越不愿意分享自己踩过的坑。大家都在讲"如何打造高效团队"、"OKR落地实践"、"技术人才培养体系",却很少有人聊那些让人坐立不安的尴尬时刻。

但恰恰是那些尴尬时刻,构成了技术管理的真实底色。

 

当你意识到自己是瓶颈

 

2019年,我负责的前端团队刚从5人扩到10人。团队扩张后的第三个月,我突然发现一个问题:所有人都在等我review代码。

不是他们不主动,而是我在无意识中给自己设置了一个隐形职责——"技术质量守门人"。每个PR我都要亲自看一遍,每个技术方案我都要参与讨论,每个难题组员都会第一时间找我。

表面上看这是负责任,实际上是灾难。

团队的吞吐量被我一个人的工作时间卡死了。更糟糕的是,我发现自己在培养"等待型工程师"——遇到问题不是先思考,而是先找Leader确认。这不是我想要的团队文化。

那段时间很煎熬。一方面我知道必须放手,另一方面又担心代码质量下滑。最让人尴尬的是,当我试图"授权"时,发现自己根本不知道该怎么做。

过去几年里,我习惯了"事必躬亲就能保证质量"的工作方式。现在要求我"不插手也能保证质量",完全是另一套技能。

TypeScript的代价:为什么严格模式在大型项目中变成了负担

TypeScript这几年几乎成了前端的"标配",不用TypeScript好像就落伍了。但我观察到一个现象:很多团队引入TypeScript后,开发效率反而降低了,尤其是启用了严格模式(`strict: true`)的项目。

这不是TypeScript本身的问题,而是大部分团队高估了自己的类型设计能力,低估了类型系统的复杂度。

 

类型系统的复杂度被严重低估

 

大部分人以为TypeScript就是"给变量加个类型",但真正在大型项目中用TypeScript,你会发现类型编程几乎成了一门独立的学科。

看一个真实的例子,金融业务中的表单配置系统:

BFF层的谎言:为什么大部分团队不需要它

最近在和几个技术管理者交流时,发现他们都在规划或已经落地了BFF(Backend for Frontend)架构。问为什么要做BFF,得到的答案惊人地一致:"解耦前后端"、"提升开发效率"、"这是最佳实践"。

但当我问:"你们团队有多少后端开发?前端开发呢?",答案通常是"后端6-8人,前端3-4人"。这让我意识到一个问题:大部分团队上BFF,可能不是因为真的需要,而是因为"别人都在用"。

我想聊聊这个话题,不是要否定BFF的价值,而是想说:很多团队高估了BFF的收益,低估了它的成本

 

BFF真正解决的问题

 

先说清楚,BFF不是伪需求。它在特定场景下确实有价值:

场景一:多端适配。你的后端API是为Web设计的,现在要支持移动端、小程序、IoT设备。不同端的数据需求、交互逻辑差异很大,用一套API很难搞定。这时候BFF可以为每个端定制API,后端保持稳定。

场景二:聚合调用。前端一个页面需要调用5-6个后端服务,串行调用太慢,并行调用又要处理复杂的依赖关系。BFF可以在服务端聚合这些调用,减少前端的复杂度和网络开销。

状态管理的终局:不是Redux,也不是Context

前端圈对状态管理的执念,可能是过去十年最大的集体焦虑。从Flux到Redux,从MobX到Recoil,从Context API到Zustand,每隔一两年就会冒出一个"更简洁"的方案,然后大家又开始新一轮的重构和争论。

但我越来越怀疑一件事:我们在用前端的方式解决本不该存在的前端问题。

 

状态管理焦虑的根源

 

大部分前端开发者第一次接触Redux的时候,都会有类似的困惑:为什么一个简单的计数器需要写这么多代码?action、reducer、dispatch、connect,整整一套ceremony,就为了让组件拿到一个数字。

当时流行的解释是:"这是为了可维护性。" 等项目大了你就懂了。

确实,等项目大了,我懂了。但我懂的不是Redux的好处,而是我们把太多不该放在前端的状态放在了前端。

举个真实场景:用户的投资组合数据。

BFF的谎言:为什么前端团队不应该拥有后端代码

BFF(Backend For Frontend)这个概念被讨论了很多年,大部分文章都在讲它的好处:给前端更多控制权、减少沟通成本、提升迭代效率。但我想说点不一样的:BFF可能是过去十年最被滥用的架构模式,它给很多团队带来的不是效率提升,而是隐性灾难

这个判断可能有争议,但基于我多年全栈实践的观察,大部分公司的BFF实践都走偏了。问题不在于BFF本身,而在于一个看似合理但实则危险的假设:前端团队应该拥有和维护BFF代码。

 

谁在真正维护BFF

 

先说个常见场景。你们公司引入了BFF架构,用Node.js写,部署在前端团队的代码仓库。最开始确实很爽,需要什么接口自己写,数据格式自己定,不用等后端排期。

三个月后,问题来了:
- 后端换了新的认证方式,BFF层要同步升级
- 用户反馈接口偶尔超时,排查发现是BFF内存泄漏
- 运营要做数据统计,需要在BFF加审计日志
- 监控告警BFF的某个依赖包有安全漏洞
- 后端要做灰度发布,BFF要配合调整负载均衡策略

Node.js BFF层的三个认知误区:不只是接口转发

很多团队在引入 Node.js 做 BFF(Backend for Frontend)层时,都会陷入一个误区:把它当成简单的接口转发器。写几个路由,调用后端 API,拼装数据,返回给前端,就算完成任务了。

这种理解不能说错,但实在太浅。

我见过不少团队的 BFF 层,最后都沦为"接口透传中间件"——前端要什么数据,就透传什么接口;后端改了接口,前端也跟着改。这样的 BFF 层除了增加一层延迟和维护成本,没有创造任何价值。

今天想聊聊三个常见的认知误区,以及 BFF 层真正应该做什么。

 

误区一:BFF 只是为了"聚合接口"

 

很多人认为 BFF 层的核心价值是"把多个后端接口聚合成一个"。比如一个页面需要调用用户信息、订单列表、推荐数据三个接口,前端调三次太慢,所以在 BFF 层写个聚合接口,一次性返回所有数据。

这个思路听起来很合理,但问题在于:聚合只是手段,不是目的

真正的目的是什么?是为前端定制适合它的数据结构和粒度。

AI编程工具的分野:OpenClaw、Hermes Agent与Claude Code

最近半年,AI编程工具层出不穷。从GitHub Copilot开始,到Cursor、Claude Code、OpenClaw、Hermes Agent,每个都说自己是"下一代编程方式"。

用了几个之后发现,这些工具看起来都是"AI帮你写代码",实际上解决的问题完全不同。

这不是功能对比,是设计理念的分野。

 

三种不同的定位

 

先说结论:OpenClaw、Hermes Agent、Claude Code 虽然都叫"AI编程工具",但定位差异巨大。

OpenClaw:开源、可定制、工程师导向。

核心理念是"把AI当工具"。你可以自己部署、自己调教、自己定义workflow。它不是一个产品,更像是一个框架。

适合人群:愿意折腾、对隐私敏感、有特殊需求的团队。

Hermes Agent:自动化、任务导向、减少人工干预。

核心理念是"把AI当助手"。你下达一个任务,它自动拆解、执行、验证。你不需要一步步指导,它会自己判断下一步做什么。

适合人群:希望提高效率、不想深入细节、任务明确的场景。

技术选型的真相:为什么最后总是选那几个

每次做技术选型,团队都会认真调研:列出五六个候选方案,做技术对比表,分析优缺点,开会讨论半天。最后呢?React、TypeScript、MySQL、Redis,还是那几个。

新人会问:"为什么不试试XX框架?它的性能更好啊。"老人会说:"稳妥起见,还是用主流的吧。"

技术选型最大的谎言是:我们在做技术决策。实际上,大部分时候我们在做风险决策。

 

技术选型的三个阶段

 

做了很多年技术,观察到一个有意思的现象:工程师对技术选型的态度,会随着工作年限发生变化。

刚入行时,看到新技术就想用。看到有人在用Vue 3,立刻想在项目里试试;看到Rust很火,马上想重写服务;看到某个数据库号称性能是MySQL的10倍,恨不得立刻迁移。

这个阶段的特点是:只看优点,不看成本。

工作几年后,开始变得谨慎。新技术出来不会马上跟,会等社区成熟、生态完善、踩坑的人多了再考虑。这时候的决策标准是:技术是否成熟、团队是否掌握、是否有成功案例。

这个阶段的特点是:看优点也看缺点,但忽略了隐性成本。

管理团队和教育子女:被低估的相似性

博客分类: 

在技术圈混久了,发现一个有趣的现象:那些把团队管得很好的技术Leader,往往在子女教育上也有一套。反过来,那些在团队管理上焦头烂额的,当了父母后也容易陷入同样的困境。

这不是巧合。管理团队和教育子女,底层逻辑是一样的:都是在试图影响另一个独立个体的行为。

只不过,在团队里你可以炒人,在家里不行。

 

控制的幻觉

 

见过很多技术管理者,刚升职时会犯一个错误:觉得"我是Leader了,我说了算"。于是开始制定各种规范、流程、制度,试图让团队按照自己的意图运转。

三个月后发现不对劲:表面上大家都遵守规则,实际上阳奉阴违。能偷懒就偷懒,能应付就应付,遇到问题第一反应是"这不在我职责范围内"。

为什么?因为把人当成了机器,以为输入指令就能得到预期输出。

人不是代码,不会严格按照你的逻辑执行。

子女教育也一样。很多父母觉得"我是家长,孩子就该听我的"。于是制定各种规矩:几点睡觉、看多久电视、周末上什么兴趣班。孩子小的时候可能还管用,到了青春期就会发现,你说什么他都反着来。

本质上都是"控制的幻觉"——以为通过规则和权威就能让对方按你的意愿行事。

页面