欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

10 - - 优秀前端的自我培养|学习笔记

最编程 2024-03-08 21:18:55
...

开发者学堂课程如何成为技术大牛?10 - -位优秀前端的自我修养学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1240/detail/18430


一位优秀前端的自我修养

 

内容介绍:

一、话题介绍

二、免责声明

三、前端成长

四、知识的学习

五、能力培养

 

一、话题介绍

1.话题引入

今天给大家分享的主题是前端的自我成长,这是一个关于成长的话题,很多人都有这样的感觉,听了很多技术圈子的分享,有的有深度,有的循循善诱,深入浅出,但是几年下来,到底哪些用上了,哪些对自己真的有帮助了,反而有些模糊。

2.经历分享

2015年在不同的场合分享了很多内容,有移动端的性能,有适配,有web Vs native,也有hybrid,但是其实一直比较担心,真正有深度的内容其实面向的是比较小众的群体,比如说hybrid,其实它在大部分公司里面是只能用现成的,所以这一次尝试分享一个认为可以帮助到所有前端的话题,关于前端的成长,如果说这个分享的内容,听众里面有那么几十个人拿到BAT的offer,或者升职加薪,那么觉得就认为我取得了成功。

3.举例说明

前端其实是个特别苦逼的职业,因为前端技术一直革命的特别快,新技术新技巧在不断的被发明出来。之前一个朋友,他讲说他对自己的认知是了解前端、熟悉前端、精通前端,熟悉前端,不懂前端,为什么呢?他说当他觉得自己对前端所有的东西觉得无所不知、无所不能的时候,忽然看到了一段代码,他完全无法理解,于是整个世界就崩塌了,从此再也不敢说自己会前端。我就跟他说,这里缺少的是一种正确的方法,你觉得无所不知、无所不能的标准是什么?是工作中很久没遇到解决不了的问题吗?他说还真是这样。就又问他,那你系统学过前端吗?他想了想,还真没学过,大学离不开这个课。的确如此,到目前为止,还没有任何一个大学会教前端,倒是有些培训班会讲网页开发三剑客。这里讲的内容,希望带给大家的就是该如何学习前端,实现自身成长。

 

二、免责声明

关于成长,首先我得发一个免责声明,不是我对我讲的内容没有信心,而是成长是自己的事。因为有句话在外企工作的人会经常听到,叫做you are the owner of your career,你是你职业发展的责任人。这句话潜台词是你不是你老板,也不是你爸妈,也不是你女朋友,是你职业发展的责任人。这句话在我职业生涯的起点听说,一直指导职业发展,甚至在带团队、培养团队的时候,也是中心的指导思想。之前带的团队的同学,他们有不少人也在带团队,其实他们也在实践这句话,所以这里也把这句话,把这个道理分享给大家。

 

三、前端成长

1.内容

讲前端成长,认为主要在两个方面,一部分是能力,一部分是知识。个人的观点,能力占80%,知识占20%。其实我们认为变化快的东西,最新出来的Angela react ES2015其实都在知识里面,知识又分成两部分,一部分叫做标准,它是相对而言比较稳定的,很少会出现一个标准被推翻的事情。另一部分则是技术,像JQ react这些框架,像是mvc flux这些构架的东西,这些东西是由各个公司主导的,变化非常快,ground发展了没多久,Gope就来挑战它,然后又有web back这些东西。

2.能力

认为占重点的能力则是非常稳定的,认为能力是三大块,编程能力、架构能力、工程能力。

(1)编程能力

编程能力就是用代码解决问题的能力,编程能力越强,就能解决越复杂的问题。细分又有调试、算法、数据结构、OS原理等这些支撑,才能解决各种麻烦的问题。

(2)架构能力

架构能力则是解决代码规模的问题。当一个系统足够复杂,会写每一块,能解决每一个问题。不等于你能搞定整个系统,这就需要架构能力。架构能力包含了一些意识,比如解耦、接口隔离,也包含认识业务,建立抽象模型,也有一些常见的模式,比如经典的MVC,还有设计层面,面向对象设计模式等等。

(3)工程能力

工程能力则是解决协作的问题,当系统规模更大,光靠一个人是没办法完成的,如何保证几个高手互相能够配合好?如何保证项目里面水平最差的人不拖后腿?这个工程建设往往会跨越多个业务,以汇报关系上的团队为单位来做,包括前后端解耦、模块化、质量保证、代码风格等等。

3.总结

其实不难看出来,这三项其实是有顺序的,低等级小团队编程能力一项就能应付,越资深的前端,越大的公司和团队越是需要后面的技能。但是这里要强调一点,其实自身前端大团队对能力的需求是既要还要。不是说资深的前端编程能力就可以变差,社区总会有一些声音,对工程能力、对架构能力持有一种抵触的态度,觉得比较虚,觉得不需要。实际上以某些人所在的岗位来说也没错,毕竟公司团队的状态确实可能用不到,但是以个人成长的角度来看,就是大错特错。

 

四、知识的学习

1.观点

下面具体讲讲关于知识的学习。对知识我一直有个观点叫做宁缺毋滥,这个图片上写了一句好前端才分对错。其实很多人他学习东西的时候就喜欢挑简单的学,书选择最深入浅出的,在这种心态下,没有任何一丝学好的可能性。

2.目标理解

对知识学习的目标理解为两点,一曰准确,二曰全面。当你学习一部分知识,如果你能做到这两点,那将来在业务上做技术决策的时候,你面对面试官技术问题的时候,信心跟只看过皮毛是完全不一样的。怎么做到这两点呢?路子肯定有很多,而我的答案,这里要分享的是建立自己的知识体系。

