我的前端之路
阚自强
政企云 & 乌鸫科技 高级前端工程师,freeCodeCamp Top Contributor,杭州社区核心组织者。从天津漂流到杭州寻找一份生活和工作的归宿,经常游走于社区论坛,热爱和技术社区朋友交流分享学习成长心得。
大家好,今天我给大家带来的分享是关于“前端之路”。我不是要教大家怎么去从事前端开发,而是我自己给自己规划了一条前端之路,行走这些年也没有给自己带来什么遗憾,所以我想分享出来,希望可以给大家带来一些启发。
0、一名初入大学校门的小青年如何选择了未来的路
我的经历
先来一个自我介绍,我毕业于天津农学院人力资源管理专业,毕业之后和朋友一起创办过一个小公司。离开天津之后我来到了杭州,就职于某区块链公司,后来就加入了阿里巴巴-政企云 & 乌鸫科技体验技术前端团队。
首先给大家分享第一个问题:我作为一个初入大学校门的小青年,如何选择了自己未来的路?
想做一个什么样的人
可能很多同学在刚进入大学之后,有些松懈,因为高考过后想给自己放松一下,很少有同学会去想未来想要去做一个什么样的人,或者是想要从事什么样的职业。我觉得大学生走入大学最好是要给自己一个长远的规划,想一想自己未来要做一个什么样的人。当然这个问题可能对于很多人来说是比较难的。
我们不妨换另外一个问题:问一问自己不想做什么。比如,你是不是想毕业之后去做电话销售?或者是去做餐饮销售员?或者是在企业里面做策划运营工作?想想自己不想做什么,最后剩下的这一点就是自己想要做的。
兴趣是什么
第二点是问一问自己:我的兴趣点是什么?
如果说能把自己的兴趣点当成一种职业来做,我个人认为是一件比较幸福的事。至于我,因为我本身是酷爱编程,然后最后把编程做成了自己的一个职业,这些年也感觉很幸福,乐在其中,所以在这方面的成长也会稍微快一些。
明确自身优劣势,制定规划
第三点就是当你明确了自己的方向之后,再去判断一下自身的一些优劣势。
我不知道是不是好多同学和我一样,在上大学的时候可能会认为自己足够优秀或者是能力比较强。后面我有问自己一个问题,觉得自己能力强,我强在什么地方?是不是别人有些东西能做,而我不能做?或者是我能做的东西别人做不到?有没有这种情况出现?如果有的话,那就证明我们的能力是比别人强的。
找到自己的一些劣势或者优点,我们就要去扬长避短,然后把自己的短板补齐,把优势放大,这个时候就需要制定一些计划。
比如,如果你是想从事技术工作,你要规划一下我大一需要学一些什么东西,比如计算机基础,是吧?然后未来如果说你想做前端的话,可能你后面就要去针对前端的一些知识,像 CSS、JS,去做一个很好的计划,然后慢慢去补足。
时间管理
如何保证你这些计划很高效地去执行?你需要有一个时间管理的观念。好多同学进入大学之后,可能有课你就会去上课,但没有课的话可能就会在床上躺着,或者去网吧待着。没有了之前上高中或者上初中时老师和家长的监督,可能时间概念在自己这里就会比较松懈。
我大学时是这么做的,每天早晨会 7:30 左右起床,然后每天看一篇技术博客,上午会去正常的上课,下午是下了课之后会去做一些计算机基础的一些学习。比如我上大学的时候会学一些 Java,然后给自己做好了一些计划,然后还要有一些阶段性的检测,比如两个月或者三个月之后,会给自己做一些小的 demo,仿京东的官网,或者做一个小型的公众号网站,然后给自己做好一个时间管理。
实践参与
第五点是实践参与。如果你的校园里面有一些比较好的展示机会,像社团办一些活动,可能要给活动做一个官网,某某学院会有一些官网的一些更新,如果你能参与进去,我觉得是比较好的。
1、破茧而出,我该如何帮助自己快速适应工作
第二个问题:毕了业之后,如何帮助自己快速适应工作?
机会大于既得利益
对于我来说,我是一个非计算机专业出身的工程师或者是一个程序员,然后我求职的第一点给自己的一个定位就是“机会要大于我的既得利益”。找第一份工作的时候我并没有看重收入,而是看哪一家公司给我的展现平台会比较大,愿意接纳我,并且是我想要从事的岗位,就像前端工程师。
深入学习的能力
第二点,入职了之后,作为一个新人,如何去快速学习,补足自己的一些大学初入职场的一些中间的断层,怎么去快速弥补?
我们这时候也是要去看公司和业务所要涉及的技术面,进行深入的学习,学习一些原理。可能大部分的同学感觉自己能够实现需求,能够实现功能就 ok 了,他并没有去研究。比如像我最开始进入职场时,会关注一些 jQuery 实现原理,比如链式调用它是如何实现的,比如一些查找的方法它是如何实现的。
如果你探究了实现原理,后面会对你学习技术(比如性能优化,或者一些异常 bug 的处理)有很大的帮助。
很多文章会写,不提倡去造轮子。其实我也是比较不提倡造轮子,但是我觉得作为一个工程师,如果说你打算在这个行业长久做下去的话,一定要有一个造轮子的能力。
沉淀方法论和原则
第三点,如何让你的工作更高效,或者是和别人合作起来更轻松?一定要去沉淀自己的一套方法论。比如你和服务端去沟通,或者和客户端去沟通,要站在他们的立场,为他们去考虑,然后去阐述你的观点,这样你说出来话才更有说服力,而不是说一味的站在自己只是一个前端工程师的角度去和他们讨论问题,这样的话会自我设限。比如我讲我前端怎么样比较好,他肯定会站在客户端的角度认为怎么样比较好。
如果说前端怎么能帮他去实现一些东西,我们把整个方案拿给他,把前后端的一个合作方案拿给他的时候,他就更好更方便地去接受你。
危机意识
第四点,在我们在这个行业里面,像我最开始身边有很多同事和我一起去做前端开发,好多人会缺少一种危机意识。比如早两年没有 React 和 Angular 争地的时候,很多同学可能还沉浸在 jQuery 的时代,其实职场里面慢慢已经淘汰这些开发的机制。当然可能天津这块发展是比较缓慢的,北京、上海或者杭州可能早四五年前已经开始用这些比较流行的技术。当然现在可能在所有人看来的话,Vue 和 React 都是人人必备的一些基础技能。
开放的心态
第五点,如何化解危机呢?我是这么去做,保持自己和社区的一些充分交流。当然我也是抱着这种心态参与了社区才认识的,像 Miya 姐、Ak、水歌等等,然后和他们交流的过程中才会了解到除了我工作岗位以及我公司之外,别人是怎么去做的、他们是怎么看待这种技术的发展、这些技术里面蕴含的一些思想是什么样子的......
这时候你会发现你所摄取的东西要远远多于你身边的一些同事,这个时候你就会慢慢地站在主导的地位,去给你身边的同事做一些普及,然后你的影响力就会高,自然而然也会得到领导的器重。
2、在大型团队中工作我遇到了哪些挑战
我去年 9 月份跳槽之后,在大型团队里面(阿里巴巴-政企云 & 乌鸫科技体验技术前端团队)的工作中给我带来一些挑战,我把它当作我职业发展的一个突破。
风险意识
第一点就是风险意识。在此之前,其实可能只有自己对自身危机意识的一些认识,但对于整个项目开发周期迭代,其实是缺少危机意识的。
在我的之前的经历里面,团队之间合作,可能大家更多沟通的是需求、某个功能点的联调方式。在任何需求排下来之后,可能埋头就去干,并没有去从整个链条,包括和别的同学对于整个需求、整个大版本的一个迭代的功能点、风险评估、技术方案的评估、需要花费的时间......都没有这些概念,可能就是埋头直接去做,然后做到哪遇到什么问题再去抛。这样的话就导致整个项目在推进的过程中,会随着你开发的问题、套路,动态地去改变一些技术方案,导致产生一些额外的成本,也给公司带来一些负面的影响,你的项目不能按时交付。
所以到大公司之后,风险意识一定要高。在任何一个版本需求确定下来,第一时间应该做技术方案的评估,拉上服务端客户端,包括一些产品/UED 同事,把后续可能要涉及的风险点、技术方案和大家敲定落实,这样的话在我们独自去开发自己模块的时候,才会降低风险。
推动变化和响应变化
第二点是推动变化。其实第二点和第一点是相辅相成的。推动变化主要是什么?主要是我们作为一个前端工程师,是产品推向用户使用的最后一道关口,在日常工作中,产品和 UED 同事都很难去想象到一个产品功能在交互过程当中的任何细节,很难去想全。这时候我们作为前端开发者,应该想得比他们更多。
站在用户的角度,我们想象一下用户真正需要的是什么样的一个东西,到底什么样的产品是对用户有价值的。这个时候我们可以去站在用户的视角去推动产品的一些变化,这样的话也就避免了产品投入到市场之后,由于用户反馈所带来的变化。
前端开发者去推动变化,也可以提高我们在团队中的一些影响力和话语权。我们可以把更多的时间去放在一些基础建设和赋能上面。
不自我设限
第三点,不自我设限。刚刚其实在第二点里面有稍微的阐述,就是不能把自己简简单单只定位为一个技术人员,我们更像是为一个最终的产物负责,只不过是在产物过程中,会有我们不同的同学去分工协作。我们要在第一时间拿到这个东西的时候,去和各个方面去拉通,去评估,以确保最终交付给产品的是我们共同期望的最完美的一个展现方式,或者一个最完美的展现的产品。
技术赋能业务
第四点,技术不仅仅是为了服务某一个项目,而是说我们要赋能业务,同时在我们实现某个项目中所产生的业务价值,又能继续反哺到我们日常的开发和生产中,这个才是真正的价值所在。像一些开源的大厂,他们所开发的一些开源产品也是在这种思想下去做的。
比如我要实现一个上传的功能,那这个上传功能不仅仅简单说是为了完成我这个项目里面的上传功能,而是说我把它抽离出来,做成上传的能力——放在我这个产品里面可以用,同时我上传能力又可以赋能给别的同学,或者是我们接下来要负责的另外一个项目。
其实在前端来看的话,可能就是面向模块化编程或者面向组件化编程的一个思想。当我们把技术一个一个的功能模块抽离出来之后,后面的生产其实对我们来说就比较轻松,我们就可以把不同的模块拼装到不同产品里面,后面迭代就会变得更加快速,我们就可以抽出更多的时间去做更多有意义的事情。
视角的转变
第五点,来到阿里之后我有一些视角的转变。之前我对待任何一个项目,可能作为技术人员就是为了完成这个项目而去完成。到阿里之后呢,任何工程师或者是我自身来说,我感觉要做的东西不仅仅是为了把某个项目做完,而是说这个项目本身是有什么样的价值。
我本身的工作能够给我身边的同学带来哪些价值?最后这个产品交付给用户,给用户带来是哪些价值?如果说价值比较高的话,即使这个项目有一定的延期,其实后面得到的结果也是好的,因为我们后面给用户呈现的是一个最完美的东西。最后一点其实要去思考的就是这个东西给社会带来什么样的价值?任何一个长久的东西都是有它长远存在的意义和价值。
3、大厂的前端技术体系是如何搭建的
我想给大家介绍一个前端技术体系是如何搭建的,会从以下三个问题去给大家做一个简单介绍。
第一个问题是大厂的前端都是忙些啥?是不是大家理解中的搭系统搭页面就 ok 了?
第二个问题可能是很多人可能目前还没有意识到的,是不是我看了 Vue 源码或者是 React 源码,我的前端发展就到头了?答案肯定是否定的。
第三点,如果大家有兴趣来到我们团队,可能会想去了解我们团队需要什么样的人。以上三点会通过接下来的一个短片,由我们部门的前端负责人去给大家做一个简单的介绍。
最后一点我想要和大家简单说的,技术人员经常被调侃“是直男”、“情商低”,我觉得其实大家在研究技术的同时,还可以多参加一些娱乐活动,比如参加一些比赛,打乒乓球,参加一些科技展,或者是去旅游,我觉得都是丰富自己生活的方式。
—————END—————
喜欢本文的朋友,欢迎关注公众号 达达前端,收看更多精彩内容
点个[在看],是对达达最大的支持!