程序员如何自我学习?阿里资深技术专家这样做
作者:CQITer小编 时间:2018-08-03 16:05

阿里妹注:作者长居在美国,故学习渠道有些许不同。我们可以举一反三,领会即可~
为何要持续学习,靠经验积累不行吗?
很多人都说程序员的薪资水平不错,可以媲美医生和律师。而程序员和医生、律师的不同点在于持续学习上。不是说医生和律师不需要学习,医生、律师能够凭之前的case积累非常多的经验(这也是大家看病喜欢找年纪大的医生的原因之一),而且这些经验很大程度上可以被复用(很多病因和判罚案例带有相似性)。
程序员这个职业则不同,主要是因为行业更新得太快,积累的经验很快就不适用了。
举几个例子:
如果你是Java程序员,且非常擅长Struts + JSP开发,解决了很多Struts框架的问题。但今天,这部分知识已经过时,需要重新学习。如果仍坚持使用之前的技术,会给同事和公司带来很大的技术负担。大家回顾一下自己从毕业到现在有多少技术都已经看不到踪影了。就阿里巴巴内部来说,很多技术也都已经被淘汰不用了。
就编程来说,有很多编程语言和门第之争。你在这个语言积累的经验到另外一个语言就未必行得通。我很少听说Java组招一个.Net的资深工程师,即便有,那也是给产品做.Net SDK client的。
软件的经验积累还会体现在一个架构设计上。很多同学会说经验积累得多,架构就设计得好,这在今天来说也未必。大家都在云上啦,云上提供的服务基本都是类似的,架构思路和使用的云上服务基本一致。
Amazon的售前人员个个都是行业架构师,给你很好的架构和解决方案,包括迁移方案,所以你就知道架构的门槛了。非资深程序员可以花半天时间看一下 Learn how to design large-scale systems ( https://github.com/donnemartin/system-design-primer ),虽然说是primer,但是还是非常实用的,配合一下 Awesome list ( https://github.com/topics/awesome ) 架构思路和模式都有了。框架和开发包的具体特性和对比了解了,一天就能够成为架构师。
有个笑话:一个产品经理找一个有个性的设计师去设计原型和交互稿。该设计师头都没有抬说道:“你抄的是哪个网站或App? 告诉我,我下午给你做。”如果你看了system design primer,当有架构师找你,你就可以说你参考的是哪个网站的架构。我们回头理解一下然后按照这个设计编写代码就可以了。在云上,架构设计基本都是pattern的,再花很多时间讨论架构设计,就有点想不通了。但对云上的产品做彻底的理解,这个还是需要的。 行业发展得太快,你必须学习,纯靠经验积累行不通,技术淘汰的速度远大于你经验积累的速度。
非鸡汤:不要和程序员谈自己的编程历史,很多的经验在今天已经不适用了。只要2-3年不关注技术,就基本快和程序员和编程绝缘啦,不是绝对,但是通常不会错。

工具要非常熟练
有人跟我说:“不要吹啦,你就是IDEA使用得再熟练,也没有必要将学习和使用工具挂上钩吧。” 说句实在话,看到一些硅谷工程师的培训教程中他们对工具的熟练使用程度,我只能说我还是小白。
有一次和几个google的工程师吃饭聊天,问了一下他们遇到的哪些人比较牛? 一个工程师说他的leader太牛了,在帮助他找bug的时候,工具和debug使用的熟练程度让人眼花缭乱。很多工具都是他听都没有听过的,而且Python脚本编写几乎如行云流水般。究其原因并非是这个leader一眼就能看出问题所在,有些问题他也是第一次遇到,但他在单位时间内尝试的次数特别多,就很快把问题给逼出来了。
非鸡汤:在排查问题和写代码上,如果你1个小时只能尝试一种方法,别人却能够尝试10次,那么别人就是比你牛。天下武功唯快不破,你后续写demo、查问题、工具的熟练程度都会决定你学习和尝试新事物的速度。
读书 & 看文档
学习还需要系统化。并非单靠看一篇文章就能明白原理。
个人强烈推荐:
https://www.safaribooksonline.com/
Safari应该是出版社联盟,IT类图书基本都能找到。两个小问题是:需要收费,一年大概400刀;图书都是英文的。 Safari Books Online的图书非常全,几乎涵盖绝大多数出版社,我们熟知oreilly, apress, manning, packtpub,addison wiley,而且更新速度非常快。另外Sarafi提供的Learn path也非常有用,能帮助你系统地了解一些技术,如blockchain,ai,machine learnging等等。现在视频资料也非常多,包括专家知识培训和一些技术大会的视频。



