近日,来自Stripe的程序员Julia Evans在Twitter上问了一个问题:“你们是如何进行自我学习的?”很多人给出了他们的回答,总结起来就是阅读博客、参加技术大会、读书、利用闲暇时间观看演讲视频、使用感兴趣的技术开发实验性项目等。
有意思的是,这些事情几乎都发生在工作之外,而且相信很多人也是这么做的。但问题是,为什么有些非常优秀的程序员并没有在工作之余做这些事情,或者至少没有经常这么做,但仍然不影响他们成为大神级人物呢?带着这个问题,Julia在Twitter上与人们展开了交流,最后总结了以下几点。
第一,在工作中学习编程语言和框架。以Julia为例,她在工作中需要用到Go语言,她也很喜欢Go,只是她并不想花费太多个人时间,因为她觉得自己完全可以在工作中通过编写代码,阅读别人的代码,让别人审查她的代码等方式来学习Go。虽说在工作之外学习编程语言不是什么坏事,但既然可以在工作中更高效地学习,那为什么不直接这么做呢?
第二,选择可以从中学到东西的项目。 Julia在过去三年学到了很多东西,比如Scala、Ruby、Go、Hadoop、Java并发编程、Java诊断、AWS、网络、容器、服务发现等。人们经常会说:“我们使用了某某技术,你需要具备这些方面的经验才能胜任这份工作。”但实际上,Julia在掌握这些技术和知识之前,都没有接触过这些东西。所以,在一开始你不一定要是某方面的高手,但是你要学会成为高手,选择那些可以从中学到东西的项目。
第三,向高手学习。当Julia遇到高手时,就会观察他们是怎么做事情的,然后模仿他们,或者向他们请教。当她开始独立负责新的项目时,就会谨记前辈们的教导,让项目进展得更加顺畅。
第四,查看每一个Pull Request。查看别人的PR也是很有帮助的,通过跟踪这些PR可以知道别人在做什么,以及他们是如何解决问题的。
第五,阅读源代码。阅读源代码是一个非常重要的学习途径,很多系统并没有完备的文档,如果不阅读源码就很难搞清楚内部的细节。阅读源码可以了解它们内部的原理是什么,以及为什么要那么实现。
第六,跟踪你无法修复的bug。有时候,你面对bug时会束手无策,当别人把问题解决掉之后,你会迫不及待地想知道他们是怎么做到的,在以后碰到类似问题的时候就知道该怎么处理了。
文章来源:极客时间《极客视点》
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。