七:程序员必读书单

作者:NiceCui

原稿链接:http://lucida.me/blog/developer-reading-list/

关于

正文将程序员所用控制的重要性知识总结为老三死类19只举足轻重概念,然后被来了左右每个重要概念所要的入门书籍,必读书籍,以及延伸阅读。旨在成为最好最健全的程序员必读书单。

前言

Reading makes a full man; conference a ready man; and writing an exact
man.

Francis Bacon

美的程序员应该有所简单者力量:

  • 良好的先后设计能力:
    • 控制常用之数据结构和算法(例如链表,栈,堆,队列,排序和散列);
    • 明亮计算机对的主导概念(例如计算机系统结构、操作系统、编译原理同处理器网络);
    • 习至少少派别以上编程语言(例如C++,Java,C#,和Python);
  • 专业的软件开发素养:
    • 备不错的编程实践,能够编写而测试(Testable),可扩大(Extensible),可保障(Maintainable)的代码;
    • 把握客户需要,按时付客户所要之软件出品;
    • 略知一二现代软件开发过程被之中坚概念(例如面向对象程序设计,测试驱动开发,持续集成,和不断交付等等)。

同其它力量同样,次第设计能力和软件开发素养源自项目阅以及书本知识。项目阅因人而异(来自不同领域的程序员,项目差异会很特别);但书本知识是相通之——尤其是藏书籍,它们还能够加大程序员的视野,提高程序员的成长速度。

以过去几乎年的念和劳作着,我读书了大气之主次设计/软件开发书籍。随着阅读量的增强,我发觉及:

  • 经书籍需要不停为重读——每一样坏重读都见面发出新的体会;
  • 书本并非读的越多越好——大多数书就是藏图书被之概念延伸(有时甚至是照搬);

发觉及马上半碰以后,我起思考一个好功利的问题:哪自尽可能少的写被,获取尽可能多的重点知识?转移句话说:

  • 好好的程序员应该控制哪些重大概念?
  • 怎样书来可以帮助程序员掌握这些主要概念?

顿时即是当下首文章的视角——我打算透过程序员必读书单眼看首文章来报上面两只问题。

标准

进去必读书单之前,我先行介绍下书单里的书籍选择正规和领域选择正式。当然你啊点击这里直跨越反至书单开始读书。

图书选择专业

  1. 必读:什么是必读书籍也?如果念某起技术来一致本书无论如何都未能够去,那么就仍开就是必读书籍——例如Effective
    Java于Java,CLR
    via
    C#于C#;

    • 注意自己从没运用“经典”这个词,因为经典处理器书籍往往和计算机科学关系在一齐,而且经典往往用10年还还丰富之光阴展开考验;
  2. 讲究实践,而非理论:所以这开就不见面蕴藏过于原理性的图书;
  3. 入门—必读—延伸:必读书籍的题材在于:1. 大多不合乎入门;2.
    请勿敷完善。考虑到无入门阅读和延长阅读之读书列表是不完全的——所以书单中每个重要概念都见面出于同样仍入门书籍,一本必读书籍(有时入门书籍与必读书籍是千篇一律本),和若干延阅读书籍所结合。

概念选择正式

  1. 全面:全面覆盖软件开发中一言九鼎的定义;
  2. 通用:适用于各级一个程序员,和领域特定方向无关;
  3. 注重基础,但非过分深刻:优秀之程序员需要良好的微处理器是基础,但程序员并不曾必要掌握超负荷深刻的电脑科学知识。以算法为条例,每个程序员都应掌握排序、链表、栈以及队列这些骨干数据结构和算法,但算几何、线性规划与网络流这些算法可能就是无是每个程序员都需掌握的了;

由此这几乎独标准,我管程序员应控制的最主要概念分为程序设计,软件开发,以及个人成长三杀接近,每一样死类都出于几最主要概念组成。

快速通道

由开博以来,经常会面生出意中人当论坛,微博,和QQ上发问学习X技术读什么书合适(例如:学习Java读什么书合适?如何学习程序设计?)所以我当此处列有了一个“快速通道”——把大的问题汇总在齐,点击问题,即可直接入答案。(当然,如果您将本文开头读到尾帮助会再要命
:-))

  • 怎学习电脑基础知识?
  • 什么学习C语言?
  • 什么学习C++?
  • 如何学习Java?
  • 何以学习C#?
  • 何以学习JavaScript?
  • 哪学习Python?
  • 争强化对编程语言的知?
  • 安学习程序设计技术?
  • 哪些学习算法?
  • 什么样高效之调试程序?
  • 怎样控制好的编程实践?
  • 怎么学习面向对象程序设计?
  • 怎么样对代码进行重构?
  • 怎还好的拓展软件测试?
  • 如何管理软件团队/软件类?
  • 何以成为同名叫再标准的程序员?
  • 程序员如何学习计划?
  • 程序员如何开展职业规划?
  • 安增强自己之思维能力?
  • 哪些进展高效求职面试?
  • 什么样提高自己之英语写作能力?

程序员必读书单

入门书籍

程序设计:

  1. 基础理论:编码:隐匿在微机软硬件背后的言语
  2. 编程语言:
    • C:C和指针
    • C++:C++程序设计原理和履行
    • Java:Java核心技术(第9本子)
    • C#:精通C#(第6版)
    • JavaScript:JavaScript
      DOM编程艺术(第2本)
    • Python:Python基础教程(第二版)
  3. 编程语言理论:编程语言实现模式
  4. 次第设计:程序设计方
  5. 算法和数据结构:算法(第4版)
  6. 程序调试:调剂九法——软硬件错误的排查的道

软件开发:

  1. 编程实践:次第设计执行
  2. 面向对象程序设计:Head
    First设计模式
  3. 重构:重构
  4. 软件测试:How
    to Break
    Software
  5. 类型管理:极客与集体
  6. 标准开发:程序员修炼之志:从小工到专家
  7. 活佛之说:奇思妙想:15号电脑天才及其主要发现
  8. 界面设计:写于大家看的设计书
  9. 互设计:通用设计法则

个人成长:

  1. 职业规划:软件开发者路线图
  2. 心想方法:程序员的构思修炼:开发认知潜能的九堂课
  3. 求职面试:金领简历:敲起苹果微软谷歌的大门
  4. 英语作文:The
    Only Grammar Book You’ll Ever
    Need

一定读书籍

先后设计:

  1. 基础理论:深刻理解计算机体系(第2本子)
  2. 编程语言:
    • C:C程序设计语言(第2本)
    • C++:C++程序设计语言(第4版本)
    • Java:Effective
      Java(第2版)
    • C#:CLR
      via
      C#(第4版)
    • JavaScript:JavaScript语言精粹
    • Python:Python参考手册(第4本子)
  3. 编程语言理论:次设计语言——实践的路(第3版)
  4. 先后设计:计算机程序的构造与讲(第2本子)
  5. 算法和数据结构:编程珠玑(第2本)
  6. 程序调试:调节九法——软硬件错误的排查的志

软件开发:

  1. 编程实践:代码大全(第2本)
  2. 面向对象程序设计:设计模式
  3. 重构:改代码的法子
  4. 软件测试:xUnit
    Test
    Patterns
  5. 类管理:人月神话
  6. 规范开发:程序员职业素养
  7. 师父的称:编程人生:15各类软件先驱访谈录
  8. 界面设计:咀嚼和计划:理解UI设计则(第2本子)
  9. 相互设计:交互设计精髓(第3本)

