我本科出身于计算机科学与技术专业,倔强而好强的性格拒绝了很多,也收获了很多。

从大二学期末开始就为自己选择了 Java 的 J2EE 技术栈,从最开始的偏后的 Java、数据库、HTTP 协议到偏前的 Css、Html,根据已有的专业知识(如 C++ 编程基础以及数据结构算法)旁征博引,最终积累了一定的基础能力。再到后来的移动互联网的兴起,到选择 Android 开发作为技术栈,逃课学 Android、做自己的第一款 Android App,到陌生的试卷上屡次出现自己曾经自学的内容,开发基础素质的自我培养和考试临场发挥拿到的 A+ 成绩,都是自己一步一步的探索的结果,失去和得到同时发生,但从未后悔过。

2016 年,毕业前的最后一段实习+转正经历,接触了 ES6 和 React-Native,益于 Java、C++ 面向对象的经历,以极快的速度建立起对第一门动态语言的感知能力。项目开源(单项最高 750 stars)、依赖库开源(持续多年月均下载量 15k+)、在开源社区共同维护开源库、翻译并发表外文文献、对代码质量、时间复杂度、每一个 Merge Request 的吹毛求疵、模块之间耦合与内聚的控制、函数的提纯、乃至于为了开发 MDCC 大会 App 通宵三天完成的双端 APP,每一项都成为了初涉工作抹不去的记忆和鞭策。

2017 年,第二段工作经历的开始,更像是第一段工作的毕业和实战。开始更多的参与生产项目的开发,从利用组件化思想独自负责移动端研发到和新伙伴协作开发,到第一次借助 React 技术栈参与 Web 端核心模块的重构,数千行代码的重构,将 demo 级面向过程的功能模块变成了 OOP 可扩展的模块,再到扩展为百度云盘级别的完成度、渲染优化。每一次的工作内容的变动都是对自己不小的考验,很庆幸自己都熬了过来。

2019 年,这一段工作经验开始负责移动端项目的重构和整理,感觉和以前的内容不一样了。
在面对大约四五万行代码且已经成熟上线的项目时,感到前所未有的压力。作为 SaaS 基础服务提供者,项目稳定性和开发流程的完备性都是我们不可或缺的素质。移动端双端部署的 CI、Eslint、Flow 的校验规则,Jest 单元测试,以及项目内容的重构、多端通用模块的抽离和私服部署 npm 依赖库,甚至到规范 Git 分支管理以避免不必要的冲突,都成为了我工作内容的一部分。

2020 年,我想回到单端的研发,以进一步提升自己的纵向深度。不论是自己不太熟悉的 Web 领域还是比较熟悉的移动端领域,以对计科专业的热爱以及软件工程的初心、三四年来对软件开发、React 的理解和积累、代码方面的重构、计科人特有的基础素养,我觉得完整过渡到 web 端,并成为一名全职的 web 端工程师只是时间的问题。毕竟,更好的垂钓技术相比篮子里更多的鱼,我相信前者更应当是我们追求的目标。

donation