成为更优秀程序员的关键:更多的阅读
虽然我一直以来都很享受于读书,但我总是很难挤出时间来阅读。而当真的空闲了,我通常会去阅读小说、自传,或一些怪癖但有趣的东西。我的 Kindle 电子书阅读器上到目前为止都是一些我最喜欢的技术。我仍然觉得不可思议的是,通过一个小小的设备我就能随身携带一个图书馆,只要电池能够续航一段时间(例如一个月)。
但是我在技术上的阅读真的很缺乏。当然,我也读过经典名著,例如《Clean Code》,但仅此而已。我一直是一个“有什么问题就谷歌”的人。技术书籍太枯燥乏味了!所以通常我会避开阅读教材参考书。
直到 8 个月前。在我计划去周游时间一年的最后几星期工作中(我是从秘鲁开往玻利维亚的公交车上写的这篇文章),因为任务基本上完成了,所以我有比平时更多的空闲时间,于是我决定花时间去阅读一些东西。我们公司有一个 Safari 在线图书订阅,这基本上允许我们无限制地访问所有已经写好的编程书籍,然后一切都改变了。
事实证明,你从互联网上得到的材料和著作的质量并不怎么好。大多数作品只是孤立的一个片段“这里怎么做到X”。没有故事线索能让你思考怎么应用到自己身上让自己变得更优秀。在写书的过程中,你必须得想好线索,必须通过编辑的审阅,并且请其他的技术人员仔细检查,在作品问世之前尽可能地提升质量。
这也证明,大多数书其实没有那么无聊!当然不可否认也有一些滥竽充数的,但快速看一下评分和评价应该会有有助于你去伪存真。书籍大多数还是挺引人入胜和有趣的。这是学习的一种迷人方式。
对我来说最大的变化是,我是真觉得我因为抽出时间来阅读,比方说,一个月吃透一本书,而变成了一个更好的开发人员。我读过有关微服务的内容,感觉现在能够更好地知道自己在谈论什么,并且我知道我可以回去参考一下,每当我需要帮助的时候。通过花时间坐下来涉猎 Clojure 方面的教材,即使只是学习基础知识,也有助于我能够更深入地谈论函数式语言,以及 Clojure 用到哪里更好。《7 Concurrency Models in 7 weeks》是一部很有启发性的作品,特别是作为一个 Java 开发人员,想要用不同的方法来多线程编程(Java 中固有的缺陷)的话。
当然,大部分这些书籍中的信息可能在网上的某个地方也有。但是,除非你需要特定的信息,否则你就不会想到要去网上搜索和阅读,也不会得到周边的相关信息。选择看书可以将你从被动的学习方式(只在需要的时候去获取信息)转变为主动的学习方式(在阅读的过程中,你会接收到各种不同的以前没有见到过的信息)。这非常重要,尤其是对职业发展。
最重要的职业工具是持续的学习。特别是我们这一行,因为一切总是在不断的变化:新的语言,新的范式,新的框架总是不断地冒头。由于数量太多用膝盖想想也不可能总是保持优势。你可以作为一个开发者奉献自己,白天工作,然后晚上阅读和编程,但是你依然不可能掌握所有。
幸运的是没有人期待那样。然而,我常常看到开发人员,特别是初级的开发人员,在面对令人气馁的任务时,反而恢复到一种被动的学习模式。他们不求学习新的东西,除非有人(例如团队的领导者)引入一些新的内容。只在必要的时候学习。这是开发人员保持平庸的“好”方法。
学习呈现多种形式。重要的是要选择你喜欢的主题,然后至少花上少许时间来钻研。从现在开始:选择一本教材,给自己设立本月阅读目标。不知道该读什么书?那行,我给你推荐一下:
- 《Clean Code》 by Robert Cecil Martin
- 《7 Concurrency Models in 7 weeks》 by Paul Butcher
- 《Effective Java》 by Josh Bloch
- 《Building Microservices》 by Sam Newman
本文文字及图片出自 www.codeceo.com
你也许感兴趣的:
- 有追求优秀之心的程序员
- 距离成为一个优秀程序员 你还差这些
- 成为优秀程序员的10条黄金法则
- 成为优秀程序员的十个Tips
- 读薄《编程珠玑》
- 如何正确的阅读源代码?
- 【外评】电脑从哪里获取时间?
- 【外评】为什么 Stack Overflow 正在消失?
- Android 全力押注 Rust,Linux 却在原地踏步?谷歌:用 Rust 重写固件太简单了!
- 【外评】哪些开源项目被广泛使用,但仅由少数人维护?
虽然我同意持续学习很重要,堪称非常重要。
但是那个举例可不对,不是应该去不断面对新东西,然后想新框架之类的恐惧,而是该去触摸下本质的东西。
改变的越多,不变的越多。
止于技者
近乎道者