个人成长:

  1. 职业规划:软件开发者路线图
  2. 合计方法:什么把工作就极致好
  3. 求职面试:程序员面试金典(第5本)
  4. 英语写作:作风的素

这个读书列表覆盖了软件开发各个重要领域的入门书籍跟必读书籍,我深信其可满足绝大多数程序员的需要,无论你是初家,还是进阶者,都得以从中获益:

  • 基础理论席卷了程序员应该掌握的电脑基础知识;
  • 编程语言本着软件开发至关重要,我选了C,C++,Java,C#,Python,和JavaScript这六门主流编程语言进行介绍,如果想越掌握编程语言,可以翻阅编程语言理论里之书目;
  • 以明亮编程语言的根基及,优秀之程序员还该了解各种次第设计技能,熟悉基本的算法数据结构,并且会很快之展开程序调试。
  • 优秀的次序设计力量是成好程序员的前提,但软件开发知识为是必需的:优秀之程序员应具备不错的编程实践,知道怎么使面向对象,重构,和软件测试编而复用,可扩大,可保障的代码,并有软件种类管理知识和正式开发素养;
  • 就算像我们可以打社会名流传记里学习名人的成功经验,程序员也堪经过跟优质程序员的足迹使自己少走弯路。师父的谈涵盖一多元对大师程序员/计算机科学家的访谈,任何程序员都得从中获益良多;
  • 为了打用户满意的软件出品,程序员应当控制一定的界面设计知识和相互设计文化(是的,这些干活儿应提交UI和UX,但假如你想单独做一个产品吗?);
  • 业内程序员应当对协调进行职业规划,并熟悉程序员求职面试的流水线,以便在职业道路上越走越远;
  • 软件开发是同等宗用不停学习的艺,学习沉凝方式可以使得的晋级学习能力与读书效率;
  • 软件开发是均等宗国际化的劳作,为了为还多之人头了解您的代码(工作),良好的英语做力量必不可少。

尽管我竭尽的失完善之书单,但受限于自己之个人经历,这个写就难免会有所偏颇。所以要是您发出例外之见识,或者认为此开就漏掉了好几主要书籍,请于评价中指出,我会马上更新。:-)

程序设计

1. 基础理论

编码:隐匿于处理器软硬件背后的言语及时按照开其实不该叫编码——它还当让“Petzold教而造计算机”——作者Charles
Petzold创造性的因为编码为主题,从电报机和手电讲到数字电路,然后使数字电路中之逻辑门构造出加法器和触发器,最后构造出一个总体的储存程序计算机。不要被这些电路概念好到——编码使用大量影像贴切的接近比较简化了这些概念,使其化最好优质尽通俗易懂的电脑入门读物。

深深了解计算机体系(第2版本)眼看按照开之人名是:Computer
Systems:A Programmer’s
Perspective(所以它同时让称作CSAPP),我个人习惯将她译啊程序员所需要询问的微处理器体系知识,尽管土了把,但更名副其实。

深刻明计算机体系凡是自家念了之最好出色的电脑体系导论型作品,它创造性的拿操作系统,计算机组成结构,数字电路,以及编译原理这些计算机基础学科中的中坚概念汇集于联名,从而覆盖了命集体系架构,汇编语言,代码优化,计算机存储体系架构,链接,装载,进程,以及虚拟内存这些程序员所欲询问的机要计算机体系知识。如果想拿下扎实的处理器基础而休思量管操作系统计算机结构编译原理这些开都读一百分之百,阅读深入理解计算机体系大凡无比有效率的法。

拉开阅读:

  • 世界是数字的:K&R中的K(Brian
    Kernighan)的近作,这按照书源自Brian在普林斯顿大学所教授的微处理器基础教程,以通俗易懂的方式讲述了现代人所承诺询问之计算机知识与网络文化;
  • 图灵的绝密:他的终生、思想以及舆论解读:Charles
    Petzold的旁一样总统著作,这仍开以图灵的论文准可计算数及其于认清问题及之利用(On
    Computable Numbers, with an Application to the
    Entscheidungsproblem)为主题,阐述了图灵机(现代计算机的鼻祖)的组织,原理,以及下。
  • 处理器体系概论(第2版本):另一样部精美的微处理器体系导论型作品,和深深明计算机体系不等,这仍开用自下而上的办法,从二进制,和数字逻辑这些底层知识一步步搭至高级编程语言(C),从而以其它一样栽办法了解计算机体系。

2. 编程语言

编程语言是程序员必不可少的一般性工具。工欲善其事,必先利其器。我于此处吃起了C,C++,Java,C#,JavaScript,和Python这六种常用编程语言的书单(我个人非熟识Objective-C和PHP,因此她不在里面)。

消注意的凡:我在此处给有底是编程语言(Programming
Language)书籍,而未编程平台(Programming
Platform)书籍。以Java也例,Effective
Java属于编程语言书籍,而Android编程权威指南尽管属于编程平台书籍。

C

遗忘谭浩强那以糟糕不堪的C程序设计,C和指针才是C语言的特级入门书籍。它详细而以无错过简练之牵线了C语言以及C标准库的全套。

于C语言初家,最难以之概念不仅是指针和反复组,还有针对性数组的指针和对指针的指针。C和指针消费了汪洋底篇幅和图示来把这些麻烦了解但根本之概念讲的鲜明,这也是自个儿推荐其当做C语言入门读物的缘由。

尽管C程序设计语言大凡二十大抵年前的书籍,但她仍是C语言——以及计算机对中最好要的书之一,它的要害不仅仅在它们之所以清晰的语言和概括的代码描述了C语言全貌,而且在其吗以后的计算机书籍——尤其是编程语言书籍树立了新的标杆。以至于在群电脑书籍的扉页,都见面生出“感谢Kernighan教会我写作”这样的字样。

拉开阅读:

  • C专家编程:不要给标题中的“专家”吓到,这事实上是均等准好自在的书籍,它既是包含了大气C语言技术细节和编程技巧,也暗含了不少幽默的编程轶事;
  • C陷阱及缺陷:书而该谓,这本开介绍了C语言中广泛的坑和局部闻所未闻的编程“技巧”,不少居心不良的C语言面试题都源自这按照小册子;
  • C语言参考手册:全面且高于的C语言参考手册,而且覆盖C99,如果你打算成为C语言专家,那么这仍开不可去;
  • C标准库:给起了15个C标准库的规划思路,实现代码,以及测试代码,配合C程序设计语言翻阅效果又了不起;
  • C语言接口和贯彻:这按照开显示了何等利用C语言实现可复用的数据结构,其中包含大量C语言高级技术,以至于Amazon上排名第一的品是“Probably
    the best advanced C book in existance”,而行老二之评则是“By far
    the most advanced C book I read”。

C++

用作C++的发明者,没有人能比较Bjarne
Stroustrup复亮C++。Bjarne在Texas
A&M大学任教时使用C++为高等学校新生讲授编程,从而就有矣C++程序设计原理和履行就仍开——它面向编程初家,既包含C++教程,也隐含大量顺序设计规范。它不光是自读了太好的C++入门书,也是自己念了极端好的编程入门书。

比有意思之是,C++程序设计原理与实施截至全书过半都未曾出现指针,我眷恋及时或是Bjarne为了印证不学C也堪学好C++吧。

同样是Bjarne
Stroustrup的作品,C++程序设计语言是C++极致权威且最全面的书本。第4本相对于事先的本进行了到的换代,覆盖了次新的C++
11规范,并砍掉了片过时的情节。

