突破瓶颈,创造自己的技术亮点

遇到的问题

在之前的指南中,我们一直是围绕着简历来说的,不难发现最重要的内容还是你做过什么项目,有什么技术难点和亮点,没有这些内容,再炫酷的简历和格式也只能是“巧妇难为无米之炊”,所以这节我们抛开简历,来谈谈寻找你自己的技术生涯的高光点,其实这一点不仅仅关乎于简历,在后来的面试,工作中,你也要特别注意,要围绕着这一核心进行,提升自己的综合竞争力。

亮点和难点是个很务实的内容,也就是你必须做个,接触过才能找到,但是为什么很多同学提到这个很挠头呢?是因为最早说过的,有很多同学都在小厂工作,工作内容,视野和流程都受限,所以会陷入一些瓶颈,这里我举几个真实的例子,是我的一个课程中,在前端项目最开始的一个问答,大家参加都很踊跃,说明很多人都遇到了这个问题。

将他们的回答简单总结一下,我们不难发现有可能它们遇到的是这样的几个问题:

  • 小公司,光杆司令,没有人带着提高。
  • 业务千篇一律,项目毫无难度。
  • 流程不规范,没有需求分析,没有代码质量,git 规范,测试,CI/CD 等,拿到需求就是开始手撸,写到后面越来越乱,也不敢重构。
  • 呆的时间越长越没有提高,找工作没有竞争力,进入恶心循环。

这个时候你的简历内容很可能就是这样的:

熟悉 vue 基础知识,有 vue-cli,vue-router,vuex 实战经验

或者:

使用 React 全家桶开发后台管理系统

不难发现这样的业务需求,就是一个简单的 SPA 应用,只是数据的增删改查,简单的权限管理,已经无法惊艳到别人,没法在众多项目中脱颖而出。

解决方案

当你没有学历背景、没有大厂背景时,想要突破瓶颈、打造亮点,那么这个非常普遍的解决方案是什么呢?

  • 争取换工作,但是由于工作和项目没有竞争力,就造成了一定的难度。
  • 我认为有一条捷径,针对这些短板,我们可以刻意去补全,向一些特定的思路去靠拢,这些内容的特点就是:高复杂度、有深度、有广度,不用被这些看似高深的形容词吓到,接下来我们进行阐述。

下面的内容就不能务虚了,我会根据自己熟悉的 前端开发领域 举一些实例来表达这样的观点,你可以按照自己的水平去尝试向这几个方向进行努力。 假如是其他的技术领域大家可以自己按照我的思路去思考一下。当然进行下去的前提是基础知识的掌握已经比较纯熟。

思路一:高复杂度的 SPA 项目,比如一些低代码编辑器, 比如海报编辑器

前端工程师最终还是和浏览器打交道,所以一个复杂的基于 Web 项目,必不可少,那么这个项目应该有怎么的特性呢?

如图所示:

流行的低代码编辑器,可以做一个它的简化版本,实现基本的功能,它很好的满足了深度和广度两个点:

数据的复杂度

数据和表单的对应关系,数据的相互依赖,实时更新

交互的复杂性

权限的复杂性

这个时候你的简历可以进化为:

使用 typescript + vue3全家桶 开发低代码海报平台

使用 类JSONForm方案解决表单自动生成,相互依赖,以及实时更新的功能。 支持多种复杂交互,拖动,缩放,快捷键,回滚,重做等功能 使用多种第三方库实现高级功能 - cropper.js (图片裁剪),html2canvas(截图),qrcode.js (二维码生成)等等

思路二:组件库

现在最常见的框架都是基于组件的,公司内部常常会使用自定义的组件库,以及使用流行组件库二次开发的项目。所以假如你参与了类似的项目,编写过一些高级的组件。尤其是组件库还涉及到了开发,测试,打包,发布等一系列流程,会更加体现整个项目的难度。 组件库也非常容易在自己的公司进行推广,一般的公司都会按照一定的规则去抽象一系列的组件。 同时特别注意,代码胜过千言,对于假如能够公共浏览的组件库,至少要发布到 npm 开源到 github,帮助面试者获取更多信息 ,有能力的也可以生成这样的文档站点,供面试者参考。这样就会丰富很多。 有了组件库,自然单元测试必不可少,组件天生就是分离的一个个部分,非常适合单元测试。单元测试是国内程序员特别薄弱的一个环节,你如果了解是一个非常大的加分项,同时 CI/CD 过程中,单元测试也是重要流程。

这个时候简历可以进化为:

