对于一个软件工程师来说,***的挑战其实就是不断学习。不用怀疑,因为要想成为一个优秀的开发者,你需要经常学习新东西。我相信,每一个开发人员在C,Java,Linux或者SQL等方面都有一些基础足够你日常工作使用,但是,这些技术本身也一直在发生着变化。比如,在2017年,Java 9问世,虽然有很多人还在学习Java 8应该怎么用。还有,2017年发布了Spring 5.0,Spring Security 5.0 和 Spring Boot 2.0 等,相信这些你都已经列入了2018的学习计划。
简而言之,程序员应该能够快速学习。这种快速学习能力也是面试官在挑选候选人时所要寻找的。
如果你不是一个能够快速学习的人,那么你真的应该思考一下,编程这个行业到时适不适合你。但是学习新技术的秘诀是什么呢?程序员如何每年学习新的框架、库和新技术呢? StackOverFlow’s Developer Survey of 2017 也许可以给你一些答案。
下面是我列出的几条关于程序员如何快速学习新知识的方法,你可以用他们学习机器学习、大数据、移动开发。也可以用来学习一种新的编程语言,比如Rust, Groovy, 或者 Kotlin。也可用来学习一个新的框架,比如Spring Security 5, Angular JS 或者 React JS 。或者你只想学习一个简单的类库,比如Jackson。
一、参加在线课程
根据StackOverFlow 2017开发者调查显示,有64.5%的人通过在线课程学习新技术。本人其实也参与过一些在线课程,免费的付费的都有,效果还可以。国内也有类似的在线课程的网站,为了避免广告嫌疑,我就不在这里列举了。
既然这一项在所有开发者投票中排名***,你不妨试一试,万一适合你呢。在线课程***的好处就是有人给讲解,***的缺点并不是所有的东西都有对应的课程,还是需要结合其他的学习方法。
二、看书
这是另一种自己学习新技术或编程语言的***方法。事实上,这是我所遵循的最古老的也是及其有效的方法。我比较喜欢通过书籍的方式学习新知识,这样可以有足够的时间来思考。在我的博客中也有一个单独的页面记录着我在看的以及看过的书籍。
当我不想阅读的时候我也会选择听书。另外,听书软件默认速度非常慢,很容易让人睡着。我一般以1.5倍或2.0倍的速度听。
最近这一年来,国内的很多听书软件也渐渐的火起来了。我用过很多,一般会使用这些软件听一些文学类的或者杂谈类的内容。也是上周开始用软件听技术类内容,感受还不错。听书的好处就是不需要自己总结,讲书的人一般会给整理好,念给我们听。坏处就是没有太多的思考过程。
如果你正在寻找在2018应该读什么书,我建议从《Effective Java 第三版》开始,1.7日刚刚出版,目前国内好像还没有中文版。
三、线下课程
说实话,没有任何东西能比得上课堂上的学习,甚至虚拟课堂或在线培训也不行。为什么?因为当你参加一个真正的课程时,你遇到了真正的人,你进入了有利于学习的环境。你和真实的人讨论事情和问题。这意味着你正在做一个积极的学习,你的所有感官,例如眼睛、耳朵、嘴巴、身体和头脑都是活跃的。
这有助于快速学习,你也可以保持较长时间的学习知识。总之,如果你可以的话,你应该参加一个学院或培训学院,利用业余时间或晚上学习一项新技术。
四、参与开源项目
这是有经验的程序员保持自我进步的***方法之一。例如,如果您需要学习像Apache Spark或Hadoop这样的大数据框架,那么您也可以作为开源贡献者加入这个项目。
你不仅可以根据你的经验来帮助开源社区,而且也是学习这种新技术的很好的方式。通过和其他几个优秀的程序员交谈也是一个很好增加你的经验的方式。
我强烈推荐中级和有经验的程序员在2018加入开源项目。你也可以用同样的方法在2018学习Rust, Groovy 或者 Kotlin等语言。
五、编码训练营
这听起来像是一个新鲜事物,但在线课程和编码训练营已经比较普遍了。这更加适合没有经验的人。有很多人没有编程经验,现在可以更容易地过渡到职业生涯,成为一个开发者。
许多初创公司,事实上大的技术公司如谷歌和亚马逊也愿意接受训练营出来的学生。训练营的学生其实比应届高校毕业生更具备必要的技术知识。他们对数据结构以及算法等了解的更深入。对于开发工具,如IntelliJ、版本控制工具如Git,svn等掌握的更好。
总之,如果你想学习新的东西,或者改变你的职业生涯而成为一个程序员,编码训练营是***的启动方式。
六、参与在线编码竞赛
现在编码竞赛也比较流程,他也存在一些好处。通过他,你走出了你的舒适区,加速了你的学习。
举个例子,如果你想在2018年学习Python,那么不妨尝试使用Python语言参加有些编码竞赛。你不仅能快速学习所有的基本概念,还能提高你的编码意识,并获得一个非常你需要的真实体验。
七、参加线下会议
是的,参加会议的帮助很大,这就是为什么我鼓励java开发者加入当地的java社群。这些会议是你发现你附近的优秀的开发者的很好的地方。
这不仅为你创造了一个好的人际关系,而且你从与他们交谈中学到了很多东西。它们还为虚拟的编程世界添加了一个非常需要的真实元素。
如果你不是某个java编程社区的会员,我强烈建议你2018参加一个。
关于会议,我觉得有两种方式,***种是线下的,如QCon等。第二种也可以是在线的,如微信群等。只要是大家志同道合,可以交流,就是个好的方式。
八、参与黑客马拉松
这种形式的比赛是另一个快速一个新的框架或库的好方法。在黑客马拉松中,你需要在24到48小时内搞出些有用的东西。
有时候看起来很艰难,但是你一直在前进。黑客马拉松的好处,在于你可以提前为他们准备的,这就是你学习的开始。例如,如果你想使用机器学习算法建立一个原型,如图像处理程序,那么你需要在参加马拉松之前就了解机器学习。单纯的参与,可以给你一个理由去学习和掌握新的技术。并且可以在马拉松这个战场去实践他们。
九、创建博客
是的,一个博客也可以帮助你学习新的编程语言或框架。因为在写博客之前,你要开始你的研究,而这正是你学习的起点。
例如,我之前没有任何JUnit 5的知识,,但是当我要写关于他的文章的时候,我必须首先了解JUnit 5,这样我就会做一些研究。当我向其他人解释时,我往往学得更好,这就是为什么当我写博客文章时,我的大部分概念都会变得清晰,知识也会被填补。它还帮助我把知识保持的时间更长。
十、其他
每一个程序员都是不同的,对我有用的可能对你不起作用。有些程序员发现从书中学习很容易,有些人觉得网上课程更好。有些人喜欢创建真实的项目并在途中学习。
简言之,使用适合你的方法。说到学习,没有硬性规定。选一个你喜欢的。如果你在听音乐的时候学习得更好,那么你可以在学习的时候听你最喜欢的歌曲。
10种方法学习一项新技术,编程语言,框架或库
附录:StackOverflow 2017开发者调查