有理想、有思想、很优秀的程序员,必读的书籍有哪些?
在一个名为的网站上,有一份高质量的书单,里面包含了所有的经验和想法。我来和大家分享一下:
本文将程序员需要掌握的关键知识归纳为三大类、19个关键概念,并提供了掌握每个关键概念所需的入门书籍、必读书籍和扩展阅读,旨在成为最好、最全面的程序员必读书目。
一名优秀的程序员应该具备两种能力:
专业[软件开发]素质:
和其他能力一样,编程能力和软件开发素养来源于项目经验和书本知识。项目经验因人而异(不同领域的程序员,项目差别很大);但书本知识是通用的——尤其是经典书籍,可以拓宽程序员的视野,提高程序员的成长速度。
在过去几年的学习和工作中,我阅读了大量编程/软件开发方面的书籍,随着阅读量的增加,我意识到:
意识到这两点之后,我开始思考一个非常功利的问题:如何从尽可能少的书籍中获取尽可能多的关键知识?换句话说:
这就是本文的出发点——我试图通过本文来回答上述两个问题。
在进入必读书单之前,我先介绍一下这份书单的选书标准和领域选择标准。
选书标准
1.必读:哪些书是必读的?如果有一本书是你学习某项技术时不能错过的,那么这本书就是必读的书——例如Java on Java,CLR via C# on C#;
2. 注重实践而不是理论:因此,此书单不会收录过于理论化的书籍。
3. 入门-必读-扩展:必读书籍的问题在于:1. 大部分书籍并不适合入门阅读;2. 内容不够全面。考虑到没有入门阅读和扩展阅读的阅读书单是不完整的——书单中的每个关键概念都会由一本入门书籍、一本必读书籍(有时入门书籍和必读书籍是相同的)和几本扩展阅读书籍组成。
概念选取标准 全面:全面涵盖软件开发中的重要概念; 通用:适用于每一位程序员,不论具体领域; 重基础,但不要太深:优秀的程序员需要有良好的计算机科学基础,但程序员不需要掌握太深的计算机科学知识。以算法为例,每个程序员都应该掌握排序、链表、堆栈、队列等基本数据结构和算法,但计算几何、线性规划、网络流等算法不一定是每个程序员都掌握的;
基于这些标准,我把程序员应该掌握的关键概念分为三类:编程、软件开发、个人成长,每类又由若干个关键概念组成。
初学者书籍
【编程】
C:C 和指针
C++:C++编程原理与实践
Java:Java核心技术(第9版)
C# :
:DOM 编程艺术(第二版)
:
【软件开发】编程实践:编程实践面向对象编程:头部设计模式重构:重构软件测试:如何做项目管理:极客与团队职业发展:程序员修炼之道:从小打工者到专家大师的话:奇思妙想:15位计算机天才及其重大发现界面设计:一本适合每个人的设计书交互设计:通用设计原则【个人成长】职业规划:软件开发者路线图思维方式:程序员思维修炼:开发认知潜能的九堂课求职面试:金领简历:敲开苹果、微软、谷歌的大门英语写作:你唯一需要的书必读书籍
【编程】
C:C 编程语言(第二版)
C++:
Java:Java(第二版)
C#:通过 C# 进行 CLR(第 4 版)
: 语言本质
:参考手册(第 4 版)
【软件开发】编程修炼:代码百科全书(第2版)面向对象程序设计:设计模式重构:修改代码的艺术软件测试:测试项目管理:人月神话职业发展:程序员的职业素养大师的话:编程人生:访谈15位软件先驱界面设计:认知与设计:理解UI设计准则(第2版)交互设计:交互设计的精髓(第3版)【个人成长】职业规划:软件开发者路线图思维风格:如何做事最佳求职面试:程序员面试经典(第5版)英文写作:风格的要素
这份阅读清单涵盖了软件开发各个关键领域的入门和必读书籍。我相信它能满足大多数程序员的需求。无论你是初学者还是高级程序员,你都可以从中受益: