今天聊:初中辍学的 00 后如何跟进前端浪潮

8,013 阅读12分钟

前端早早聊大会,前端成长的新起点,与掘金联合举办。 加 Scott 微信 codingdreamer 进大会周边技术群,前端页面搭建专场,2021-2-27,线上直播。

本次直播关于页面的可视化/自动化/智能化搭建新玩法,讲师来自阿里、腾讯、字节、满帮、蚂蚁、字节等,话题涉及前台/中后台/PC/H5/富媒体(视频、海报、问卷)等,报名戳:www.huodongxing.com/go/tl21


正文如下

本文是第十四届 - 前端早早聊成长晋升专场,也是早早聊第 96 场,来自 Gitee - Janlay 的分享,他近期在掘金也推出了一本技术小册 -《从 0 到 1 实现一套 CI/CD 流程》,介绍如何一步步实现一套基于容器化技术的 CI/CD 流程,助力研发提效。

一、前言

image.png

欢迎大家来到前端早早聊第 14 期,我是第一场的主讲嘉宾王圣松,现就职于 Gitee 私有化研发团队,任前端开发工程师一职,这次我与大家聊聊我工作 2 年来,是如何一步步提升和成长到现在阶段的。

二、自我介绍

image.png

我先简单的做个自我介绍,相信很多同学已经了解过我了,我是一名 00 后前端。

2001 年

2001 年 9 月份出生于山东济南,小时候就对计算机感兴趣,刚开始是自己学会安装软件,到后来慢慢地会修设备,装系统。

2016 年

初中的时候,对漂亮的 Android 手机系统非常感兴趣,于是研究起了 Android ROM 移植。因为接触到开源系统,我第一次接触到了开源和 Github。当时对这个“宝藏平台” 非常感兴趣,同时为了自己研究移植和安装,也学习了 LInux 安装和使用。

2017 年

后来沉迷其中无法自拔,在父母的支持下,我离开了家乡,独自前往北京培训 Java 开发 1 年多,在此中间才真正学习了如何写代码,后面因为个人更爱好用户界面,决定转向前端开发。

2018 年

因为偶然的机会接触到了 Vue.js,而后了解到了 Webpack。于是我就学着上手这两大前端利器,大约 3 个月时间,也就是 18 年 5 月份,我通过社招进入了开源中国,正式成为了一名前端开发工程师。

2019 年

刚开始进入公司做的是开源众包平台,一个程序员接单赚钱的网站。在 19 年 4 月份的时候,公司战略调整,被合入了 Gitee 私有化团队做前端研发,成了北京团队的初创成员之一,一直写前端到现在,以上就是个人介绍,先介绍这么多。

三、先生存,后发展

image.png

刚踏入前端之门时,首先学习巩固的是 Vue,Vuex,VueRouter 这样的东西,相当于是写需求的一个基础,学习这些东西之后去独立地开发需求,因为我的背景和各方面都比较特殊,所以先要在团队中实现“站稳脚,活下来“,同时也上手了公司项目整体架构和发版流程,像是构建工具,沟通协作工具,项目管理平台等。

入职一年后,因为业务方向有调整,所以我也调整了我个人的发展方向,同时学习了 Docker DevOps 相关的知识,在公司当中实践起了容器化部署,同时团队也自研了一套 CI/CD 套件。

很长一段时间,北京团队前端只有 2 个人,同时我也处于主导地位,于是感觉情况比较危险,自己报名了前端进阶培训,入职 2 年,开始拿之前的知识回馈反哺业务,提升自己和团队的工程效能。

image.png

对刚才的那张 PPT 做个总结。

总结为三个阶段:

  • 刚入行:先活下来,融入团队,对我而言就是“扛过试用期”,这是生存最基础的目标,这段期间主要是和团队磨合的过程。
  • 入职一年:寻找自己在知识方面的不足和短板,接着迅速补齐这些知识短板,再从当中找出自己熟练掌握的、比较感兴趣的,要突出自己的优势。自己能够在团队当中鹤立鸡群,现在我们也有很多 FE 同学了,所以就要思考如何在团队中凸显出自己的优势。
  • 入职二年:把优势做的比较鲜明,无论是在团队或者你的前端小圈子当中,再将你的优势去回馈业务。

所以总结就是:先生存,后发展。我们先活下来,后面再考虑如何把这些一步步做好。

四、团队业务介绍

CI/CD 平台

image.png

这个可以简单看下,这是我们当时团队做的 CI/CD 平台。左边是部署功能,可以去部署容器,图形化编排步骤等等,包括像右边流水线状态监测,邮件通知,权限控制等功能。

私有化场景

image.png

我这边举了两个项目当中真实存在的场景:

介绍(如上 PPT ),我这边就想到,如何用一些“可变的东西“去控制这些“不可变的东西”。例如用变量控制常量,例如用 Cookie,localStorage 之类的东西控制 baseURL,这就是用可变控制不可变的思路之一。当然,这个思路也借鉴于 运行时改变 Webpack Public Path 的思路。

于是我先做了一版,实现功能,推广了下还不错,于是后期思考加了 Banner 做了体验优化。

image.png

那么第二个场景,是讲私有化场景之下,怎么快速定位客户部署的前端版本?

私有化场景,我们的代码和应用都是部署在客户那边的。客户做了什么,其实我们也不知道,他们有的甚至部署在内网,介绍(如上 PPT )。

那么我们是否可以写个 Webpack 插件输出一下打包信息解决这个问题呢?于是我想到在每次打包后,将一些打包环境的信息(时间,平台,打包人,打包分支,最近一次 commit,commit message 等)输出为 JSON 文件,存到了 dist 目录下,当然在做这块时,也查了很多资料,也学到了很多东西,同时也将工具开源了出来。

