重新认识自己
我一直对 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」这些愈加细分的角色。你都能够去学习任何方面的常识。而且你学的全部常识,都是有意义的。尽管学习的道路很长,但只要坚持下去,你就会朝着优秀的工程师进发。