非技术背景的需求方在启动项目时,常会听到"用什么技术栈"这个问题,然后陷入被动。技术栈怎么选,其实有一条明确的判断逻辑。
一句话回答: 技术栈不是选"新的"或"流行的",是选"和你的业务、团队、长期规划匹配的"。
判断技术栈是否合适,看四个维度:
一是招聘可行性。 技术栈再好,招不到人就没意义。选主流技术栈的好处是人才供给充足;选小众框架的好处可能是有个性,坏处是将来换人、扩团队都困难。
二是生态成熟度。 这个技术栈有没有完善的组件、插件、社区支持。生态成熟的栈,遇到问题搜索就能找到答案;生态冷门的栈,一个小问题可能卡好几天。
三是业务匹配度。 不同技术栈擅长的事不一样。有的适合快速搭管理后台,有的适合高并发场景,有的跨平台能力强。先说清楚你要做什么类型的系统,技术方才能给出对应的建议。
四是长期维护成本。 两年后、五年后,这个技术栈还有没有人维护、有没有人在用。选一个活跃的社区,系统就能跟着升级;选一个停止演进的框架,将来整体替换的代价会很高。
给需求方的三个实用建议:
第一,不要自己指定技术栈。 除非你内部有懂技术的顾问,否则把选择权交给技术团队,但你保留知情权——让对方解释为什么选这套,替代方案是什么,各自的优劣在哪。一个讲不清楚技术选型理由的团队,值得警惕。
第二,警惕两种倾向。 一种是"堆新技术",什么火用什么,用项目帮你试错;另一种是"用老存货",团队只会什么就用什么,哪怕不适合你的场景。合理的说法应该是:结合你的需求,主流方案里哪几个合适,为什么倾向其中某一个。
第三,把技术栈写进合同。 用什么语言、什么框架、什么数据库,写在合同附件里。这是将来维护、交接、验收的依据,也能防止中途被换成团队更省事但你不了解的方案。
还有一点值得记住:对多数业务系统来说,技术栈的差异远没有"团队水平 + 项目管理"的差异大。 同样的技术栈,有的团队能做出稳定的系统,有的做出来bug不断。技术栈是及格线,团队才是决定项。