延阅读:

  • A Tour of
    C++:如果您以为C++程序设计语言过火庞大,但你又想快速的浏览一合新版C++的言语特色,那么可尝试就按照小红书;
  • C++语言的宏图与演化:C++的“历史书”,讲述了C++是何等一步一步于C
    with Classes走及今天就无异于步,以及C++语言特性背后的故事;
  • C++标准库(第2版):相对于其他语言的标准库,C++标准库虽然强大,但读曲线非常陡峭,这本书是学习C++标准库有力之补;
  • 纵深探索C++对象模型:这本开系统的上书了C++是怎以最好小的性能代价实现目标模型,很多C++面试题(包括吃问烂的心虚函数指针)都可以当马上本书里找到答案;
  • Effective
    C++和More
    Effective
    C++:由于C++的风味实在烂,因此大爱就丢到坑里。Effective系列既讲述了C++的优秀编程实践,也包含C++的应用误区,从而帮助您绕了这些坑。

Java

平心而论Java核心技术(即Core
Java)并无算是是一律依照专门理想的书:示例代码不敷严谨,充斥着广大和C/C++的较,语言为不够简洁——问题在Java并不曾一样遵循很美妙的入门书籍,与同类型的Java编程思想相比,Java核心技术至少完成了废话不多,与时俱进(Java编程思想还待在Java
6之前),矮子里选将军,Java核心技术终于不磨了。

尽管Java没有什么可以的入门书籍,但马上不意味着Java没有可以的必读书籍。Effective
Java凡本身读了之极端好之编程书之一,它包含大量的精Java编程实践,并对准泛型和产出这点儿独充满陷阱的Java特性给起了充满洞察力的提议,以至于Java之大James
Gosling否即仍开发序:“我异常希望10年前哪怕具备这本书。可能有人以为自己无需外Java方面的书本,但是本人欲就本书。”

延阅读:

  • 深深明Java虚拟机(第2版本):非常美且难得之华佳作,系统的介绍了Java虚拟机和系工具,并受来了一部分调优建议;
  • Java程序员修炼之道:在即时本书之前,并无一样本Java书籍系统详细的介绍Java
    7的新特征(例如新的垃圾堆收集器,try using结构和invokedynamic命令),这仍开上了这空白;
  • Java并作编程实践:系统到的牵线了Java的产出,如何设计支撑并发的数据结构,以及哪些编写正确的并发程序;
  • Java
    Puzzlers:包含了大量的Java陷阱——以至于读这仍开时自说的极度多的一个歌词就是是WTF,这按照开之义在于其是一个反模式大全,Effective
    Java告您什么勾勒好之Java程序,而Java
    Puzzlers虽说告知您不好之Java程序是呀则。更有意思的是,这有限本书的撰稿人还是Joshua
    Bloch。

C\

恐怕而会疑窦我胡会推荐这按照接近1200页的“巨著”用作C#入门,这是自我的答案:

  1. C#的言语特征非常丰富,很麻烦用简短的篇幅概括这些特色;
  2. 精通C#于是发生贴近1200页的篇幅,是以她不光完善介绍了C#语言,而且还掩盖了ADO.NET,WCF,WF,WPF,以及ASP.NET这些.Net框架。你可以管及时按照开就是两本书——一仍500多页的C#语言课程以及相同依600基本上页的.Net平台框架迅速达标手手册。
  3. 尽管标题带有“精通”两许,精通C#实际上是相同准面向初学者的C#书,你还不待极度多编程知识,就得读懂她。

CLR via
C#是C#/.Net最重大之书本,没有有。它全面介绍了.Net的基本——CLR的运转规律,以及构建于CLR之上的C#路系统,运行时涉嫌,泛型,以及线程/并行等高档情。任何一个坐C#呢办事内容之程序员都应当看此书。

延阅读:

  • 深切理解C#(第3版):C#进阶必读,这本书偏重于C#的语言特色,它系统的牵线了C#从1.0到C#
    4.0的言语特色演化,并展示了安以C#的语言特色编写优雅的次序;
  • .NET设计规范(第2本):C#专业程序员必读,从变量命名规范讲到品种系统规划条件,这仍开提供了同样仿完整的.Net编程规范,使得程序员可以编制出同,严谨的代码,
  • C#
    5.0高不可攀指南:来自O’Reilly的C#参考手册,严谨的牵线了C#语法,使用,以及基本类库,C#程序员案头必备;
  • LINQ to Objects Using C#
    4.0和Async
    in C#
    5.0:LINQ和async个别是.Net
    3.5以及.Net
    4.5受到所引入的极其重大之言语特色,所以我以为产生必要在它上面花点功夫——这半本书是介绍LINQ和async编程的特级读物。

JavaScript

尽管JavaScript现在好形成客户端服务器端通吃,尽管JQuery等等的前端框架让有些人口得以无懂JavaScript也得以编程,但本身还是认为读书JavaScript从HTML
DOM开始极度符合,因为就是JavaScript设计的初衷。JavaScript
DOM编程艺术系统的介绍了安下JavaScript,HTML,以及CSS创建可用的Web页面,是平等按前端可帮派佳作。

JavaScript语言包含大量之钩和误区,但她也又产生部分相当对的表征,这为是胡Douglas
Crockford称JavaScript为世界上太被误会的语言,并编辑了JavaScript语言精粹同书来赞助前端开发者绕开JavaScript中的陷阱。和同类书籍不同,JavaScript语言精粹从而简易的言语教学了JavaScript语言中好的那么部分(例如闭包,函数是甲级对象,以及对象字面量),并建议读者不要动其他不好的有(例如混乱的类型转换,默认全局命名空间,以及奇葩之对等判断称),毕竟,用不好之特点编写出来的程序往往也是坏之。

