作为一个有理想的程序员,必读的书都有哪些?

作为一个有理想的程序员,必读的书都有哪些?
关注者
15,569
被浏览
1,693,695

220 个回答

被支付宝员工誉为“神一样的存在”的蚂蚁金服CTO程立(花名:鲁肃),在内部分享过他2018年的书单:“碎片化阅读永远无法建立对一个深度问题真正的、系统的理解”

1.《素数之恋》:保持好奇心

《素数之恋》是一本 400 页的厚书,目标是让非数学专业的读者可以理解这个数学中最深奥的问题。作者在序言中说道:“如果你读完我的书以后还不理解黎曼假设,那么你可以断定,你将永远理解不了它”,读完这本书后,深感此言不虚。

原打算每天晚上读两章当作休闲,结果压抑不住的好奇心总是让我再多读几章。这种欲罢不能的感觉,和小学时读《天龙八部》时一样。

2. 《刻意练习》:所有的天赋都来自于通过正确的练习对大脑布线的改变

2017 年元旦,始于钉钉群中的一句“苟日新、又日新、日日新”祝愿。带着这个愿望,拿了一本《刻意练习》看了起来。类似的励志书看了不少,原本也没有抱很大的期望,但一看就无法释手,一气读完。

本书可以用一句话概括,所有的天赋都来自于通过正确的练习对大脑布线的改变:确定一个明确的目标,找到一个正确的方法,专注地练习足够的时间与强度,能成为绝大多数领域的专家。从莫扎特、国际象棋世界冠军、王牌飞行员到诺贝尔奖得主,都是如此。

看完这本书,才知道过去在无效的学习上浪费了多少时间。

3. 《区块链核心算法解析》:把复杂问题以简洁+严谨的方式讲明白

2017年也啃了不少区块链的书,但其中高价值的不多。这本《区块链核心算法解析》是值得向工程师们推荐的一本。

区块链核心算法解析,其实讲的是分布式系统的核心算法。它从分布式系统最基本的两阶段协议、到 Paxos、到拜占庭协议、仲裁系统、到一致性和分布式存储,逻辑严谨。关键的关键是,它把各种臭名昭著的复杂问题以简洁+严谨的方式讲明白了。其中关于 Paxos 原理、算法与证明,是我这几年看到的无数版本中最简明易懂的。

4. 《商业的本质》:以一种更简单的方式看商业、看管理、看领导力

除了技术与英文外,为了匹配工作职责的一些调整,去年也开始通过读书给自己补一些商业的课。在读过的商业书中,我选《商业的本质》推荐给大家。作者是名门正宗的商业大师杰克.韦尔奇,十年前公司几乎人手一本他写的《赢》,十年后他的这本新书,是否会带给我们更深刻的商业洞见?

当然不可能因为读了这本书就摇身一变成为商业大师了,但大师的确让我开始以一种更简单的方式看商业、看管理、看领导力,更踏实地走在学习与实践的路上。

鲁肃说:“相比铺天盖地的碎片化信息阅读,我更喜欢读书。碎片化的文章永远无法让人建立起一个对有深度的问题的真正的、系统的理解,比如 AI、比如区块链、比如黎曼假设。黎曼假设据说是数学中最深刻的未解问题,它说的是“Zeta 函数的所有非平凡零点的实部都是 1/2”,仅仅想搞清楚这句话到底是什么意思,它为什么那么重要,就足以激发无限的好奇心了。”

除了技术本身,也有很多有意思的领域值得关注,程序员在工作中保持学习状态、保持好奇心,也有很多“课外书”值得一读~

我说几个对我影响最大的,和代码没有什么关系,主要是思想上的。其实作为程序员,很多知识是可以通过具体有针对性的文章/文档和代码直接吸取的,但是有些思想,必须是要通过书本学习才能理解的。

1,设计模式。

这本书几乎被吹烂了,我也想说这本书写的真烂,作者真的不会写书。但是它带来的对之前代码的总结,构成了程序员们跨越语言的元语,所以不管从哪个角度来说,永远不会过时。

我的一点理解:设计模式其实就是告诉你如何根据一个固定的需求,在设计中来控制不变的部分,释放变化的部分。从阅读上来说,有很多对设计模式的进阶解释书籍,什么head first系列,可能对于大家的理解会更容易,就好像看文言文和看辅导材料的差异。但是我当初看的是这个原始版本。你们可以去挑选自己喜欢的,我也不是卖书的。

不管你看哪个版本,设计模式都是你应该在职业生涯中越早掌握越好的东西。这个对于程序员来说,应该是和古人的千字文三字经一样的东西。

2,人月神话。这本书真的很好,它的好不是在于告诉你怎么搞软件工程,而是告诉你为什么要有软件工程。从这个角度上,人月神话就是软件工程的《自然原理》。人月里面介绍的软件工程本身已经过时了,但是很多今天的程序员其实并不真正理解我们为什么需要软件工程,更先进的软件工程的定义是什么,为什么需要这样演化。如果可能,我建议你多读几遍这个。

PS:软件开发的效率效率随着人数增长线性上升,但是通讯成本随人数增长指数上升。我当时看到这一段解释简直像被雷劈了一样。

3,应用密码学。这本书对当时的我影响非常大,远远超出书的内容本身。它其实在讨论的是架构设计中一个非常重要的问题:如何在一个设计的理论强度,现实需求以及实际资源之间获取一个平衡。老实说,我没有特别去研究这个书里的算法和各种攻击逻辑,但是这个思路对我后来的设计理念影响极大。

这本书写的非常有趣,你当科普看也没有什么问题。虽然它的数学部分其实并不简单,但是完全跳过也不影响。网上有好几本同名的教材,别搞混了。这一本是我见过的能把一个复杂问题写的最有意思的技术书籍。

4,Oracle专家高级编程。

Oracle数据库今天已经不是程序员领域的一个显学。但是这本书本身的价值远远超过了Oracle数据库本身。老实说,95%以上的程序员连execution plan都读不懂(甚至他们可能都未必见过),但是跳过这一步,要真正理解现在流行的No SQL以及Hadoop,Spark的优化模式并不容易。

数据库是一时的,但是访问数据是永恒的。

这个作者Tom也是被认为世界上最好的Oracle数据库专家以及写作者,这本书非常的深入浅出。Tom也是大概是上面这些作者里面级别最高的(Oracle的全球关系高级副总裁)。深研数据库在今天的意义已经没有当年那么大了,但是如果你没有一个具体的case,是很难真的理解为什么今天会需要No SQL这种东西的。以及很多Hadoop以及Spark的设计理念。

这就好像很多程序员跳过传统的软件工程,直接上XP经常荒腔走板一样。

反正我一直觉得,在我职业生涯的前2年读过的这几本书对我的影响一直延续到了20年之后。