小白如何快速提升技术水平?我的建议是,多加班
经常在技术社区看到有小白提问如何提升技术水平,我也曾是小白,我也曾经问过这个问题,我也不是什么天赋异禀之人,和大部分人都一样,所以我能够理解小白在问这个问题时的感受,作为过来人,解决这个问题的路径其实是非常清晰的,网上这类的答案也很多,不过看过我文章的读者都应该能够感觉到我是个比较务实的人,对于冠冕堂皇实际上屁用没有的东西不太感冒,所以我的这篇文章可能跟其他人的不要太一样,我只从实际出发,谈谈我的想法
以下内容对于大部分 0-3年经验的小白都适用,仅针对想靠这行混碗饭吃的人(这类人才是这个行业的主力军),天赋异禀的少数群体看个乐子就行
基础知识必须掌握
在 React
、Vue
大行其道的当下,我见过很多人竟然连基本的 js api
都搞不清楚,方法不知道,参数不清楚,掌握的少的可怜的 js
知识,比如 requestAnimationFrame
、Object.defineProperty
等还都纯粹是因为跟 vue
、react
扯上了关系面试要用所以才看了两眼,我无法理解如果连基础知识都掌握不了的话,又该如何去 深入
理解这些框架?
实际工作用的确实也是框架,很少有需要用原生 js
去实现什么复杂功能的地方,但这并不代表这不重要,恰恰相反,如果不是急着要找工作的话,比如在校大学生,我认为还是先把基础弄清楚,再顺带着学一学框架,无论是什么框架,都是对于底层技术的封装,react
、vue
等框架更新的确实很快,很多人都在说学不动了,实际上是你学错了,这些上层的东西根本不需要追着学,它们只是趁手的工具,工具是为你所服务的,但现在你却说工具让你追得很累,这本身就是有问题的
我上大学的时候,那个还是 angular
市场占有率最高,我那个时候也学了 angular
,但是现在我再看 angular
发现早就不是当初我学的那个东西了,假设我现在需要用到 angular
,现在学和一路追着 angular
那么多版本更新一个个学下来,有区别吗?没区别,都是工具,只要能实现功能就行了,我管你是 angular
还是 react
,管你是 vue2.x
还是 vue3.x
,反正对着文档一把梭就行了,都是基于 js
的 dsl
封装罢了,无非是玩得花不花而已
你可能会说,现在都在用框架,面试问的也是框架知识,基础知识知不知道有什么关系平时根本用不到啊,我并不认同,我就举个例子,经常看到有人说问
只学过vue,现在工作需要用react,怎么办,react好学吗?
我看了就很迷惑,你要是问我vue
、react
牛不牛逼,我肯定会伸出大拇指绝对牛逼,但你要问我难不难学,那我不能理解了,不就是一个框架吗有什么难不难好不好学的,我只能猜测这人可能一上来就是跟风学了vue
,啥基础知识都不懂,要是老老实实先掌握了基础知识,再顺手学个框架,好好研究下框架与基础之间的通用关系,根本不会问这个问题
我不否认有些小众的东西确实难以理解,但像vue
、react
这种市场占有率很高的大众化框架,不可能存在什么技术门槛的,管你是React
还是 Svelte
,一天看文档,两天速通,三天上手写业务就是标准流程
当然了,想深入还是要花费些功夫的,但是恕我直言,以绝大多数人(包括我自己)写的业务屎山的逻辑难度而言,根本不需要什么深度技术,深入学习研究更多的是提升自己的认知水平
为了快速找工作,你可以在什么基础知识都不懂的情况下就跟风学框架,问题不大,毕竟吃饭要紧,但是如果你想把饭碗尽可能拿的更久一点或者更进一步,跳过的东西,你必须要再捡回来
另外,多提一嘴,前端三剑客包括 js
、css
、html
,虽然后两者的重要程度远不能跟 js
相提并论,但既然是基础知识,都还是需要掌握的,作为一名业务前端,总不能跟别人说你不太懂 css
吧?
多看
如何掌握基础知识,首先你得知道有哪些基础知识,你作为一个啥也不懂一片空白的新人,了解这个领域最应该做的事情就是多看,看什么?看书、看视频
看书
关于前端书籍推荐的话题或者书单等,网上已经有很多了,我就不再赘述了,不过我发现有些书单也太特么长了,几十上百本书哪有那么多时间去看,好多我名字都没听过也往上凑,这可能会让很多人打退堂鼓,甚至直接摆烂,先进收藏夹再说,至于什么时候看就再说吧
如果只谈基础知识的,我认为只有两本书是必须要看的,《JavaScript高级程序设计》
和《JavaScript权威指南》
,也就是常说的红宝书和犀牛书,这两本书比较厚,但相比于几十上百本书而言,已经很明确了很清晰了,只需要看这两本就行了,是必须要看的,由于这两本书都是出版了较长时间的书籍,一些更新的内容没有包括在内,那么这部分知识就需要自行去网上获取了,比如 ECMAScript 6 入门
至于其他的几十上百本,说实话,看哪本都行,不是说其他书不重要,哪本书都有其存在的意义,但只是相比于这两本没那么重要,多看肯定比不看强,这两本书是必看的综合基础,其他书是在你在掌握了基础之后,根据你的实际情况,提升在不同细分领域水平的助攻
技术社区上的文章也姑且算是书的一种形式吧,零散的文章用于开阔视野紧跟潮流风向,系列文章用于加深在细分领域的认知
看视频
我知道很多人看不起视频学习的,认为效率太低,除此之外还因为跟培训班扯上关系,也让很多自诩清高的人认为太low
拉低自己的层次,所以对于看视频学习持否定态度
首先,我也认为看视频学习确实效率很低,但你得分清是对什么层次的人来说的
对于有了三年(只是大概估个数,少部分人可能只需要一年)以上工作经验的人来说,再看视频学习,那确实效率太低了,但是对于三年以下甚至是初识技术世界的小白来说,看视频的效率不是低,而是高,年限越低,看视频学习的效率越高,直到突破了三年这个节点后,看视频学习的效率才开始低于看书
我就是从小白过来的,我很清楚小白对于技术的认知是什么样的,那真是狗屁不通,让这样的人抱着厚厚的一本书在那看,每个字都认识,可一连起来就不知道为什么这样了,书籍内的世界虽然无比广阔,但无人指引,你跑了半天可能还在绕着圈,天地再大与你何干?
但视频就不同了,视频承载的信息量远低于书籍,但那却能给你更清晰的指引,一步步地告诉你该怎么走,万事开头难,入门的时候慢一点没关系,主要是要能入门,入对门,而不是像无头苍蝇一样乱撞
鄙人就是靠视频入门的,一开始大学里学的是 java
,但后来对前端感兴趣,转投前端,只能自学,但又不知如何下手,明知道红宝书和犀牛书是很好的书籍,奈何看着看着就想睡觉,每个字都能看懂,但一合上书就忘了今天看了啥,机缘巧合之下在某专门卖视频课的网站买了视频开始学习,这才逐步进入正轨,一改之前苦大仇恨不得要领,每天跟着视频课都学得很开心,因为能学进脑子里了,每天都能感觉到自己又多进步了一点,如此良性循环才算是入了门,入了门之后,才终于具备了自学的能力,因为知道路在哪里了,知道该怎么走了
视频的信息量低吗?低,无论是以前还是现在我都这么认为
但视频课的效率一定低吗?不一定,对于已经入了门有了足够经验的人来说,效率是低的,因为确实信息密度低嘛,但对于小白来说,重要的是要先入门,哪种方式能先入门哪种方式才是效率高的
掘金小册我认为是介于书籍和视频之间的一种形式,兼顾了二者的部分优点
多写
看了不一定就是会了,必须要亲自上手写才能考验出是否是真的懂了,看视频或者看书,每一页都能看懂,但是真正让你写了却不知道如何下手,那不叫懂,上学时对着答案做题就没有不会的,但没了答案或者换了个形式你就不会了,那不叫会
写什么?写所有你能写的代码,无论是什么代码
写多少?能写多少是多少,写得越多越好
有小白曾问过我,说他看别人写的代码都能看懂也能理解,但是让自己独立写的话,他就不知道该怎么写了,为什么会出现这种情况?我想都不想就知道这人代码写得太少了
这一行绝大部分人干的活,包括一些所谓的大厂员工(比如我),实际上真的都只是搬砖活而已,根本不需要太高的技术含量,也就是远不到比拼智商的时候,只要你智商和别人差得不太多,那么别人能够做到的事情,你肯定也能做到,如果你做不到,只是因为你懒罢了
这么说吧,我认为对于大多数人来说,如果他们有机会从一开始就进入并夕夕过上 997
的工作模式,只要不是真的智商有问题,那么经过了两年的高强度输出之后,技术能力怎么也能达到这个行业的中上水准,这就是多写带来的收益
你一年写得代码比其他人三年写得还多,一些代码编写规范或者设计模式你背都背下来了,水平还能怎么低?
没错,虽然zz不正确,但我依然鼓励加班,但,需要注意前提
前提是你是个初入技术大门的小白(老油条就没必要掺和了,瞎内卷),想快速提升技术水平不怕吃苦,只是想靠这行混碗饭并不天赋异禀,年轻力壮有冲劲,且你在的公司确实能让你学到一些东西。
有些人可能会说,想多写代码不一定非要加班啊,我完全可以自己整个项目自己写,我的看法是,可以当然可以,但恕我直言,你自己捣鼓的那个东西也就是个 Demo
,你不面对复杂多变的需求,没有庞大的用户体量,没有苛刻的产品、测试,你是很难碰到有意义的问题的,毕竟自己写的东西自己怎么看都是对的
也有人会说,公司确实清闲,没啥需要加班的怎么办?好办啊,我从业那么多年,我还就没见过完美的项目,绝大多数情况下都是问题一个接一个的屎山,屎山虽然满是毒,但如果你能摸索着尝试改善屎山,在实践中去思考去总结去行动,对你的提升速度可比光看书强得多得多了。但是,必须要注意,自己折腾可以,千万要注意安全,别把跑得好好的屎山给整塌方了
加班是给自己加的,如果你在加班之后,完全感觉不到自己有什么收获只是想骂公司傻x,那么就没必要加这个班了
多思考
如果你能做到前一条的话,再做这一条就是顺理成章的事情了(除非你懒)
我刚入门编程的时候,完全不理解函数是什么,为什么要抽离函数,我只知道人家都说抽离函数好,所以我就抽离,至于为什么抽离、什么时候抽离、怎么抽离,我一概不知,只是照葫芦画瓢,我没有专门去理解这件事,因为我尝试过但是理解不了(就是笨吧),于是就不管了,但忽然有一天我发现我不知道什么时候已经理解这回事了,想了半天,我只能归结于我写代码写多了,自动理解了
但这不是一蹴而就的,这是一个逐渐积累的过程,可能我在每次封装函数的时候都会思考一点,我为什么封装了这个函数,给我带来了哪些好处,那么当我写得代码足够多,封装的函数足够多之后,我就完全理解了这回事
写代码的时候要思考,为什么我要这么写,还有没有更好的写法?相同的逻辑,别人是那样写的,我是这样写的,差别是什么,各自有什么优缺点?这个代码把我坑惨了,要是下次换我来写,我会怎么设计?
不必专门腾出时间来冥想,这些思考完全可以是零碎的、一闪而过的念头,但必须要有这种习惯,当你写得足够多的时候,这些零散的思考汇聚起来终有一天能给你带来别样的启发
小结
绝大部分人(包括我)所能用上的技术,都谈不上高深,并不需要什么天赋,确实就只是熟能生巧的事情,辛苦一两年,把这些熟练掌握,然后后面才有余力去做技术之外的事情,当然,你也会发现,相比于这些事情,
来源:juejin.cn/post/7251792725069512763