最近面了一些公司,拿到一些 offer,这些 offer 的岗位做的事情可以分为工具、业务两种,最终我选择了业务开发的 offer。这篇文章来讲下原因。
前面一篇文章讲过前端工作的五个层次:引擎层、runtime 层、工具层、业务层、搭建层。
- 引擎层:定制容器,包括 JS 引擎、渲染引擎等。一般是 C++ 来做,这类工作主要集中在跨端领域。
- runtime 层:定制前端框架、SDK。小程序和跨端引擎等都要对接前端框架,需要做一些修改。音视频等领域需要专业的团队提供 SDK 供业务开发用。
- 工具层:定制工具链。包括编译、调试、文档等。处理的对象是代码,为业务开发提供工具支持。
- 业务层:实现产品需求。基于前端框架和工具链完成产品经理的需求。
- 搭建层:实现搭建工具,支持拖拽的方式生成代码,并投放到不同环境。服务对象是非开发者。
这是前端工作的大概分类。
引擎层一般是 c++ 开发或者懂 c++ 的前端开发来做,做 runtime 层的定制前端框架、做 SDK 的人也很少,大部分前端还是做业务层的开发,还有一小部分人做工具层的开发。(搭建层其实和工具层做的东西类似,只不过服务对象不是开发者)
其实我个人的话,最开始是做业务开发,但是近几年更多是做一些工具层的事情,比如在阿里跨端团队就是专门做工具链的,包括:
- 编译:把源码编译成跨端引擎能跑的代码,中间做各种 lint 和 transform。
- 调试:对接 chrome devtools 来调试跨端引擎的代码,还有其他基于 websocket 的调试服务
- IDE:修改 VSCode 源码来定制 UI,集成其他工具。打造一系列 VSCode 插件,辅助开发。
- 文档和代码生成:通过编译的方式,由 ts 生成 markdown、c++ 和 ios 的头文件、android 的抽象类等
因为想去华为做编程语言才离职的,但最终没去,所以又面了一些前端的岗位,拿到了一些 offer。
这些 offer 的岗位按照前面的前端工作层次划分,分为 3 类:
- 工具层:继续做编译、调试、IDE 的工具链,包括小程序的和 React Native 的。
- 搭建层:做可视化搭建和投放的工具。
- 业务层:常规业务开发。
最终,我选择了去一家外企做业务开发,原因有两个:
- 做工具链主要是写 Node.js,写组件少一些,离浏览器上的前端技术远一些。而且服务的对象是开发者,不是最终产品的用户,离用户远一些。我想离浏览器、离用户近一些,想提升下写组件的技能,所以想做去业务开发。
- 外企工作时长相对短一些,大概是 10 6 5 的节奏,这样每天自己可用来学习和写文章的时间会多几个小时。
其实,主要还是第二个原因,比起工作内容,我觉得有更多自己的时间更重要一些。因为我已经具备了在工具领域自主探索的能力,并不需要靠做工具的工作来进入这个领域。
当然,这是我个人的一个选择,并不是说也建议大家这样选。
如果要给建议的话,大概有 2 个:
- 在三年左右的时候最好能进入一家大厂,在大厂你的视野和成长速度和在小公司是完全不一样的。比如阿里的前端四大方向:IDE、Serverless、搭建、智能化,这些小公司基本不会做,只有大厂能接触到。而且内部也有很多技术分享,可以开阔视野,丰富你自己的发展方向。
- 大厂 titile 固然可以镀金,但是更好的镀金方式应该是你的作品。所以下一个目标应该是打造你个人的代表作,或者是某个业务产品、或者是某个工具等都可以。
这篇文章主要是讲了前端工作的分类和我对工具 or 业务的 offer 的选择。
每个人的经历不同,想法不同,做的选择也会不同。如果让你来选择,你会想做业务多一点,还是做工具多一点呢?