作为一个应届毕业生,有些事想咨询一下。我是普通本科软件工程专业毕业的,因为在学校的时候贪玩也没怎么好好学习,现在想认真找个编程工作,所以开始了几乎从零开始的自学,现在我遇到一个问题。对着网络资源和买的书籍学习后,会经常忘记,虽然知道要时常复习,但总是记不牢靠,只留下个总体印象;还有就是,到目前为止,我也只会对着资料、书籍抄代码,而不是完完全全自己写,我感觉我一点东西都没学会,这正常吗?我该怎么办?有好的学习方法介绍吗?

以上是读者在 7 月份私信我的一个问题,我一直记在心上,但没想好怎么回答他,就一直拖到了现在,一个多月过去了,我还怕他等着急了把我拉黑了。惭愧惭愧,我也是拖延症的重度患者!

大部分普通的人,在不同的人生阶段,可能都会有一些遗憾。比如说,初中时期没有好好学习,然后没考上重点高中;高中忙着结交朋友,然后没考上重点大学;大学好不容易放松了,忙着玩游戏,忙着谈恋爱,然后学业上荒废了。等到毕业找工作了,发现自己一无是处。

后知后觉,下定决心要好好学习了,发现注意力无法集中,学什么都慢,学了之后还容易忘。代码抄来抄去,根本无法形成自己的知识体系,然后开始自暴自弃、自怨自艾,觉得自己就像一个废材。

我就是这样一个普通人,在我找到工作之前,真的感觉自己这辈子就要废了。即便是找到了工作,在很长的一段时间内,也总是担惊受怕。唉,怎么又出错了,明明自己很认真啊,可还是出了差错,一而再再而三。

那直到什么时候,我才找到了自信呢?我是如何找到呢?我做了什么呢?

在现在的我看来,我的成长,大致可以分为两个阶段,每一个阶段,都完成了一定程度上的蜕变和超越。

01、第一个阶段

大学毕业后,拿到公司正式 offer 的第一年,抄了大量的代码。对,你没看错,抄代码,真的是抄代码。

我实习的那一年,做的大部分工作都是打杂的,写写 SQL 了,写写 Ruby 脚本了,帮领导整理一些 Excel 了,感觉没啥成长,真的。机缘巧合吧,我在实习临近结束的时候,通过和老同事的交流,洞悉到我们研发三部的重心将会是 Flex——一种富客户端技术,可以在网页端呈现出一种非常绚丽的效果,那时候小米手机还没问世。

拿到公司正式 Offer 后,我下定决心,一定要把 Flex 这门技术学好。怎么学呢?当时 Flex 方面的书籍很少,严格意义上说是没有,有我可能也不知道。教学视频就更没有了。

不过幸运的是,那时候可以上 Google,搜 Flex 这个关键词的时候,有两个网站,一个叫做编程入门网(现在已经没有了),一个叫做啥来着,现在忘了。毕竟 Flex 这个技术已经淘汰了,但学习方法是不会过时的。

编程入门网上,有大量的实例,我的做法很简单,就是照着抄。一个单词,一行代码,一个类,只要是教程里面有的代码,我都抄到本地去尝试运行。

抄的过程,有五个好处:

第一,就是拓展眼界。哦,原来还有这样的方法;哦,原来这个效果可以通过这种形式实现;哦,原来别人已经造过轮子了。

第二,加深记忆。抄一遍的时候容易忘,抄第二遍的时候肯定就会比第一次少忘记些,抄第三遍的时候就会比第二遍的时候多记住了一些。有时候,学习就是这么傻瓜式,不断地重复,重复的次数多了,自然就记住了。

第三,纠正教程中的错误。有时候,明明教程里说可以运行,为什么搬到本地后不可以?一开始,肯定会自我怀疑,一定是自己错了,调试着研究着,发现原来是教程出了错——这时候的收获是巨大的。

第四,戒掉眼高手低的臭毛病。不能说每个人身上都有这个臭毛病,至少我自己是有的。哎呀,教程里的这个知识点我会呀,然后真的觉得自己会了,就跳过去了。等到要用的时候,发现,唉,怎么忘记了?怎么不会用?怎么我实现不出来那种效果?

第五,融会贯通。一开始,谁会自己造轮子,不都是模仿?不停地模仿,不停地思考,不停地实践,久而久之,就自己会造轮子了。

另外,被我忘记名字的网站,上面有大量的问题,绝大部分是有答案的,并且答案是正确的。那,当我遇到问题的时候,我就会去上面找答案,即便是找不到,别人的解答也会提供一种思路,或者一种灵感。