开拓思维

image.png

根据上面两个场景做一个总结,其实大家都有一个难受的地方,就是思维并没有开拓。开拓思维第一项要保证自己的知识功底扎实,扎实不是说你学的越多,甚至背过了就可以,要让每个知识具有关联性,这样知识学习的才有意义,理解深刻,在日后才能派上用场。

比如几个知识获取渠道(如上)。但是无论如何怎么学,最大的一个误区就是“浅尝辄止”:例如我学到了 7 成,甚至只是学到了表面,我就认为我学懂了,学会了,也不继续去学习和思考了。可能这部分知识只能用在面试上,或者向深一问场景和优劣性,就有点捉襟见肘了,所以说,学完一项知识后,一定要想一想它的应用场景,和其它知识的关联性是怎样的。

第二个是学会套娃。学习一项技术后,要想一想如何用在业务当中,对业务提升有多大,能否有多大帮助。如果能思考到这一点,那知识在你脑海中就已经有个位置了,而不是悬浮在半空中不知道作用。

举一反三下张 PPT 会讲一讲。

重在坚持:不要学一半就停止学习,继续学其它知识,这样容易让知识出现断层,也很难产生关联性。通常,新知识都是刚上来比较难,后面则是围绕前面核心知识的一些辅助,所以一定要坚持学完一个系列知识。

拒绝好高骛远:很多新知识新概念都是基于之前的知识进行改良改造升级而来的,只是学习新知识而不去学习前序知识的话,上手难度会大一些,学起来也会比较迷惑。

image.png

举一反三的例子:AST 抽象语法树。大家说得最多的是 Webpack 的核心构建原理,但是其作用不单纯是面试会考,很多实际场景都有用这些知识。

所以我们在学习一项东西后,一定要思考下它的核心作用是做什么的,继而再想到有哪些地方可以用这块知识实现。

image.png

开拓思维还有个观念很重要:开拓业务场景。首先是打破岗位边界,现在互联网岗位分工已经很明确,大家各司其职,但是我们在敏捷培训时,教练说:技术人员要成为半个产品经理,要了解你的产品,要去和你的客户和你的同事交流,收集反馈和意见。他的岗位/用户现在有什么痛点不舒服的地方?都要去主动了解询问。只有在此当中,你才能明白哪些是你可以去做的。如果你能够解决掉,那就是对业务有额外很大的帮助,那你的绩效和等级会好看一些,让自己多换位思考,多找些事情做。

但是做这个不要觉得不值得,我在刚合并进 Gitee 时,还做了一些服务器运维,服务端环境搭建相关的工作,后面还产出了文档,这对我后面的知识学习有很大的帮助,也对产品全貌有了更清晰的认识。

主动反馈也很重要,尤其是在一些小厂或者小公司,等来技术大牛的概率几乎比较小,况且等来后也不一定有时间给你反馈,最好的做法是主动寻求反馈,例如输出你的解决方案让大家评审,主动找开源项目学习讨论,这样才能获得很大的一个提升和经验。

对新技术持续敏感:学习新技术不是为了跟上时代的浪潮,最大的作用就是解决业务问题。例如 Docker 容器让原来的部署更加清晰轻量可追溯,敏感也不是什么技术都学,还是要学习贴合于业务发展方向,贴合于个人未来规划的知识,如果你的业务用不到,那么只是简单了解下其作用和用途就可以了。

五、图书推荐

image.png

给大家推荐一本书:《码农翻身》。对于我个人来说,对于计算机基础知识有很多要学习的地方,但是这部分知识又比较晦涩,这本书用一些漫画,故事等方式生动地讲清楚了那些计算机基础知识点。

六、招聘

这是关于我们团队的一个介绍:Gitee 私有化团队。我们也在招聘很多小伙伴,大家感兴趣可以通过邮箱(wangshengsong@oschina.cn,格式:名字 - 岗位 - 年限)投递简历。

七、QA

Q:请问初中辍学的你如何学习数据结构与算法,以及计算机专业相关知识? A:其实我是先学习的算法,后学习的其他专业知识,算法学起来也没有传说中那么的困难。我会去找一些相关的视频资料,文字相关的资料进行基础数据结构的学习,算法题目主要靠刷题,多做题才能理解清楚,也没有太好的办法,做多了也就 “读书百遍,其义自现” 了,其它专业知识的话,我主要拿 Linux 进行开刀。例如去学习一些 Linux内核源码经典资料,去理解 Linux 内核的一些技术细节,结合实战来学习会更清晰和深刻。

Q:怎样养成一个良好的学习习惯,形成自律自驱的行动力? A:我个人之前自律性也不是很强,但是由于兴趣加持,所以可以坚持去做一些事情,有些时候也会学累了,想刷刷手机玩一玩之类的,学习主要是万事开头难,我会使用我手机上一些“自律模式”来强行限制娱乐,拆分成每天的目标,使目标看起来不是很难,让自己充满信心。

Q:请问你个人技术方面的特质是什么? A:我个人认为在我同阶段的前端开发当中,工程化是我比较突出且有一定优势的地方。

Q:学习和工作的时间是如何分配的? A:我一直倡导“精准学习”,学之前会花时间找好资料和工具再开动,所以我学习的时间会相对少一些,在于精。平均每天大约 2-3 小时左右,但并不一定天天都有。

八、结语

image.png

最后给大家分享一句英文名言。有新想法,如果等上司意见,上司可能考虑时间成本业务发展等各方各面,时间就来不及或者被取消,最好的办法就是自己探索和应用,成功就成功了,失败了也不会如何。

我今天的分享就先到这里,谢谢大家!