重新认识自己
我一直对 NodeJS
工具方向比较感兴趣,今年终于有机会在公司内,开始工具项目的研发,调研并设计了整体架构、独立负责开发工作。
去年年末时,我刚刚来到字节半年,其实心态还没有完全转换过来,之前在创业公司,涉及了很多不同端的开发工作。所以我对自己的定位,还处于一个支持业务开发的状态,对技术渴望度足够,但对于技术路线有些许迷茫。只能看到一些比较聚焦度比较高的技术名词,例如 WASM
、WebGL
,会对这些技术存在追捧,却并没有做到脚踏实地。
相比去年的我,今年我对一些概念又有了许多新的见解,到底什么样才是出色的工程师?
当今国内工程师的问题
按照国内对工程师的区分,在各厂招聘列表中经常出现的是这几类,前端/后端/客户端工程师。
在我的工作中,经常会接触各端 SDK
的开发的同学,接触过程中,有时感觉到大家会存在一些 gap,也就是说 SDK
同学想去做一些事情,但是在他的角度他很明白底层逻辑,但对于其他端(前/后)同学,他们对底层原理其实并不了解。这就造成开发前,需要很长的时间去对齐功能的逻辑,合作同学也很难理解需求的意义与价值。
如果想摆脱这些困惑,那我认为你需要成为一名「全栈工程师」,其实说是全栈,不如是「软件工程师」,作为一名工程师,需要拥有一些闭环整体开发流程的能力。
例如,以 SDK
开发的角度来说,对于 SDK
同学,实际上最终只负责到上报这个动作,至于之后数据的流向,以及数据清洗,并不在掌控的范畴之内。这虽然降低了 SDK
侧上手的门槛,但并不利于长期的维护。
假如你是一个软件工程师,对于以下流程,你都了如指掌:
数据上报 -> 清洗 -> 存储 -> 消费
那你对于系统的整体认知就会提升,从优化上,可以给出更好的建议;在排查问题时,也可以更快速的定位问题。
何为工程师?
下面我详细谈一谈,如何成为一个有宏观视角的工程师。
首先,我目前的关注点主要在前端方向,如果你有仔细观察,你可以看到最终大部分比较厉害的前端,都是具有一些全栈能力的人。
对于服务端层面,我的建议是把 Golang
学好,这是一个还不错的方向。一个技术栈,如果有很多人关注聚焦,广泛地提出问题,那它的发展前景一定是不错的,起码不会垮掉,也就是说,开发生态是健康的。
对于前端层面,如果想去把前端学的很深入的话,那么前端工具以及工程化,必不可少。
在这一年内,我扩展一些自己原本不是很擅长的领域:
-
产品
- 竞品调研
- PRD 撰写
-
服务端方向
- MySQL
- Rust
- Golang
-
前端方向
- 单测/e2e:Jest、@testing-library/react、Cypress
- 工程化:Rush.js、Pnpm、Webpack、TypeScript
- 工具:Babel、CLI 相关的 npm 包工具
- 插件:Chrome、VSCode
-
设计
- Figma 学习
-
英语学习
除了开发角色,一个合格的工程师,还应该掌握技术方案设计的能力,这样可以将整体的开发流程闭环。也就是说一个人扮演,调研、方案设计、编码、测试的工作。从我的 Roadmap 中,你也可以看出来这一点。为什么要闭环呢,当一个需求,有越来越多的角色参与进来的时候,你会发现方案细节的对齐,变成了一个不简单的工作。
有时候我们经常会讲一个词,融会贯通。当你把一整套研发体系都吃下来的时候,你会发现可以顺利地解决掉项目的问题。
我的工作场景
在我的工作中,会涉及到工具链的开发。首先在开始前,需要做一些竞品调研,方案设计的工作。
开发环节,对前端来说,按照目前的趋势,我们更好的方式是以 Monorepo
的形式去做开发。这里 Pnpm
就是一个很不错的选择,但接下来你会遇到一些问题,例如如何去做这些包的发版编排?
由于在 Workspace
中会存在一些包之间的相互引用,在发版时,也要按照拓扑排序的方式进行发版,这时,我们就可以用到 Rush.js
去做拓扑发版,以及自动生成 Changelog
。
工具链对于质量需要较强的把控,这时我们就要引入 Jest
做单测,但一些场景下,单测是不够的,这时我们需要引入 e2e
测试。
在 Monorepo
中,不像单仓中,可能只存在一个 tsconfig
,这时会存在配置之间 extends
的关系,需要我们对 tsconfig
的配置了如指掌。
对于多种工具消费方式,例如 CLI
、Chrome
插件等,实则需要公用一些方法与配置,这里就需要抽象出公用的 utils
等。
在开发中,可能会关注一些新闻,比如 Vite 4 启用了 SWC
替代 Babel
做编译。那你是否有好奇过,为什么 SWC
会更快,这时候如果学过 Rust
,就知道 Rust
特有的语言特性。
总结
我想说的是,作为一个工程师,不要去把自己划分为「前端/后端/ PM」这些更加细分的角色。你都可以去学习任何方面的知识。并且你学的一切知识,都是有意义的。虽然学习的道路很长,但只要坚持下去,你就会朝着优秀的工程师进发。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/9812.html