把这些学习方法搬到现在的话,就有很多可选项了。

  • 如果你不知道 Java 学习路线的话,可以关注后私信“路线图”获取高清版。

 

 

  • 如果你不知道学 Java 应该看什么书的话,完整PDF试读版关注后私信“书籍”免费获取。

《Thinking in Java》

《Effective java》

《重构——改善既有的代码设计》

《深入理解Java虚拟机》

《Clean Code》

《Head First 设计模式》

《Java并发编程实战》

《敏捷软件开发:原则、模式与实践》

《算法(第四版)》

  • 如果你不知道学 Java 应该看什么视频的话。
  • 如果你需要一份 Java 面经的话。
  • 上面所有的可以关注后私信“666”获取

能动手就别 BB,一定要去动手,好吗?动一次手觉得容易忘,就动两次,别嫌累,学习其实没有多少诀窍,关键就在于行动。

抄代码这个阶段大致持续了 10 个多月,然后我因为一款小产品(Flex 做的聊天工具)被部门的一个项目经理赏识,直接拉过去做了 Team Leader,一下子就完成职场上的跃迁,和我同一批次来的,不管是学历比我高的,还是能说会道混得开的,都还是个普通的开发。

02、第二阶段

2014 年初,我离开苏州回到了洛阳,带上实习的一年,我当时有将近四年的工作经验了。又一次机缘巧合,我按下了「写作」模式的启动键,一写就是 7 年时间,恐怕很难停下来了。

写作的起因我之前提到过,就是每周分享一篇文章,每个月的绩效奖会多一百块钱左右。我回洛阳的时候,由于部门小人少,而我的实力又比较拔尖,于是领导就愿意倾听我的建议。我就提倡每周至少写一篇文章,然后能坚持下来的,绩效奖就多打点分。

不过,能坚持下来的只有我一个,哪怕后来取消了这方面的绩效奖。你看,我一开始写作的目的也不是单纯的因为热爱,而是因为有绩效奖。

后来之所以能坚持下来,是因为写作有很多好处,比如说总结自己、记笔记、提升影响力、出书等等。

对于骨子里喜欢写作的读者来说,我劝你们在业余时间尝试一下;如果在写作、运营方面都没有天赋,还是以工作为重,全身心的在职场上打拼,其价值并不比写作低。因为写作毕竟是一项耗费精力和时间的事,做到极致并不容易。

但从我自身来分析的话,写作给我带来了三方面的改变和提升。

第一,戒掉了游戏。我在初中的时候就沉迷过一段时间的游戏机,需要插卡接电视机的那种,或者说魂斗罗的年代吧。大学的时候,我沉迷单机游戏,各种三国题材的,篮球题材的,还有极品飞车等等。工作以后,打 DOTA,打LOL,打吃鸡。说实话,打游戏挺占用时间的,尤其是我这种自控力差的。而写作,同样占用时间,那两者只能选其一了。

第二,提升技术。为了写作,我需要搜集大量的素材,看大量的博客,研究源码,甚至在 B 站上看 up 主的视频。然后在写作的过程中,还需要锤炼文字的表达能力。要教会别人,首先要教会自己,只有自己是一瓶水,才有可能分给别人半瓶水,对吧?

第三,提升影响力。因为写作,我认识了天南海北的读者,也认识了很多优秀的博主,人际关系得到了很大的改善,人也因此变得更自信了,毕竟也是出过书的人了。

第四,增加收入。一开始,因为写作,引来很多私活的项目,不过这个比较累,持续了六年多的时间。直到今年的 3 月份,才恰到了广告主的饭,不容易啊,蛰伏了六年多的时间,一般人,很难做到我这种程度上的坚持。

写作这七年的时间里,有过无数次的放弃,因为默默做一件事,尤其是对于普通人来说,太难了。尽管写作的好处有很多,对我的改变也很大,但我并不提倡人人都去搞写作,因为就像写日记或者周记一样,如果你有时间,你喜欢做这件事,去做,对你是有益处的;如果你不喜欢,你没有时间,只会适得其反,有可能耽误了你的工作。

03、最后

综上所述,我对有这些疑惑程序员的建议是,工作的前三年里,抄代码很正常,请不要怀疑自己,你之所以感觉还没有学到东西,要么是你的学习路线有问题,要么是你抄的不够多。

如果感觉自己在工作上遇到了瓶颈,或者你本身也喜欢写作的话,可以尝试去开源,去分享,收获一定会超出你的预期。