大神,前端工作半年了,学的很迷茫,总感觉不知道怎么去自学,看书吸收能力差,可以给迷茫的人一点您的宝贵意见吗?
前几天,小伙伴星星微信我说了上面这段话。
首先呢,纠正两点,我不是大神,我真的不是,顶多是个大佬(皮一下);我对星星你没有任何意见哦,要有的话,也只是一点点建议,仅供参考哈。
其次呢,说实话,工作半年,迷茫的有点早啊。就我所知,刚入职的年轻人都喜欢热火朝天地干,就像刚刚交往的恋人一样,投入的很呢。难道说对工作不爱了?
01、先开一剂药
针对前端来说,掘金是一个绝佳的学习网站,里面的大牛每天都会推各种学习的路线。我特意花了一上午的时间找了几个。
1)前端开发中79条不可忽视的知识点汇总,这篇文章截止到目前共获得了 1494 个赞。
2)解密初、中、高级程序员的进化之路(前端),这篇文章截止到目前共获得了 1406 个赞。
3)一个合格(优秀)的前端都应该阅读这些文章,这篇文章截止到目前共获得了 4854 个赞。
4)前端 100 问:能搞懂 80% 的请把简历给我,这篇文章截止到目前共获得了 6006 个赞。
5)8年前端开发的知识点沉淀,这篇文章截止到目前共获得了 1801 个赞。
6)一名【合格】前端工程师的自检清单,这篇文章截止到目前共获得了 4144 个赞。
还有很多,我就不再一一列举了。这 6 篇文章包罗万象,里面的前端知识点足够你学习一段时间了,再贪多就嚼不烂了。
02、再来点偏方
在我看来,自学最有效的方法就是照葫芦画瓢,别看不起啊。
在我初入职场的时候,本事真没多少,唯一能拿得出手的就是抄。领导安排的任务,不会做,怎么办?面向搜索引擎编程啊,找到解决方案就开始搬砖。
任务完成的空闲时间里,怎么有效地提升自己呢?就去各种编程网站上抄人家提供的例子。早年我就是照着编程入门网的 demo 一个个的敲,敲出一个聊天室(前端 Flex,后端 Java,Socket 通信)都觉得无比的兴奋。可惜时过境迁,这个网站已经不存在了。
别耻笑我这种没有创意的做法,人丫的天生不都是模仿着长大吗?从小学说话,照着大人的嘴跟读就行了,发音不准确没关系,随着时间的推移,慢慢就好了。
学习也是这个道理,尤其是针对职场的新人来说,别怕丢人,就一心一意的模仿,照着 demo 抄。
和我当时一块参加工作的新人有好几个,其中一个叫惠惠的关系还不错。但是他很看不惯我这种没技术含量的做法,经常调侃我说,“你丫这样照着抄有意思吗?”
为了他能挂住点面子,我嘴上没回他。心里就默默地骂他了:“别特么眼高手低了,行不,就你那点‘一瓶子不满半瓶子晃荡’的水准,哪有资格来调侃我?”
总之,不为他的调侃烦恼,依然我行我素。你以为照抄很容易吗?说句良心话,就算是照抄,也经常抄不出人家文章中的效果,不信我举个例子给你看。
前端代码已经好久没写了,就举个后端代码的例子吧。我之前在学习 Java 的 fail-fast 机制的时候,看到 Hollis 大神的一篇文章,里面有这样一段代码:
List<String> userNames = new ArrayList<String>() {{ add("Hollis"); add("hollis"); add("HollisChuang"); add("H"); }};for (String userName : userNames) { if (userName.equals("Hollis")) { userNames.remove(userName); } } System.out.println(userNames);
然后我就抄到我本地,稍微做了点改动:
List<String> list = new ArrayList<>(); list.add("沉默王二"); list.add("一个文章真特么有趣的程序员");for (String str : list) { if ("沉默王二".equals(str)) { list.remove(str); } } System.out.println(list);
两段代码差别不大吧!但是运行的结果却完全不同,第一段代码会抛出异常。
Exception in thread "main" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) at java.util.ArrayList$Itr.next(ArrayList.java:851) at com.cmower.java_demo.str.Cmower7.main(Cmower7.java:16)
第二个代码就不会。当时我就纳闷了,难道 Hollis 大神的文章写错了?我还准备在他文章底部留言提醒他一下呢,结果我翻看了源码以后明白了。
你看,照抄这么简单的代码都能出问题,还逼着我去研究了一番 ArrayList 的源码,还真的学到了很多之前不曾了解过的知识点。知道怎么自学了吧!
03、再来点秘方
良心话,市面上很多技术书都特别枯燥无味,看这些书的时间,还真的不如玩一把俄罗斯方块(wang zhe nong yao)。书名叫啥我就不方便透露了,给作者或者译者留点面子。
那难道就无书可读了,那难道就放弃读书了,不是宋朝有句流行诗叫做:“书中自有黄金屋,书中自有颜如玉”嘛?
书当然要读,但读书要讲究点方法,不然真的很难吸收啊。
1)看视频
汲取知识的方法有很多种,看书只是其中的一种。记得我刚开始学习编程的时候,看书就看不进去,看一会就跑神。
当时学校图书馆有各种《21 天学会 XXX》的书,看起来真心痛苦,感觉就像在啃一块发霉的石头。那时候也没有前辈列一些优质的书单,或者说列了我不知道。
但是呢,那时候马士兵老师和李兴华老师的课程很流行,大家伙都看这个,我也跟着看。我尤其钟爱李兴华老师,讲课讲得风生水起,比听易中天品三国都带劲。李兴华老师还有一个特色,就是打字竟然用的是智能 ABC,但是,打字那叫一个迅速、流畅,作为观众的我由衷的佩服。
为了向偶像致敬,我甚至卸载了最爱的谷歌拼音输入法,也改成智能 ABC,硬生生撑了两个月,最后......没撑下去,换回了谷歌拼音输入法。
看视频学习有什么好处呢,就是注意力可以高度集中,用一个专业的成语形容一下——聚精会神。
那去哪里找这些优质的、紧跟时代的高清教学视频呢?
好朋友“江南一点雨”给了我一份,价值连城啊,这一套视频包罗万象(大前端的有“HTML5 新特性”、“AngularJS 视频教程”、“NodeJS 视频教程”、“React 视频教程”、“Vue 项目实战视频”、“JavaScript140 集”),已经分门别类好,大家可以根据索引按需下载(关注公众号后,回复“免费视频”即可查看索引)。
2)正确的读书方法
去年的时候,我读了这样一套书,系列名叫做《大师带你学语文》,里面提到的几种读书方法,我觉得非常有用,再次推荐给大家。
①、泛读
泛读可不是指泛泛而读,而是要博众家之长,开拓思路,广泛涉猎各方面的书。比如说,一名前端程序员最好也要读一读《软技能》、《代码大全》、《代码整洁之道》这类书。
②、精读
有些知识是要反复琢磨、反复研究的,务求明白透彻,了解于心,以便吸取精华。比如一些算法、设计模式方面的书。我读过的《趣学算法》、《设计模式之禅》。
③、跳读
这是一种跳跃式的读书方法。可以把书中无关紧要的内容放在一边,抓住书的筋骨脉络阅读。有时候遇到反复思考不得其解的内容时,可以跳过去,等后面的读完了再回头读,说不定就前后贯通了。如果整本书都跳过了,说明这本书就要先束之高阁了。
④、写读
俗话说得好,“好记性不如烂笔头”。读书的时候能把重要的知识摘选出来,然后写心得,这样不仅能积累大量的材料,而且能有效地提高写作水平,更重要的是能够提高读书的吸收能力。
老读者可能比较清楚,我很多文章的写作灵感都来源于读书。我在读书的时候,其实就是在寻找一个写作题材,或者说找到命题作文的题目,然后准备素材,最后文章写完后,发现自己把所有的知识点都掌握了。
04、最后的银弹
我敢赌一块钱,所有的人都会经历迷茫期。处在迷茫期的人最需要什么呢?
绝不是劈头盖脸的批评和嘲讽,比如说,你咋这么不上进呢?你竟然还有时间迷茫,真了不起。
迷茫的人需要一盏明灯,或者说需要一位亦师亦友的朋友。我非常期待能够成为你的朋友。
以上就是我给星星的一点点建议,仅供参考哈。
https://github.com/itwanger/JavaBooks