初学者如何通过刻意训练提高工程决策能力:技术选型

6 阅读3分钟

困境

很多同学只会让外部来充当决策者,自己负责执行,但工程决策能力是一个工程师最重要的能力之一,绝不能让渡到外部。

幸运的是这种能力可以通过刻意练习积累案例快速提升,不靠做过多少多复杂的项目,而是靠自己的脑子做过多少次决策。

很多初学者认为用原生就是不高级,这是一种误解。实际上,如果你引入复杂的依赖,却只用了它10%的功能,而这些功能用原生几十行就能实现,这其实是一种技术上的贪污,拿了不该拿的复杂度。

在一些情况下,“能不用库就不用”是工程师的追求之一,每一行外部代码都是风险,每一行代码都要对用户流量、首屏性能、包体积负责。能用原生实现,说明你对浏览器能力有扎实理解,是核心竞争力的体现。

当然,如果引入一个库的收益大于成本,那就应该用,别重复造轮子。

最关键的只有一点:做出有意识的、理性的权衡


破解方法

这里为不会工程决策的同学提供一个破解方法:

要有工程决策能力,首先脑子里需要有决策的几种选项

  1. 首先问不使用任何第三方库,只用原生js/浏览器api,怎么实现这个功能
  2. 再问有没有更轻量的库可以简化部分工作
  3. 最后问如果要做一个生产级的方案,目前社区最常用的库是什么

从【原生】到【轻量】到【重型】三步走,根据项目实际场景的复杂度来决策使用哪种方案。


快速实践

如果你正在已有的项目技术选型混乱、不明智的困境中,不必从零做新项目,可以从你现有的项目入手:

  • 找到你项目中的几个核心功能(比如我做的笔记编辑平台:富文本编辑器、数据持久化、实时协同编辑、图表展示)
  • 花一两个小时,为每个功能做一份方案对比表
需求方案1(原生/笨办法)方案2(轻量库)方案3(重型框架)现在我的场景适合哪个
本地存储localStorage APIlocalForage(IndexedDB封装)Yjs只需要存一个草稿,用localStorage,5行代码搞定
  • 做3-5个这样的对比,你会发现笨办法其实很简单,很多时候你根本不需要库
  • 下次你在面试的时候就可以讲讲自己在这个功能上工程决策的思考,成为一次漂亮的决策展示

通过重构现有项目,可以实现快速积累决策经验。

然后对比:代码量少了多少,学习成本少了多少,体积少了多少,功能缺失了多少,拿出量化指标

并把这次重构的过程记录下来,下次面试就能说:

“我最初引入了Yjs,后来发现过度设计,重构为localStorage方案,包体积减少了200KB,功能满足需求,开发维护更简单。”

体现出工程师思维的决策,比单纯说“我用了某个很复杂很酷的库”有说服力得多。


补充

当然,工程决策不止技术选型,还包括:

  • 架构分层:功能应该放在前端还是后端?要不要用状态管理?
  • 数据结构:localStorage里存什么格式的数据?怎么设计才能方便拓展?
  • 边界处理:网络断开怎么办?用户同时编辑冲突怎么解决?请求途中用户关闭页面怎么处理?

技术选型只是决策的一环,真正体现工程师思维的是对整个项目复杂度的把控。