3.建立自己的知识体系

如何建立自己的知识体系呢?个人总结的经验是下面几个步骤,

(1)第一步,寻找线索

你要了解一个知识,比如想学web平台的API了,当然可以先找一本书,看看别人都写了什么,但是我不喜欢这么干。大学里学前端的东西,为了找个ID和name的区别,曾经要借十几本书来对比着看,那个时候是真的没人告诉我什么书比较好,所以对别人总结好的知识第一反应是质疑不信。所以比较推荐找一些比较准确的,可以确定它真的足够全面的资料当做线索。对web平台的API,就用反射,浏览器里给出来的这个属性列表是不会骗人的,用这个东西作为线索就很有信心。同样可能比较适合做的资料还有一些标准文档的附录和源代码里的结构定义。

(2)第二步是建立联系

比如说下面几个DOM属性,这里child node等是操作node的children element next element SI, element s是操作element的,它就存在一定的对应关系。一般来说,找对应关系的方式有以下几个依据,美感、完备性,操作同一组数据。特别提一下,操作同一组数据正是面向对象的核心概念。对前端而言,有点不一样的是所有的API跟都是window,所以其实大部分的API可以根据面向对象的数据和操作的观点进行划分。

(3)第三步是分类

这里给出一个实际一些的例子,此图是我对Z移动简化版CH的API分类,建立联系以后,依据知识之间的联系进行分类,就可以得到一张图谱,在这个图里面你就可以非常清楚的知道哪些知识是非常重要的,哪些其实是可以互相替代的,而一旦有你之前没见过的东西,你又能通过把它放到图谱里来快速理解它,或者找出一些很好的替代方案。比如面试的时候,如果面试官问你bind和on bind怎么用,你还不会,这时候如果你心里有这张图,你就不至于一脸懵。可以说虽然不知道bind和on bind,但是知道live和die,又知道on和of, collection里面的东西多半没有什么用,而节点操作里肯定就都很有用。

(4)第四步是追本溯源

当对一个知识体系的全貌有了概念以后,占了全面两个字,接下来需要确认它的准确性。很多知识在社区会有很多的争议,该相信谁这是个问题,而答案就是追本溯源,去找他最初的讨论和定义。有一个真实的案例就是B包这个概念,曾经很多人的理解都是错的。把B包和scope的概念给混淆起来,认为B包是函数的执行环境上下文。但是有一个叫做hax的,很多人应该都认识他,他就对此提出了质疑,认为B包就是函数。于是就去查证B包的概念。大家都知道vki其实是不准确的,但是其中有一段基本不会太有问题,就是历史。下图是cloure这个词条的历史部分,从这段历史里找到了一个名字,Peter是提出者,就去看看他到底是怎么说的,于是就去Google学术搜索找他的文章,找到后,看原始的文件,这个定义对应到我们今天JS里的B包是稍微有点区别的,但是它毫无疑问是包含了两个部分,环境部分和控制代码部分,所以其实B包就是对应着JS的函数,而之前普遍的观点是认为B包只包含环境,所以这个追溯的过程能够帮我们真正搞清楚对错。除了vki Google学术搜索的组合,还有一些邮件列表和提交历史,也是非常适合去查证一些概念和技术的历史的。

(5)总结

讲的这个建立知识体系的过程是不断接受新知识,挑战、质疑原有的体系,推翻、再重建,每一次循环,知识体系都变得更加坚固,更加强大。

 

五、能力培养

1.观点

下面分享的一部分是关于能力培养。能力培养其实重要性很高,但是其实说起来内容却很少,只有两点:教材、训练。

(1)教材

对知识学习,主张建立自己的体系,不要去相信书。但是对能力培养,观点就刚好相反,能力的体系恰恰是难以自己建立的,需要教材去指导,这是由两者的复杂程度和变化速度决定的。想培养能力,就要找经典的教材来学习,向算法导论the C++ programming。这些经典几十年都没有过时。注意,这里用了教材而不是书。教材和书的最大区别就是有没有习题。内容再难的书可以一星期读两本,但是教材一定不行,教材一定得花几个月的时间一边读一边做习题。

(2)训练

谈到训练,其实有个事实是工作以后只有极少数人仍然能够做到训练,比如自己的编程能力,自觉工作七八年几乎没有过进步。训练应该是系统的,需要教材主动的,这两个特点不可或缺。有人会觉得真的工作很辛苦,每天都要加班,但是其实任何被动的痛苦都没法给人带来进步。你的痛苦倒是可能给老板带来更多收入,如果面临困境,可以选择系统训练来提升自己,但是对大部分人来说可能更乐于选择一个一个变通的办法,养成习惯,让工作变得更有挑战。这个事情其实有不少理论,比较有名的是提出的心理舒适区、学习区和恐慌区,选择一份对自己来说具有挑战性的工作,正面解决问题。技术圈里流行一个笑话,说的是一个人工作了三年,却只有一年的经验,因为后面两年都在重复第一年的工作,所以我们要做的事就是永远不重复劳动。当你觉得现在的工作越来越舒适,越来越缺少风险的时候,就应该引起警惕了。而虽然训练是个很困难的事情,其实大家也不必过于担忧,虽然到处都是1万小时训练的言论,现在各大公司的招聘门槛应该都卡在几百小时训练的程度,所以我想说1万小时太久,只争朝夕。希望看到大家成为更好的前端,做更好的自己。