“我当年毕业的时候总结了一个公式:第一份工作的月薪=大学四年买过的技术书籍价格的总和。”
读好书是如此的重要,因为好书往往带领你去到更好的书,更大的世界。
以下内容,摘自《暗时间》第2版(2022年5月上市)中的一篇长文《怎样花两年时间去面试一个人》。
问:找工作的首要原则是什么?
答:弄清雇主的需求到底是什么。
到底什么特征才是既通用,又能够有效地鉴别高低应聘者的特征呢?这个特征必须不像博客那样难以实现,同时又必须有足够的区分度。
有的地方在要求填写简历的时候必须填上平时都访问哪些技术网站。恩,很不错的尝试,可区分度仍然还是不够,因为上网站上查东西毕竟只占现阶段大多数应届生的少数信息来源,特别是当我们看重得更多的是应届应聘者的系统性的知识基础的时候,网上的东西虽然丰富,但属于提高班,也更为琐碎,什么是更系统的知识来源呢?答案其实大家都知道——
书。
我一向认为,很多时候,是否好好看完一本好书,对一个人的提升往往能达到质的区别。就算不好好看完一本好书,马马虎虎看完,只要书是真的好书,也肯定会有很大的提高。我在面试的时候就经常询问对方看过哪些技术书籍,经常上哪些网站,订哪些博客。这里头尤其数书籍这一项的区分度最高。此外,好书和坏书的差别,从本质上,就是学习效率和大方向的差别。一本烂书可以浪费你半年的时间,但一本好书却可以为你带来真正扎实的基础和开阔的视野。人们常常用“内功”来形容扎实的基础,认为学好了内功以后学什么都快,其实一点没错,好的“内功”书不仅讲清楚深刻的原理,而且指明技术的本质,刻画领域的地图。好的书抓住不变量,让人能够触类旁通。好的书不仅介绍知识,而且阐释原则,介绍那些万变不离其宗的东西。读烂书浪费时间,但读好书却节省时间。
象牙塔内的学生受到视野的限制,往往择书不慎,事倍功半,烂书不仅浪费时间,还会打击人的积极性,让人对知识心生恐惧,认为很难掌握,殊不知只是作者没有讲好(或者没有翻译好)。因此,为招聘头疼的公司完全可以给出“应聘俺们公司前必读的十本书”,也不一定要每个公司都不一样,在某个技术子领域有影响力的人,或者创始人们,可以来定义具有代表性的书单。
我们姑且把这个计划叫做“书单计划”,容易看到“书单计划”具备以下几个卓越的优点:
- 清晰、明确。完全可度量。
- 防伪:读没读过,随便一问便知。而正因为应聘者也知道这事不像实习经验可以忽悠,所以也不敢乱往简历上捅词。
- 不在乎是否“泄题”:书单完全公开的,无所谓,本来就是要你去读的。想背题?背书吧。真能背下来说明认真看了。
- 管你用心不用心读,只要读了,读完了,就有区别。真正的好书,你想不被吸引都难。据我观察很多人就是不知道该去读什么书。
- 不存在“怎么做”的障碍:所有人都知道怎么读书——一页一页读。
- 不需要招聘者投入精力:书单在此,就这么简单,您看着办。
- 评估的负担很大程度转移到了应聘者的身上:是不是认真看完了,有没有心得体会,您自己掂量。没看完别来找我们。
“书单计划”能很大程度上起到强鉴别器的作用,看了就是看了,必然能学到东西,没看就是没看。知道和不知道,区别是本质的。其实很多企业内部培训,根本上其实还不就是叫员工去看之前没看过的书或者资料嘛。最后,除了鉴别作用之外,它还是一个清晰促进的目标,是完全不花精力的培养。
当然,“书单计划”的背后是另一个悲剧的现实,如果不是因为这个现实,这个计划也完全没有必要,那就是,中国IT大学教育当中要求要学的书,和企业真正需要你去读的书相比,不是完全不够用,就是写的不够好,或者更悲剧的就是根本用不上,所以在这个大背景下出来的牛人都是自己淘书自己学的。微软高级开发测试工程师,《Windows用户态程序高效排错》作者熊力就在微博上说过:“我当年毕业的时候总结了一个公式:第一份工作的月薪=大学四年买过的技术书籍价格的总和。”
列一下我所认为的,你面试微软前必须要读的十本书:
- Code: The Hidden Language of Computer Hardware and Software (《编码的奥秘》)
- Computer System: A Programmer’s Perspective (《深入理解计算机系统》) / Windows via C/C++ (《Windows核心编程》 / 《程序员的自我修养》
- Code Complete 2(《代码大全》)/ The Pragmatic Programmer (《程序员修炼之道》,我也把这本书称为《代码小全》)
- Programming Pearls (《编程珠玑》) / Algorithms / Algorithm Design / 《编程之美》
- The C Programming Language
- The C++ Programming Language / Programming: Principles and Practice Using C++ / Accelerated C++
- The Structure and Interpretation of Computer Programs (《计算机程序的构造和解释》)
- Clean Code / Implementation Patterns
- Design Patterns (《设计模式》) / Agile Software Development, Principles, Patterns, and Practices
- Refactoring (《重构》)
(注:1. 以上同一条目下用“/”隔开的表示任选,当然你也可以都读了,相信我,时间是足够的。2. 读这些书并不意味着逐字逐句从第一页读到最后一页——当然你也可以这么做。怎么是聪明高效的读法,可以参考我之前写的关于如何阅读和查找/鉴别书籍/资料的博文)
注意:以上是我个人认为你面试微软开发职位前必须要读的10本书,它不代表我的雇主的观点。它也只是一个初步的书单,肯定会受到我个人经验和眼界的限制。欢迎大家提意见。
此外,IT不同子领域的必读书单可能千差万别,所以在发布之前我把这篇文章发给了一些朋友,他们给出了自己的书单(你是不是能看到一些有趣的共同点呢)😊
云风(中国游戏编程先行者,前网易游戏部门资深程序员,简悦创始人):
如果面试,我会挑以下的我自己读过的书,让人选择他也读过的部分,再了解他对这些书的理解。这些书其实本质上就是两类,对所面对的东西(程序语言也好,操作系统也好,底层设施也好)本身的理解程度。以及另一类:对设计思想和原则的理解:
- C++编程思想
- Effective C++
- 深度探索C++对象模型
- C++语言的设计和演化
- C专家编程
- C陷阱与缺陷
- C语言接口与实现
- Lua程序设计
- Linkers and Loaders
- COM本质论
- Windows核心编程
- 深入解析Windows操作系统
- 程序员修炼之道
- 代码大全
- UNIX编程艺术
- 设计模式
- 代码优化:有效使用内存
- 深入理解计算机系统
- 深入理解LINUX内核
- TCP/IP 详解
冯大辉(前丁香园CTO,无码科技创始人):
- 软件随想录
- 黑客与画家
- 重来
- UNIX编程艺术
- 编程人生
洪强宁(前豆瓣技术总监,爱因互动公司创始人、CTO):
StackOverflow上有一个程序员必读书单帖子,这里仅列出top10,更多参考这里。
- Code Complete 2
- The Mythical Man-Month (《人月神话》)
- Code: The Hidden Language of Computer Hardware and Software (《编码的奥秘》)
- TAOCP (不解释)
- The Pragmatic Programmer (《程序员修炼之道》)
- Design Patterns (《设计模式》)
- The Structure and Interpretation of Computer Programs (《计算机程序的构造和解释》)
- Refactoring (《重构》)
- The C Programming Language
- Introduction to Algorithms (《算法导论》)
郑昀(前窝窝团研发副总裁):
- 工程师入门:
- Code Complete 2
- 程序员修炼之道
- 深入理解计算机系统
- 工程师升级:
- 设计模式
- 重构——改善既有代码的设计
- 工程师转型:
- 快速软件开发——有效控制与完成进度计划
- 人月神话
- IT项目管理那些事儿
- 软件随想录
- 最后期限
- 走出软件作坊
- 你的灯亮着吗?——发现问题的真正所在
张峥(前微软亚洲研究院副院长):
- Algorithms (by Sanjoy Dasgupta, Christos Papadimitriou and Umesh Vazirani)
- Data Structure and Algorithms
- The C Programming Language
- The Design of the UNIX Operating System
- Compilers (龙书)
- Computer Architecture: A Quantitative Approach
- Flow
- Outliers (why hard work and luck are both important)
邹欣(前MSRA创新工程中心首席研发经理,现任优快云副总裁):
关于创新的书籍(有关创新的书):
- The Myths of Innovation
- The Innovator’s Dilemma
- The Innovator’s Solution
- Crossing the Chasm
- Inside Intuit
- 盛田昭夫
- 杰克·韦尔奇自传
- 梦断代码
- Innovation
- 浪潮之巅
关于“精通”的一篇博客《技能的反面:魔方和模仿》:
技能的反面 - 魔方和模仿 - SoftwareTeacher - 博客园
在我教的《现代软件工程》课上,除了教科书,每个学生要看另一本相关的书籍并写读书分析。这个博客有一些同学的读书报告:
《人月神话》有感,好书,推荐 - OMG! 日记 - 博客园
读好书是如此的重要,因为好书往往带领你去到更好的书,更大的世界。
《暗时间》第2版:暗时间(第2版) (豆瓣)
试读:《暗时间(第2版)》试读