程序员如何自我学习?阿里资深技术专家这样做

栏目: IT资讯 · 发布时间: 6年前

内容简介:互联网信息技术发展太快,作为一个优秀的程序员,必须不断学习,单纯靠积累经验是无法长久的,技术淘汰的速度远大于经验积累的速度,因此,更新知识这件事就变得相当重要。很多人都说程序员的薪资水平不错,媲美医生和律师,而程序员和医生、律师的不同在于持续学习上。不是说医生和律师不需要学习,医生、律师能够凭之前的case积累深厚的经验(这也是大家看病更愿意相信年纪大的医生的原因之一),而且这些经验很大程度上可以被复用。程序员这个职业则不同,主要是因为行业信息更新太快,积累的经验很快就不适用了。

摘要

互联网信息技术发展太快,作为一个优秀的程序员,必须不断学习,单纯靠积累经验是无法长久的,技术淘汰的速度远大于经验积累的速度,因此,更新知识这件事就变得相当重要。

程序员如何自我学习?阿里资深技术专家这样做

为何要持续学习,靠经验积累不行吗?

很多人都说 程序员 的薪资水平不错,媲美医生和律师,而程序员和医生、律师的不同在于持续学习上。不是说医生和律师不需要学习,医生、律师能够凭之前的case积累深厚的经验(这也是大家看病更愿意相信年纪大的医生的原因之一),而且这些经验很大程度上可以被复用。程序员这个职业则不同,主要是因为行业信息更新太快,积累的经验很快就不适用了。

举几个例子:

如果你是 Java 程序员,且非常擅长Struts + JSP开发,解决了很多Struts框架的问题,但今天,这部分知识已经过时了,需要重新学习。如果仍坚持使用之前的技术,会给同事和公司带来很大的技术负担,大家回顾一下自己从毕业到现在有多少技术都已经看不到踪影了,就阿里巴巴内部来说,很多技术也都已经被淘汰不用了。

就编程来说,有很多编程语言和门第之争,你在这个语言积累的经验到另外一个语言就未必行得通。我很少听说Java组招一个.Net的资深工程师,即便有,那也是给产品做.Net SDK client的;软件的经验积累还会体现在一个架构设计上,很多同学会说经验积累得多,架构就设计得好,这在今天来说也未必。大家都在云上啦,云上提供的服务基本都是类似的,架构思路和使用的云上服务基本一致。

一、 工具 要非常熟练

有一次和几个Google的工程师吃饭聊天,问他们遇到的哪些人比较牛? 一个工程师说他的leader太牛了,在帮助他找bug的时候,工具和debug使用的熟练程度让人眼花缭乱。很多工具都是他听都没有听过的,而且 Python 脚本编写几乎如行云流水般。究其原因并非是这个leader一眼就能看出问题所在,有些问题他也是第一次遇到,但他在单位时间内尝试的次数特别多,就很快把问题给逼出来了。

在排查问题和写代码上,如果你1个小时只能尝试一种方法,别人却能够尝试10次,那么别人就是比你牛。天下武功唯快不破,你后续写demo、查问题、工具的熟练程度都会决定你学习和尝试新事物的速度。

二、读书 & 看文档