主导和开发项目基础组件库 - vikingship

  • 基于 React 以及 Tailwind.css 实现的基础组件库
  • 使用 React-testing-library 完成单元测试
  • 基于 Github Actions 实现自动发布
  • npm地址:https://www.npmjs.com/package/vikingship
  • 在线文档地址:https://vikingship.xyz/

思路三:前端工程化

这是大厂必不可少的工具,一个人可以随便玩,但是当你有100个人在同时开发一个项目的时候,用流程来规避不同开发者之间的不同是必须的,它可以提供项目创建,持续迭代,发布上线等一揽子的功能。如果有这样的经验,绝对是大杀器。 这种工具以及实践其实是比较容易在小公司内推广的,假如你是项目负责人不妨努力将这样的工具在团队内进行推广。 然后可以这样体现到简历中,然后同样可以衍生开来,提供文章甚至是视频的方式给面试官参考。

负责开发公司通用脚手架,提供项目的创建,持续迭代,云端构建,发布上线等功能

  • 基于 lerna 作为包管理工具
  • 服务器端基于 egg.js + mongoDB
  • 集成 Gitee 以及 Github 的自动化流程
  • Github 地址:https://github.com/imooc-lego/imooc-cli

思路四:性能优化

性能优化在公司特别容易推广以及执行,和老板说为他省钱,肯定满心欢喜。 性能优化特别容易量化,优化了多少就是多少,在简历里体现的非常清楚。

当然关于性能优化,最好是有复杂的项目,你才能做,这种内容都是非常注重实践和条件的,你就一个简单项目,总共 200k 静态文件大小,写什么都是纸上谈兵,,如果另外一个项目:前端 1w5千行代码,使用了十几个第三方库,在这个基础上优化才有说服力。

注意可以在后面附上一些整个优化过程的文档,来描述整个优化过程的实施以及经验。

负责公司主站的前端性能优化工作

优化 webpack 打包流程,减少打包后静态文件的大小

  • 通过 webpack bundle analyzer 插件分析,选用 es modules, 按需加载组件库,第三方vendor 拆分等方式 将文件大小从 *K 优化至 *K
  • 详情请见:vikingz.me/webpack

使用多种 HTTP 协议的特性,优化静态文件加载速度,提高首屏响应速度

  • 通过浏览器缓存(Expires 和 Cache Control),服务器端压缩,(gzip 和 brotli),新版本 HTTP协议(HTTP/2),将 DOMContentLoaded 时间,从 * 秒 减少至 * 秒。
  • 详情请见:vikingz.me/http优化

思路五:扩展技能包

虽然计算机行业是一个专精的行业,但是现在工程师的界限也越来越模糊,技多不压身,除了搞好前端的本职工作之外,假如有几乎接触更多领域的话,并且完成一些功能的话,对于自己的技能点是一个很好的补充,并且为未来从事更广泛的行业提供了可能。不要担心不够深入,只是证明你的技术广度以及学习能力。假如能在公司中接触到这些领域,那么可以尽可能的去尝试,如果有限制,那么就需要发挥主观能动性进行。

  • Web3, Web3 领域对前端开发工程师非常友好,有很多转行从事对应工作的工程师,尤其是以太坊的开发,比较出名的 Ethers.js, Web3.js 都是非常流行的的以太坊 Javascript 的 API 实现,所以对于前端开发,上手难度不大。
  • 全栈 Fullstack,现在互联网公司越来越精简,压缩人力成本,所以让一个人干更多的事情是必然趋势,而且很多大公司前端几乎都要负责中间层的开发,所以全栈开发是一个必然的趋势,未来甚至是一个必须技能,掌握 Node.js 以及一些比较知名框架(Express, Koa, Nest.js, Egg.js)的功能和开发是必须的。
  • 基本的 Devops 知识,Devops 一般在公司里都有专人完成,但是日常工作中还是有很多细微的自动化的需求,了解 CI/CD 的基本概念,并且能够使用和编写一些不同平台(Github Actions, Gitlab, Jenkins)基本的自动化配置,完成一些日常工作,可以让你的简历大放异彩。
  • 其他的一些编程语言,了解除 Javascript 之外的一些编程语言,可以更好的扩展视野,并且通过不同语言的对比,还可以更深入的了解它们的优劣,比如前端非常友好的(Rust, WebAssembly) 等。

实施

当然你在工作内容中,可以尽可能的向这些方面进行提炼,但是假如工作内容限制太多,让你没办法向这方面靠拢,那么必须在工作之余花时间以及精力甚至是金钱去做这方面的提升。

在大家的工作中,贯穿始终的最重要的目标就是构建这些职业生涯中的亮点,这种亮点越多,在简历上体现的就越完美,在以后的职业道路上就会走的越通顺。

Last Updated:
Contributors: Viking Zhang