延伸阅读:

  • JavaScript高级程序设计(第3本):详尽且深入的介绍了Javascript语言,DOM,以及Ajax,并对准HTML5开了针对许创新;
  • JavaScript权威指南(第6版):这本开的第5本子曾为前端专家Douglas
    Crockford称之为“唯一因谱的JavaScript书”。相对于JavaScript高级程序设计,JavaScript权威指南再像是同论案头参考书,当然如果你感兴趣呢足以开始读到条;
  • 修而保护的JavaScript:书而该称,这按照开为来了大气之漂亮JavaScript编程实践,使得程序员编写出健壮且易于维护的JavaScript代码;
  • JavaScript异步编程:和科普的支持并发的编程语言(例如Java和C#)不同,JavaScript本身是单线程的,因此不克将其余语言处理并发的措施照搬到JavaScript。JavaScript异步编程系统的介绍了JavaScript中的出现原理,并论了什么样以PromiseDeferred以及Async.js修出简洁高效的异步程序。

Python

Python的入门书籍很多,而且据说质量大多是,我引进Python基础教程的来由是因它是自身的Python入门读物——简洁,全面,代码质量很是,而且有几乎独十分有意思之课后学业,使得我可迅速上手。

此处顺便多说一样句子,不要用Python学习手册用作Python入门——它的废话实在太多,你能够设想它们因此了15页的字数去教授if告句也?尽管O’Reilly出了过多经文编程书,但当时按照Python学习手册切免在中。

高于且实用的Python书籍,覆盖Python 2和Python
3。尽管它叫做吧参考手册,但Python参考手册每当Python语法和标准库基础之上对该落实机制为于闹了深切的教,不容错过。

延伸阅读:

  • Python袖珍指南(第5本):实用且即使携带的Python参考手册,我会说自己于机上写序时用底就是是它么
    -_-#;
  • Python
    Cookbook(第3版):非常好的Python进阶读物,包含各种常用场景下之Python代码,使得读者可以描绘起越来越Pythonic的代码;
  • Python编程实战:运用设计模式、并发和程序库创建高质量次:Python高级读物,针对Python
    3,2014年的Jolt大奖图书,不可错过;
  • Python源码剖析:少见的国产精品,这按照开为Python
    2.5呢条例,从源代码出发,一步步解析了CPython是何许落实项目,控制流,函数/方法的宣示与调用,类型及装饰器等Python核心概念,读了以后会大大加重对Python的知道。尽管当时仍开来把过时,但我们照样可随其分析源代码的道来分析新版Python。

3. 编程语言理论

多数程序员并不需要从头编写一个编译器或解释器,因此龙书(编译原理)不怕显过于重量级;然而多数程序员还是待分析文本,处理配置文件,或者写一个有点语言,编程语言实现模式可怜好之满足了这个要求。它把常用的文件分析/代码生成方法组织成一个个模式,并为每个模式于来了实例和动场景。这按照开既会增进你的动手能力,也会火上浇油你对编程语言的明亮。Python发明者Guido
van Rossum甚至为及时仍开于来了“Throw away your compiler theory
book!”
这么的超高评价。

程序员每天还设与编程语言打交道,但是想编程语言为什么会叫设计成这法的程序员并无多,次设计语言——实践的路完善的回应了此题材。这仍开打编程语言的解析及周转起来称起,系统了介绍了命名空间,作用域,控制流,数据类型以及艺术(控制抽象)这些程序设计语言的为主概念,然后展示了这些概念是何等给运用至过程式语言,面向对象语言,函数式语言,脚本式,逻辑编程语言及并发编程语言这些有不同编程范式的编程语言之上。这仍开或大的扩你的视野——无论你以啊编程语言,都见面起即仍开中低收入良多。理解当下同本书,胜了学习十山头新的编程语言。

延阅读:

  • 七周七语言:理解多编程范型:尽管我们于平凡工作屡遭恐就使用两三门编程语言,但是了解其他编程语言范式是甚关键之。七周七语言同题用简单的篇幅介绍了Ruby,Io,Prolog,Scala,Erlang,Clojure,和Haskell这七种植具有不同编程范式的言语——是的,你没法通过就本开成为这七种植语言的大方,但您的视野会赢得大幅度的扩;
  • 自制编程语言:另一样准精美之编译原理作品,自制编程语言经从零碎开端做一山头无项目语言Crowbar与一门静态类型语言Diksam,把项目系统,垃圾回收,和代码生成等编程语言的重中之重概念讲的鲜明;
  • 计的庐山真面目:深入解析程序和计算机:披着Ruby外衣的测算理论入门书籍,使您对编程语言的亮更上一层楼。

4. 顺序设计

当代编程语言的语法大多很糊涂,初家用这些语言上编程会招消费大量的工夫在编程语言语法(诸如指针,引用和类型定义)而休是次设计艺术(诸如数据抽象和经过抽象)之上。先后设计方式釜底抽薪了是问题——它小心让次设计艺术,使得读者无需将大气年华花在编程语言及。这本开还有一个暨之配套的教学开发环境DrScheme,这个条件会冲读者的水平变换编程语言的深,使得读者可老将注意力集中在先后设计艺术及。

本身个人非常意外次第设计方法诸如此类的大手笔为什么会失传,而谭浩强C语言这样的排泄物也风靡——好在是次设计方法第二版既为免费发布在网上。

电脑程序的组织和解释凡另外一样遵照被国内大学忽视(至少在自本科时死少有人知就本书)的讲义,这按照书和先后设计方式产生好多共同点——都施用Scheme)作为教学语言;都小心让序设计方式而休编程语言本身;都兼备相当可观之课后题。相对于次设计艺术,微机程序的布局与讲若果更加深入程序设计之原形(过程抽象,数据抽象,以及元语言抽象),以至于Google技术总监Peter
Norvig为了及时仍开跨高的评。

延伸阅读:

  • 编程原本:STL笔者的关于程序设计方法佳作——他将干代数和群论引入编程之中,试图为次设计供一个结实的辩解功底,从而构建起越来越稳固的软件。这本书是次设计艺术和微机程序的布局与讲的绝好补充——前者采用函数式语言(Scheme)讲授程序设计,而编程原本虽然采用命令式语言(C++);
  • 素模式:设计模式总结了面向对象程序设计遭逢之模式,而素模式立即仍开分析了先后设计吃的周边模式之庐山真面目,阅读这仍开会让你针对程序设计有再不行的知;
  • The Science of
    Programming:会编程的丁不少,但会编写正确顺序的食指尽管丢掉多矣。The
    Science of
    Programming通过前条件——不变式——后条件同逻辑谓词演算,为编写正确顺序提供了强压的反驳功底,然后就按照开通过实例阐述了怎么利用这些理论及现实程序上。任何一个纪念大幅提高开发效率的程序员都许诺阅读此书。

5. 算法和数据结构

我在算法学习的路相同文被关系自己的算法入门教材是数据结构与算法分析:C语言描述,我一度认为她是无限好的算法入门教材,但从我念到Sedgewick的算法事后我哪怕改了意见——这仍算法才是极致好的算法入门教材:

  • 行使更加好之Java语言作为教学语言;
  • 埋所有常用之数据结构和算法,并都于来其总体兑现;
  • 含大量的图示用于可视化算法——事实上这是本身读了之图示最为丰富形象之图书,这吗是本人称其也最好之算法入门书籍的故。

编程珠玑(第2本)大凡一样论少见的实践型算法书籍——它并非一一介绍数据结构/算法的读本,而是实践性极强之算法应用手册。作者(Jon
Bentley)从他多年之骨子里经历选择出一些妙不可言而还要实用的题材,然后展示了他解决这些题目之经过(分析问题,选择相当的算法,解决问题,以及说明答案)。任何程序员都好从中获益。

延长阅读:

  • 编程珠玑(续):严格来说这本书并非编程珠玑的续作,而是同样按类似于海外篇的编程技巧/实践手册;它不像编程珠玑这就是说般重视算法的以,而是全面覆盖了程序员所需要的力量;
  • 算法导论(第3本):尽管自己以这边文章开始提到会尽量避免理论性的书籍,但并未算法导论的算法阅读列表是未完的,我思念及时本开便不需要自家多介绍了;
    🙂
  • 算法设计及析基础(第3版):侧重于算法设计,这本开创新之拿广大算法分为分治,减治,变治三挺接近,并覆盖了动态规划,回溯,以及分支定界等高等算法设计方式,属于算法设计之入门佳作;

6. 程序调试

一个让非编程从业人员惊讶之实况是程序员的绝大多时还花费在调试上,而非是描摹程序上,以至于Bob大叔把调节时占工作时之比例作衡量程序员开发力量的规范。调节九法——软硬件错误的排查的志既是是调节领域的入门作品,也是必读经典的作。调节九法的作者是一个具有丰富实战经验的硬件工程师,他把他多年之调节经验总结成九久调试法则,并对各一样长达法虽都给相应之骨子里案例。任何程序员都答应经翻阅这本开改善调试效率,即便是非程序员,也可以从当下仍开中效仿到系统解决问题的办法。

