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

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

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

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

 

技术选型的三个阶段

 

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

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

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

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

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

再往后,会发现技术选型的核心不是技术本身,而是组织能力、团队基因、业务特性。同样的技术栈,在不同公司效果完全不同。

这个阶段的特点是:技术选型是业务决策。

 

为什么总是选那几个

 

在金融业务中,这个现象更明显。

你很少看到金融公司用最新的框架、最炫的技术。不是不想用,是不敢用。理由很简单:线上出问题要赔钱。

一次资损事故可能是几十万甚至上百万,这个成本远远超过"使用新技术带来的效率提升"。所以决策逻辑就变了:不是选最好的,而是选最安全的。

什么是最安全的?用的人多的、踩坑的人多的、社区成熟的、招人容易的、出了问题能快速找到解决方案的。

这就是为什么React始终是主流。不是因为它最好,而是因为它最安全:
- 社区最大,遇到问题能找到答案
- 招人最容易,简历一抓一大把
- 生态最完善,要什么组件都有
- 大厂在用,出了问题不用背锅

技术选型的第一原则不是追求卓越,而是降低风险。

但这个逻辑有个前提:你的业务允许你追求安全。

如果是创业公司,情况就不一样了。创业公司最大的风险不是技术风险,是活不下去。这时候技术选型的逻辑是:快速试错,降低成本。

我见过创业团队用Next.js + Vercel + Supabase,三个人两周上线MVP。用的都是新技术,但确实快。如果等半年慢慢调研、慢慢搭建、慢慢优化,业务早黄了。

技术选型没有绝对的对错,只有是否匹配当前阶段。

 

被低估的隐性成本

 

技术选型最容易忽略的是隐性成本。

新技术的显性成本大家都知道:学习成本、迁移成本、不稳定的风险。但隐性成本往往被低估。

第一个隐性成本是"招聘成本"。

你用了一个小众框架,技术上可能确实更优雅。但问题是,团队里能用这个框架的就两个人,他们一离职,这块业务就成了黑盒。

我见过有公司用Elm写前端,代码质量确实高,但两年后核心开发离职了,新招的人没人会Elm,最后不得不推倒重写,用React重新实现。

这个重写的成本是多少?三个人,半年时间,外加业务暂停迭代的机会成本。

技术债不只是烂代码,还包括选了一个团队hold不住的技术。

第二个隐性成本是"决策成本"。

技术栈越多,团队的决策成本越高。做一个需求,前端要讨论用Vue还是React,后端要讨论用Java还是Go,数据库要讨论用MySQL还是PostgreSQL。

每个决策点都是时间成本,每个分叉都是认知负担。

技术栈的统一不是为了"控制",而是为了降低决策成本。

第三个隐性成本是"维护成本"。

新技术刚上线时大家热情高涨,代码写得很认真。半年后呢?新需求来了,大家都想做有挑战的事,谁来维护老代码?

技术选型时,没人会想"三年后谁来维护这个"。但三年后,维护的人会骂当年选型的人。

 

技术选型的决策框架

 

既然技术选型这么复杂,有没有一个相对靠谱的决策框架?

我的经验是:分层决策。

把技术栈分成三层:基础设施层、核心业务层、实验创新层。

基础设施层:求稳。

数据库、消息队列、缓存、监控,这些选最主流、最稳定的。MySQL、Redis、Kafka、Prometheus,没什么创新空间,也不需要创新。

出问题了能快速找到解决方案,招人容易,社区成熟。

这一层的技术选型不是技术决策,是工程决策。目标是"别出问题"。

核心业务层:求平衡。

前端框架、后端框架、ORM、状态管理,这些选主流但不一定最新的。React而不是Solid.js,Spring Boot而不是Vert.x,TypeORM而不是Prisma。

这一层需要在"技术先进性"和"团队能力"之间找平衡。

实验创新层:求突破。

内部工具、辅助系统、非核心功能,可以尝试新技术。开发者工具用Rust重写提升性能,监控大盘用最新的可视化库,内部管理后台用低代码平台快速搭建。

这一层的目标是:给团队试错空间,同时控制影响面。

分层的好处是:既保证了稳定性,又给了创新空间,还避免了"一刀切"带来的僵化。

 

全栈视角的优势

 

做技术选型时,全栈视角有个独特优势:能看到完整的成本。

纯前端做选型,会倾向于选最新、最优雅的前端框架。但可能没意识到,这个框架和后端API的对接成本很高,或者和现有的构建系统不兼容。

纯后端做选型,会倾向于选性能最好的方案。但可能没想到,这个方案前端调用很别扭,或者运维部署很复杂。

全栈的价值不是什么都会,而是能看到技术决策在不同层面的连锁反应。

在金融业务中,这一点尤其重要。

前端选型时,你得考虑:这个框架对首屏性能有多大影响?用户在弱网环境下体验如何?打包体积会不会导致用户流失?

后端选型时,你得考虑:这个数据库能支撑多大的并发?出了问题能不能快速回滚?监管审计时能不能提供完整的日志?

运维选型时,你得考虑:这个部署方案前后端团队会不会用?出了问题能不能快速定位?成本是否在预算内?

技术选型不是孤立的技术决策,而是完整的系统思考。

 

选型的陷阱

 

见过太多技术选型的坑,总结几个常见陷阱。

陷阱一:性能陷阱。

看到benchmark显示某个技术性能是现有方案的10倍,立刻想换。

问题是:benchmark的场景是你的业务场景吗?性能瓶颈真的在这里吗?

很多时候,性能问题不是技术栈的问题,是架构设计的问题。换了新技术,架构还是老样子,性能依然上不去。

陷阱二:生态陷阱。

看到某个技术生态很丰富,各种库、各种工具,觉得很强大。

问题是:这些库的质量如何?维护状况如何?遇到问题有人解决吗?

生态的"量"不等于生态的"质"。有些技术虽然库多,但都是小作坊项目,没人维护,用了就是坑。

陷阱三:招聘陷阱。

觉得用最新的技术能吸引优秀人才。

问题是:来了之后发现业务无聊、加班严重、内卷严峻,再酷的技术栈也留不住人。

技术栈不是吸引人才的决定性因素,文化、成长空间、薪资才是。

 

写在最后

 

技术选型说到底是个妥协的艺术。

妥协不是贬义词。承认约束、接受现实、在有限条件下做出最优解,这是成熟工程师的标志。

那些坚持"一定要用最好的技术"的人,往往是没经历过技术选型失败的代价。当你亲手处理过一次因为技术栈不成熟导致的线上故障,当你花了三个月重写一个本可以稳定运行的系统,当你因为招不到人导致项目延期,你就会明白:

技术选型的目标不是选最好的,而是选最合适的。

什么是合适?团队hold得住、业务跑得稳、成本控得住、风险看得见。

这不酷,但有用。

技术人最容易犯的错误,是把技术当目的。技术只是手段,目的是解决问题、创造价值、让业务跑起来。

想明白这一点,很多技术选型的纠结就会消失。不再纠结"为什么不用最新的",而是思考"用什么能最快解决问题"。

从技术崇拜到工程务实,这是每个技术人都要经历的心态转变。

很难,但必须。

You voted 1. Total votes: 33

添加新评论