日常读书在于积累,利用平时零碎的时间,阅读一个章节甚至是一段代码,都会对你有所启发。“读书破万卷,下笔如有神”是有一定道理的,阅读时养成做笔记的习惯,做笔记一方面加深了印象,另一方面二次阅读时在笔记的基础上,自己会有更深的理解。我整理出一篇阅读笔记,详细说明了从职场新人到进阶程序员,从Spring到源码分析所要阅读的书籍,大家不妨参考一下(阅读地址:https://www.jianshu.com/p/2d6206e77cdd)。

除了图书,我们还需要关注文档,现在很多框架和技术的参考文档已经非常好了,文档的质量也越来越高。如果你还停留在文档就是几页介绍和demo,那你的观点可能要改一下,你看CNCF上的项目,几乎每个项目的文档质量都是非常高的。现在很多项目不是一两个程序员单打独斗,而是一个团队加上像github那种协作非常好的平台,所以文档和代码、新特性不匹配已经非常少了,很多issue都是关于文档的。

三、视频学习

视频和图书有什么区别?

首先图书编写比较费时,图书作者要有一定的写作水平,这点对技术厉害但写作不在行的人要求比较高,他需要用文字充分表达自己的想法。而且不少人对大段文字,尤其是理论和学术很强的图书比较过敏,主要是因为文字太多,没有什么代码,又不像小说有情节,不犯困反而很难。反之,视频就不一样,PPT制作得非常好,而且有动画,相关的说明贴切,更容易学习。

视频还有一些文字表达不了的功能:图书中只会贴一段代码,而视频中这些代码是需要输入的,这时你会发现作者很多的黑科技或者黑技巧,你也能学习到。如一些入门书籍中,一般只会说明或者引用,而教学视频中,会打开对应的网站,给你列举一些重点特性。另外图书中一些比较容易忽略的东西,在视频中可能会被很好地补充。而且很多的视频制作者,本身是来自框架和技术的开发团队,而不是第三方的图书作者,所以新鲜度和技巧性都非常明显。

四、技术新闻,twitter上技术大牛 & 参加技术大会

前面介绍的图书、文档和视频教学,让我们可以了解和深入某一项技术,对付工作应该没有问题。但如果要紧跟潮流,获取灵感,可能还需要关注一些技术新闻,技术新闻没有很好的地方平台统一管理,相对凌乱一些,你需要有自己的方法。如果你持续关注某一技术,最好加入该技术的Slack或者gitter讨论群,大家都会在群里将相关的好新闻、技术文章进行分享。

如果时间和金钱都允许的话,个人建议可以参加技术大会,毕竟现场氛围是不一样的。2-3天内,不用工作,不想其他事情,围绕这个话题,而且keynote,和众多同行在一起,这种感觉是不同的。你需要坚信你找对了一个方向,让你更有动力深入了解下去,技术大会有很多的展台,将这个行业非常优秀的企业和技术聚集起来,也是非常不容易的。

五、做项目,写Demo,看源码

前面说了学习,但是程序猿不写Demo是不行的,项目中可以考虑尝试新的技术。我们现在推行微服务,所以技术栈还是有自由度的,就看你能否hold住。不一定所有的技术都能用到项目中,有些是启发性的或者触类旁通的,你需要写Demo,磨磨刀没有错的。文章前面说过,工具要非常熟练,不然一个demo花掉一个小时不值得。读了很多,看了很多,如果再用代码辅助一下,会更好。我不是说这些知识都是为了代码,不少是为了架构的,比如,学习ES 6 + React,如果没有代码,很难想象要如何掌握这个知识。

看源码是非常重要的一个技能,至少你code review技能提升,但成本确实高。个人是对Kubernetes还算比较了解,但是让我看Kubernetes源码,压力很大,尤其是不擅长的领域。看Spring Fu的源码没有问题,但是要看Istio和Envoy源码,压力太大,但是你如果决定投入,看源码帮助还是很大的。

项目中多尝试一下你学到的新知识,不能惯性使用你熟悉的技术,要知道你熟悉的东西很快会被淘汰,被淘汰后再调整就来不及了。多写一些demo,多磨磨刀,对你本行业的技术,一些源码还是要能看懂的。跨界技术,阅读源码量力而为,让Java程序去看JS框架源码或者C++源码,是需要心理准备的。

六、如今阅读的人少了

看到youtube上一个技术人员讲述阅读的观点,还是比较独特的。 其实现代人阅读量是比以前多,每天打开手机,各种新闻、文章、视频和朋友圈,阅读量相较以前变大了。对比图书这类纸质阅读,这些知识生命周期太短,而且营养不高,这也是为何大家觉得阅读少的原因,没有帮助你增长知识。

如果你不是产品经理或者需要对行业进行分析,就技术人员来说,新闻类app对你来说可能用处不大。 这些新闻都是帮助你找找聊天话题,做为饭后谈资,没有什么大用,反而浪费你不少时间,你可能半个小时都在刷新闻,而且现在新闻都有智能算法,保证能黏住你。大家都在抢用户时间,他们可不会在乎你的知识进步,就是让你停留时间长点,多看一些广告。

七、适当的硬件支持

进办公室看一下同事的电脑,你就大概能区分一些职业。用13寸的MacBook Pro或者Air,绝对不是Java程序员。如果是Golang或者C++程序员,一定不会用JetBrains的IDE工具,基本都是Editor类等。对硬件建议仅仅适合Java类的程序员,硬件好点是让你速度更快。

最后

很多人天天嚷嚷着学习进步,却因交际圈、时空等因素阻碍,继续在原地踏步,所以说有一个高质量、有追求、有氛围的圈子是非常重要的。我们现在回过头来看学生时代,高三最苦却很充实,大学时间很充裕却很迷茫,这是为什么,答案不言而喻。我一直都相信环境会改变人,身边的人会造就你,当你发现你在玩游戏刷抖音的时候,而你的同伴却在提升自己,你并没有想象的那么开心,这就是影响力!

为了让学习变得轻松高效, 现在给大家提供一个学习平台,让你在实践中积累经验掌握原理,在交流中提升自己积攒人脉。当你遇到的人都是优秀架构师、资深架构师,有一天你也会成为其中的一员,你需要更加明确自己的方向,更加坚定自己的决心。现在立即加入 Java后端技术群: 819940388 或关注 微信公众号:Java资讯库,回复“架构”, 免费的大型互联网Java面试视频分享给大家。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java语言程序设计

Java语言程序设计

(美) Y. Daniel Liang / 李娜 / 机械工业出版社 / 2011-6 / 79.00元

本书是Java语言的经典教材,畅销多年不衰。本书全面整合了Java的特性,采用“先讲基础”的教学方式,循序渐进地介绍了程序设计基础、面向对象程序设计、GUI程序设计等。另外,本书还全面且深入地覆盖了一些高级主题,包括算法和数据结构、并发、网络、国际化、高级GUI、数据库和Web程序设计等。 本书中文版由《Java语言程序设计 基础篇》和《Java语言程序设计 进阶篇》组成。基础篇对应原书的第......一起来看看 《Java语言程序设计》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具