延伸阅读:

  • Writing Solid
    Code:最好好的调节是不调试——Writing
    Solid
    Code介绍了断言,设计清晰的API,以及单步代码等技能,用于编写健壮的代码,减少调试的年月;
  • 软件调试之道:调试工具书——这本开详细的介绍了广的调试器工具,并透过切实案例显示了它们的使技术;

软件开发

1. 编程实践

Brian
Kernighan凡是者星球上极好的电脑书籍作者:从上古秋的Software
Tools,到前期的Unix编程环境和C程序设计语言,再届当下本次设计执行,每本书还是必读之作。

尽管程序设计执行才生短暂200余页,但它应用简单的代码和省略的尺度覆盖了序设计之有着重点概念(包括编程风格,算法和数据结构,API设计,调试,测试,优化,移植,以及世界特定语言等概念)。如果你想快掌握良好的编程实践,或者你觉着900差不多页的代码大全超负荷沉重,那么程序设计执行是若的非次之选择。我先是软读这本开就是给它简洁的语言与雅的代码所诱惑,以至于读研时本身请了三按部就班程序设计执行——一如约在学校实验室,一依照在宿舍,一依照随身携带阅读。我思我起码将她读了十布满以上——每一样不行都起新的抱。

无在谁版本的程序员必读书单,代码大全犹见面处于首各。和其他程序设计书籍不同,代码大全之所以通俗清晰的语言覆盖了软件构建(Software
Construction)中逐条层次上所有的要紧概念——从变量命名暨品种设计,从决定循环到代码结构,从测试与调节到构建与购并,代码大全可谓应有尽有,你得管这仍开看作为程序员的一律站式(Once
and for
all)阅读手册。更可贵的凡,代码大全以列一样段结尾都于出了价值充分高之参考书目(参考我事先的什么看书籍同温婉),如果你是一个初发茅庐的程序员,代码大全举凡纯属好的读书起点。

延伸阅读:

  • 编写而读代码的办法:专注让代码可读性(Code
    Readability),这仍开来Google的星星各类工程师对Google Code
    Readability的总。它叫来了大量命名,注释,代码结构,以及API设计等家常编码的特等实践,并蕴含了过多类微小但却得以明确升级代码可读性的编程技巧。这仍开之翻还不易,但只要你想体会书被的英语幽默(例如Tyrannosaurus——Stegosaurus——Thesaurus),建议看其的英文影印版;
  • 实用的程序员:专注于生产效率(Productivity),它既是包含源自作者多年经验的赛生产率原则,也富含大量底增高生产率的小器,每个追求大生产率的程序员都应读这仍开;
  • UNIX编程艺术:专注让次设计哲学,这按照开首先总结发生包括模块化,清晰化,可做,可分别等17只Unix程序设计哲学,接下去通过Unix历史及各种Unix编程工具展示了这些极的用。尽管个人觉的立本开发若干过度拔高Unix且过度贬低Windows和M$,但写被的Unix设计哲学非常值得借鉴。

2. 面向对象程序设计

随便当Amazon还是于Google上摸索设计模式相关书籍,Head
First设计模式还见面破在首位——它以风趣的语言和幽默的图示讲述了观察者,装饰者,抽象工厂,和单例等要设计模式,使得初师可以快的敞亮并控制设计模式。Head
First设计模式在Amazon上好评如潮,就连设计模式原题作者Erich
Gamma还针对它吃有了生高之评。

要小心,Head
First设计模式举凡大好之设计模式入门书,但断不要将当下按照开当学习设计模式的绝无仅有的写——是的,Head
First设计模式拥有风趣的语言及有趣的例证,但她既缺少实际的工程范例,也未尝叫出设计模式的使/适用场景。我个人建议是在念了就本书之后这阅读“四人帮”)的设计模式或Bob大叔的快捷软件开发,以便了解设计模式在实际中之应用。

设计模式用作设计模式领域的开山的作,Erich
Gamma,Richard Helm,Ralph
Johnson等四各作者用各个领域面向对象程序支付的经验总结成三良类23种植模式,并被出了每个模式的使状况,变体,不足,以及如何战胜这些不足。这按照开编写严谨紧凑(四各项作者都是PhD),并且代码源自实际项目,属于设计模式领域的必读的作。

亟待小心:设计模式不适合初家阅读——它再也如是一致首博士论文而不技术书籍,加上它的范例都拥有特别强之小圈子背景(诸如GUI窗口系统跟富文本编辑器),缺乏实际经验的程序员很麻烦了解当下本书。

延长阅读:

  • 快软件开发(原则模式及实施):尽管标题带有“敏捷”,但迅即仍开实际是同一按面向对象程序设计读物——Bob大叔经添加的事例讲解设计模式的行使和SOLID面向对象设计条件),如果您觉着设计模式过火生硬,那么您完全可以打即仍开开始读。这本开以Java作为讲解语言,它呢来相应之C#版本;
  • 代码整洁的道:同样是Bob大叔的著述,这仍开教导读者以面向对象+敏捷开发规范编制清晰而保护的代码;
  • 企业应用架构模式:这仍开专注让架构,作者Martin
    Fowler对企业应用的风味(诸如持久化数据,多总人口访问,操作数据的界面和错综复杂的政工逻辑),总结发生几商行架构模式,以便程序员构建强大且可扩大的企业应用。

3. 重构

另产品代码都无是好,而是于反复不断的改被前行而来。重构正是如此平等论介绍如何改进代码的书本——如何当维持代码行为之基本功及,提升代码的色(这吗是重构的概念)。

我表现了众多程序员,他们时常声称自己以重构代码,但他们其实只开了第二步(提升代码的成色),却从没保证第一步(保持代码行为),因此他们所谓的重构往往会适得其反——破坏现有代码或是引入新bug。这为是自推荐重构当时仍开之案由——它既介绍糟糕代码的特征(Bad
smell)和改进代码的主意,也吃出了重构的圆流程——1.
编制单元测试保持(Preserve)程序作为;2. 重构代码;3.
管单元测试通过。重构还引入了相同仿重构术语(诸如封装字段,内联方法,和字段上换),以便程序员之间交流。只有掌握了及时三个点,才能够算是明白重构。

此更另行同一举重构的定义——于维持代码行为之底蕴及,提升代码的质量。重构注意于次步,即什么提升代码的质,而改代码的章程小心让第一步,即如何保障代码的一言一行。

晋升代码质量并无紧,但保持代码行为即便难以多了,尤其是对准没有测试的残存代码(Legacy
Code)而言——你待首先引入测试,但遗留代码往往只是测试性(Testability)很不同,这时你就是用拿代码变的而是测试。修改代码的点子包含大量底实用建议,用来拿代码变的不过测试(Testable),从而使重构变为可能,使加强代码质量成可能。

延阅读:

  • 重构与模式:这按照开之华语书名是误导,它的原书书名是Refactoring
    to
    Patterns——通过重构,把模式引入代码。这按照开阐述了重构和设计模式之间的关联,使得程序员可以当重新强的层次上想重构,进行重构。

4. 软件测试

关于软件测试的书本很多,但要命少生一致以测试书籍能如How to Break
Software这样既有趣而实用。不同让传统的软件测试书籍(往往空话连篇,无法直接利用),How
to Break
Software异常实在——它从程序员的思想出发,分析软件错误/Bug最可能产生的门道,然后针对这些途径进行残酷的测试,以保险软件质量。

我当首先软阅读这仍开时充分呼作者太过“残忍”——连这些刁钻诡异的测试招数都能想出来。但这种毫不留情(Relentless)的测试风格正是每个专业程序员所承诺持有的心怀。

注意:如果你是一个测试工程师,那么在翻阅这仍开前要三想——因为看它们今后您会叫你身边的程序员苦不堪言,甚至连掐死而的中心都起
:-D。

How to Break
Software珍惜黑盒测试,而立按照xUnit
Test
Patterns尽管强调白盒测试。正而书名所示,xUnit
Test
Patterns覆盖了单元测试的每个上面:从哪编写好的单元测试,到哪些统筹而测试(Testable)的软件,再到怎样重构测试——可以把它看作为单元测试的百科全书。

延阅读:

  • Practical Unit Testing with JUnit and
    Mockito:尽管xUnit
    Test
    Patterns幂了单元测试的普,但它的问题在于不敷与时俱进(07年问世)。Practical
    Unit
    Testing弥补了这毛病——它详细介绍了安通过测试框架JUnit和Mock框架Mockito编排好的单元测试,并于出了大气良单元测试的准绳;
  • 单元测试的章程(第2版):可以把当时本开看作为前无异本书的.Net版,适合.Net程序员;
  • Google软件测试的道:这本开详细介绍了Google如何测试软件——包括Google的软件测试流程与Google软件测试工程师的普通工作/职业发展。需要小心的凡:这按照开中之测试流程在国内大可能没用(国内企业缺乏像Google那般强大的功底设备(Infrastructure)),但它们起码得吃国内公司产生一个可以效仿的靶子;
  • 探索式软件测试:James
    Whittaker的其它一样本测试著作,不同让人情的黑盒/白盒测试,这仍开创造性的管测试比喻为“探索”(Exploration),然后把不同之追办法对应到不同的测试办法及,以便尽快发现还多的软件错误/Bug。

5. 类型管理

多程序员都敬仰成为横扫千军(One-man
Army)式的“编程英雄”,但独立的软件并非同一总人口之力,而是由组织团结而成为。极客与集体尽管是这样同样仍写给程序员的什么样以集团受到工作的断然好书,它围绕着HRT三死条件(Humility谦逊,Respect尊重,和Trust信任),系统的牵线了什么融入团队,如何打造精良的团,如何领导集团,以及哪些作答团队中的害群之马(Poisonous
People)。这仍开实用性极强,以至于Python之大Guido van
Rossum犹赞不绝口这按照开“说发生了自身直接在做但总结不出来的东西”

尽管人月神话成书于40年前,但它们本是软件项目管理重在之书本。人月神话根源作者Fred
Brooks领导者并成功System/360和OS/360眼看简单单就是凡是放现在呢是巨型软件类之里程碑项目的经验总结。它挂了软件类各个方面的主要概念:从工期管理(Brooks定律)到团建设(外科团队),从程序设计(编程的原形是采用正确的数据结构)到架构设计(概念完整性),从原型设计(Plan
to Throw one
away)到集团交流(形式化文档+会议)。令人惊奇的凡,即便40年之后,人月神话屡遭的根本概念(包括焦油坑,Brooks定律,概念完整性,外科团队,其次版本效应等等)依然适用,而软件开发的中心复杂度依然没有得到化解(从不银弹)。

延长阅读:

  • 人件(原书第3版):从人口之角度解析软件项目。人件于雇佣正确的人数,创建正常的做事条件,以及做便捷之支出集团等角度阐释了如何改善人口,从而改善软件类;
  • 门后的私:卓越管理之故事:这仍开生动的复出了软件项目管理工作的景象,并被闹了各种实用管理技术,如果你故意转会治本职位,这本开无容错过;
  • 可怜教堂和庙:这本开打黑客的史说由,系统设与此同时幽默的叙述了开源运动的辩护以及实施,以及开源软件项目是什么运转并发展之。了解开源,从当下仍开开始。

6. 专业开发

并非吃世俗的译名迷惑,程序员修炼之志大凡一样依值不过高之程序员成长手册。这按照开并无局限为特定的编程语言还是框架,而是提出了一致模拟切实可行的实效(Pragmatic)开发哲学,并透过序设计,测试,编程工具,以及项目管理等于地方的实例展示了哪用即套出哲学,从而令程序员更加便捷规范。有人拿及时按照开名叫迷你版代码大全——代码大全受起了汪洋底完美程序设计执行,偏向术;而程序员修炼之志叫有了次设计执行背后的想,注重道。

程序员修炼之志指出了如何变成正式程序员,这仍程序员职业素养虽指出了规范程序员应该是什么榜样——承担责任;知道自己于召开啊;知道何时说不/何时说是;在是的时日编排正确的代码;懂得自己时间管理以及工期预估;知道如何作答压力。如果您想成规范程序员(Professional
Developer)(而非是码农(Code Monkey)),这仍开会呢而指明前进的样子。

延伸阅读:

  • 迅猛程序员的45独习惯:“敏捷”版的程序员修炼之道,可以拿当下按照开当程序员修炼之志的补充;
  • 精益创业:尽管当时是均等论提如何创业的修,但其中的精益生产,最小值产品,以及构建-度量-学习循环都值得程序员借鉴。

7. 大师之道

奇思妙想:15号电脑天才及其关键发现是一致比照最具意见之技艺访谈书籍——在马上按照书访谈的15员处理器科学家面临,竟出现了12位图灵奖获得者——要知道图灵奖从1966年设奖到现为只有六十几各类获奖者而已。

奇思妙想将电脑是分为四十分领域:编程语言;算法;架构;人工智能。并精选了每个领域下最有代表性的微机科学家进行访谈。因为这些计算机科学家都是该所当世界的开拓者,因此他们能够为出常人无法被起底深见解。通过这本开,你可以了解前方三十年之微处理器是的进化进程——计算机科学家做了什么,而电脑以能够做到/做不至什么。从而避免把工夫浪费在前任已经缓解之问题(或者根本无法解决的题材)上面。

无异于是访谈录,同样访谈15独人口,编程人生把重点在程序员(Coders
at work)上。它自从各个领域选取了15员顶尖的程序员,这些程序员既包括Ken
Thompson和Jamie
Zawinski这些老牌Unix黑客,也席卷Brad
Fitzpatrick诸如此类的80晚新生代,还连Frances
Allen和Donald
Knuth这般的微处理器科学家。这种多样性(Diversity)使得编程人生享有严谨性和趣味性,无论你是啊项目的程序员,都能从中受益良多。

延阅读:

  • 图灵和ACM图灵奖(1966-2011):通过图灵奖介绍任何电脑是发展史,非常宝贵之华精品图书;
  • 编程大师访谈录:可以拿及时仍开看作为二十年前的编程人生,被访谈者都是即刻叱咤风云的人士(例如微软的创造者Bill
    Gates,Macintosh的发明者Jeff
    Raskin,以及Adobe的创始人John
    Warnock等等)。有趣的凡随即本开被大量的经历以及建议及本仍适用;
  • 编程大师智慧:类似于编程人生,不同的是被访谈者都是编程语言的设计者——这本书覆盖了除C语言以外的几所有主流编程语言。通过就按照开,你得从中学到编程语言背后的计划思想——编程语言为什么而受设计成为这么,是啊促使设计者要在言语中在这特性(或拒绝很特性)。从而提升对编程语言的理解。

8. 界面设计

书如其名,形容给大家看之设计书是千篇一律依面向初学者的高效设计入门。它挂了版式,色彩,和书这三单规划受到的基本点因素,并创造性的呢版式设计总结发生CRAP四很原则(Contrast对比,Repetition重复,Alignment对伙同,Proximity亲密)。全书以丰富生动的范例告诉读者什么是好之宏图,什么是坏的计划性,使得即便是指向设计一无所知的口,也可以从马上按照开快速入门。

写给大家看的设计书强调实行,即如何做出好的宏图;咀嚼及规划:理解UI设计则强调理论,即为什么咱见面接受这样的规划而反感那样的统筹。如果你想使下手明白设计背后的心理学知识,但还要休思量读大部头的心理学著作,那么认知与规划是若的首选。

延阅读:

  • GUI设计禁忌
    2.0:这按照开指出了GUI设计之法以及宽广误区,然后经具体范例指出了哪些避免这些误区。如果您的办事涉及到用户界面,那么就本开会也公减掉过多累;
  • 界面设计模式(第2版本):这本开用用户界面中之常见元素/行为组织成互相关系的模式,以便读者知道并举一反三,从而将其下到温馨的使中;
  • 移步应用UI设计模式:类似于界面设计模式,但面向移动平台。它深受来了iOS,Android,以及Windows
    Phones上常用的90余种植界面设计模式,从而使你不要把这些平台的施用挨个打同样不折不扣呢得控制各个平台的计划性精髓。如果你主攻Android平台,那么Android应用UI设计模式会面是再好的抉择;
  • 配色设计原理和版式设计原理:如果你念了描绘为大家看的设计书从此想继承深入上计划,这片本书是天经地义的起点。

9. 互设计

书如其名,通用设计法则被有了关键的125独规划条件,并为此简短之言语及范例展示了这些规则的实际上利用。每个原则都生照应的参考文献,以便读者进一步深造。我为此推荐这本开,是坐:1.
程序员需要针对计划来一揽子的认;2.
程序员并不需要知道这些计划标准是怎来之,知道怎么用即可。这仍开非常好的满足了当下简单只要求。

彼此设计精髓凡是互为设计领域的圣经级著作。交互设计专家(以及VB之大)Alan
Cooper以马上仍开中详尽介绍了交互设计的规则,流程,以及艺术,然后经过各种范例(主要根源桌面系统)展示了何等运用这些规范。

消专注的凡随即仍开的第4版已出版,它当第三本的根底及多了运动设计以及Web设计等内容。

延长阅读:

  • The Design of Everyday
    Things:交互设计领域的其余一样按照经典的作,它经过解读人类行动背后的心理活动,展示了设计问题之自,并为闹了一样多级措施用以缓解规划问题(需要留意,尽管当时按照开有中译版,但中译版对应之是02年之老本子,而不13年的新本子);
  • The Inmates Are Running the
    Asylum:Alan
    Cooper的别一样准经典,这按照开非常尖锐之指出为非拥有人机交互知识的程序员直接编写面向用户的软件就比如于精神病人管理疯人院(The
    Inmates Are Running the
    Asylum),然后于来了一样效交互设计流程以挽救这个层面;
  • 简单易行至上:交互式设计四策略:专注于将活更换的愈加简明容易用。作者通过删除,组织,隐藏,和转移这四单政策,展示了争创建出大概优质的用户体验。

个人成长

1. 职业规划

软件开发者路线图是一模一样随好且实用的程序员职业规划手册。这本开由若干只模式做,每个模式还对应于程序员职业生涯中之一定阶段。通过这本开,读者可以很有利的找到自己时所处之模式(阶段),应该举行呀,目标是什么,以及生一个模式(阶段)会是啊。如果你常觉得迷茫,那么请看这按照路线图,找到自己之职位,确定接下去的矛头。

延长阅读:

  • 卡耐基全集:非常著名的为人处世书籍。很多人数将当下仍开归类到成功学,但本身连无这样当——在我看来,这按照书教的重新多之凡何等成为一个叫大家好的丁。作为天天与机具打交道的程序员,这套书会帮助我们与食指打交道;
  • 沃顿商学院最被欢迎的谈判课:这本开无是使你失去谈判,而是使您通过谈判(Negotiation)去抱重新多(Getting
    more,这也是立按照开之原书书名)。小至购买菜砍价,大至争取项目,这本开中之谈判规则会让你收益良多;
  • 程序员健康指南:作为老与电脑打交道的事情,程序员往往会遭受各式各样疾病之赘,这本书正是以化解此问题要产出:它打改良工作条件,调整饮食结构,预防头痛眼痛,以及进行室内/室外锻炼等于地方出发,给出了一致拟到且使得的程序员健康改善计划,以赞助程序员打造健康之身体。

2. 思索方法

作程序员,我们用不停地修——既使学习新技巧,也如读书怎样解决各种领域的题目。为了提升学习效率,我们用上怎学习。程序员的想修炼幸亏这样平等本提怎么样学习之书,它集了体会是,神经学,以及表现辩护的行研究成果,并系的介绍了大脑的干活机制。通过这本开,你以学会怎么快速的运自己之大脑,从而加强思想能力,改善学习效率。

Mastery is not about perfection. It’s about a process, a journey. The
master is the one who stays on the path day after day, year after
year. The master is the one who is willing to try, and fail, and try
again, for as long as he or she lives.

怎么同样资质的丁,大多数总人口会忙不迭无为,而只有极其个别能到位登峰造极?如何当领域内完成顶尖?如何战胜通往顶尖的路上的过剩险阻?哪些管业务就极致好应对了这些问题,并不过具哲理的指出登峰造极并无是结果,而是同截永不停息的旅程。阅读这本开无见面让你及时脱胎换骨,但它们会指引你走向科学的道路——通往登峰造极之路。

延伸阅读:

  • 安解题:数学思维的新办法:不要让标题中之“数学思维”吓到,它并无仅仅只是一照数学解题书,它所提出的季步解题法(理解题目->拟定方案->执行计划->总结反思)适用于外领域;
  • 暗时间:刘未鹏所描写的有关读书思想方式的文章集,既包含了他本着习道的琢磨,也暗含了汪洋进一步看的资源;
  • 批判性思维:带您活动来思想的误区:这仍开系统的辨析了人类思想的周边误区,并对各个误区为闹了化解方案,从而帮助程序员养成严谨是的思维方式;
  • Conceptual Blockbusting: A Guide to Better
    Ideas:与批判性思维相反,这按照开专注让创造性思维(Creative
    Thinking),它分析了阻碍创造性思维的广泛思维障碍(Blockbuster)以及这些思考障碍背后的成因,并吃起了各种方式以消弭这些障碍。

3. 求职面试

侦破,百征战无殆。金领简历:敲起苹果微软谷歌的大门举凡程序员求职的必读书籍,它挂了程序员求职的总体:从初步备及编辑简历,从技术面试到薪酬谈判。由于该书作者就于Google,微软,和苹果任职并拓展了技术招聘,因此这仍开的内容非常实用。

附带吐个槽:这本开翻的还对,但自己实在没辙理解封面及之“进入世界级科技公司的葵花宝典”这段文字——找个工作而已,用不着切JJ这么残忍吧。-_-#

同一是来自金领简历作者的著作,程序员面试金典(第5版)在意让技术面试题,它既是包含了IT企业(诸如微软,Google,和苹果)的面试流程及哪准备技术面试,也隐含了大量(超过200道)常见技术面试题题目与解题思路。无论你打算进入国内商店还是外企,你都应当将这仍开的问题练一全体,以寻找到技术面试的痛感(我当求职时便已专门来了扳平块白板,然后每二十分钟一志题之操练,效果异常对)。

延阅读:

  • 编程的美:微软技术面试心得:恐怕是境内技术面试第一题,这本书中的大多数问题都早已是境内IT企业面试的必问题目。这仍开的缺点是它们极老而且让用滥了(以至于部分商店开始免以就仍开及之问题)——但若可管其正是平遵循算法趣题来读;
  • 龙泉指Offer:名企面试官精讲典型编程书:相对于左并西凑的XX面试宝典,剑指Offer凡如出一辙论少见的国精品技艺面试书籍,尽管这本开的技艺面试题目不多(60余道),但笔者为大部分问题都于起了不同方法的解法,并分析了这些解法之间的优劣,此外作者还盖面试官的眼光分析了技术面试的各个环节,从而帮助读者把握技术面试;
  • 人们都发出好干活:IT行业求职面试必读:可以将她看成金领简历的增补阅读——这按照开之性状在于她于闹了怪详细的简历/求职信/电子邮件编写技巧,而立正是许多国内程序员所缺少的。

4. 英语作文

词汇量决定阅读能力,语法决定写作能力。计算机专业词汇并无多,但精确性非常重大,因此每个程序员都承诺怀有优秀的英语语法,但程序员并不需要过于正统的英语语法——掌握常用语法并把她用对就好。The
Only Grammar Book You’ll Ever
Need碰巧可以满足这需求,尽管它篇幅不大(不足200页),却掩盖了英语受到的重要性语法以及科普错误。把这仍开读两通,它见面大幅度提高你的英语写作能力。

既是不过畅销的英语作文书籍,也是电脑书籍被引用最多的非计算机书籍。作风的要素故极简单的语言叙述了安进行严肃精确清楚的英语作文。从这按照开被,你不但可以如法炮制到英语做,更足如法炮制到同一栽严谨至简的处置态度,而立正是专业开发所必备的。

延阅读:

  • 牛津英语用法指南(第3版):全面且贵的英语用法指南,它挂语法,词汇,发音,以及修辞等方面,并兼口语和书面语,以帮扶读者掌握客观之英语用法(Proper
    English
    Usage)。不要为当即本开之篇幅(1000基本上页)吓到——原书并没有这么重,因为当时本开于翻成汉语但与此同时得保存原来的英文内容,所以她的篇幅几乎翻了同样倍。考虑到这按照开以的词汇都老基础,所以自己以为具有英语基础之读者直接看原版(Practical
    English
    Usage)会重复当;
  • 作法宝:非虚构写作指南(30周年纪念版):详尽的非虚构(Non-Fiction)写作指南,无论你只要写地方,技术,商务,运动,艺术,还是自传,你都得以自当下仍开被找到珍贵的建议;
  • 取英语的鉴:中国总人口使用英语最特别之题材就是是会见管中式思维掺杂其中,从而形成啰里啰嗦不伦不类的取英语(Chinglish)。中式英语的鉴网的探赜索隐了中式英语和那个成因,然后因成因对考取英语进行分拣,并对每个项目为起了大量的实际上案例和修改建议。如果你想脱身中式英语,那么这本书是绝对好的起点。

哪用是书单

学而不思则无,思而不学则几乎。

不愤不启,不悱不发。举一隅不坐三隅反,则不再也。

不闻不若闻之,闻之不若见之,见的不若知之,知之不若行之,学至于行之而止矣。

发源他人的书单

它们山之石,可以攻玉。我在本文最后吃来任何世界优秀程序员的书单,以便参考&补充。

刘未鹏(暗时间作者)

以下同一条目下用“/”隔开的意味任选,当然也得且念。

  1. 编码:隐匿在微机软硬件背后的言语
  2. 深深明计算机体系
    /
    Windows核心编程
    /
    程序员的本人修养
  3. 代码大全
    /
    程序员修炼之志
  4. 编程珠玑
    /
    算法概论
    /
    算法设计
    /
    编程的美
  5. C程序设计语言
  6. C++程序设计语言
    /
    C++程序设计原理与实施
    / Accelerated
    C++
  7. 微机程序的布局与讲
  8. 代码整洁的志
    /
    心想事成模式
  9. 设计模式
    /
    高速软件开发(原则模式及实施)
  10. 重构

云风(中国休闲游编程先行者,前网易游戏部门资深程序员,简悦创始人)

  1. C++编程思想
  2. Effective
    C++
  3. 深探索C++对象模型
  4. C++语言的统筹及演变
  5. C专家编程
  6. C陷阱同缺陷
  7. C语言接口和贯彻
  8. Lua程序设计
  9. 链接器和加载器
  10. COM本质论
  11. Windows核心编程
  12. 深刻解析Windows操作系统
  13. 程序员修炼之志
  14. 代码大全
  15. UNIX编程艺术
  16. 设计模式
  17. 代码优化:有效采取内存
  18. 深刻了解计算机体系
  19. 深入理解LINUX内核
  20. TCP/IP详解

洪强宁(豆瓣技术总监)

  1. 代码大全
  2. 人月神话
  3. 编码:隐匿于计算机软硬件背后的语言
  4. 电脑程序设计方
  5. 程序员修炼之志
  6. 设计模式
  7. 微机程序的布局与讲
  8. 重构
  9. C程序设计语言
  10. 算法导论

陈皓(CoolShell博主)

  1. 点石成金:访客至上的Web和动可用性设计秘笈
  2. 重来:更为简单有效之买卖思维
  3. 黑客和画家
  4. 苏醒思考的艺术
  5. TCP/IP详解
  6. UNIX环境高级编程
  7. UNIX网络编程

张峥(微软亚洲研究院副院长)

  1. 算法概论
  2. Data Structure and
    Algorithms
  3. C程序设计语言
  4. UNIX操作系统设计
  5. 编译原理
  6. 电脑体系布局:量化研究方式
  7. 当时的幸福
  8. 异物:不均等的中标启示录

Jeff Atwood(Stackoverflow联合创始人)

  1. 代码大全
  2. 人月神话
  3. 点石成金:访客至上的Web和走可用性设计秘笈
  4. 速软件开发
  5. 人件
  6. The Design of Everyday
    Things
  7. 相设计精髓
  8. The Inmates Are Running the
    Asylum
  9. GUI设计禁忌
    2.0
  10. 编程珠玑
  11. 程序员修炼之道
  12. 精通正则表达式

Joel Spolsky(Stackoverflow联合创始人)

软件类管理

  1. 人件
  2. 人月神话
  3. 迅速软件开发

编程技艺

  1. 代码大全
  2. 程序员修炼之道

编程哲学

  1. 佛与摩托车维修措施
  2. 哥德尔、艾舍尔、巴赫:集异璧之大成
  3. 修模式语言

界面设计

  1. 点石成金:访客至上的Web和动可用性设计秘笈
  2. 互动设计精髓
  3. The Design of Everyday
    Things

资本运作

  1. 穿行华尔街

图表设计

  1. 形容为大家看的设计书

思维方式

  1. 影响力
  2. Helplessness On Depression, Development and
    Death

编程入门

  1. 编码:隐匿在微机软硬件背后的言语
  2. C程序设计语言

DHH(Ruby on Rails创始人)

  1. Smalltalk Best Practice
    Patterns
  2. 重构
  3. 企业应用架构模式
  4. 天地让设计
  5. 乃的灯亮着啊?发现题目的审所在

参考

  1. 哪花点儿年工夫去面试一个人
  2. What is the single most influential book every programmer should
    read?
  3. Recommended Reading for
    Developers
  4. Book Reviews — Joel
    Spolsky
  5. The five programming books that meant most to
    me