​  之前总结了“软件测试十本书”,对从事软件质量验证和确认工作的基础知识进行简介。
  软件花钱最多、耗时最长、投入人力和工资最大的,是在开发过程。
  根据个人经验,推荐软件开发相关的十本书,供入门和进阶参考,坐等拍砖员。

1)代码大全

软件开发十本书_模式软件开发十本书_模式_02

  软件开发世界的“入口地图”。
  软件行业人员的“新手圣经”。
  专业软件程序员的“百科全书”。
  经典中的经典,大师中的大师,众多大咖联名点赞。
  本书总结、归纳了,软件工程业行之有效的、细节具体的实践知识,让你可以利用前人智慧、避免重蹈覆辙。如,通过“隐喻”理解和表达软件,高质量的编程经验细节,软件质量改进方法,软件集成,软件人员,等等。
  几乎每一章,都是描述了软件职业的一个深入方向,每章的“更多资源”,是更多本的深入学习的经典书籍。
  本书近1000页,适合先系统化学习,了解全貌,再随时查阅,或深入研究。

  PS:如果你想做一个真正的“软件行业”相关人员,本书必读。


2)程序员修炼之道--从小工到专家

软件开发十本书_软件开发_03软件开发十本书_模式_02

  1999年首版,“Pragmatic系列”图书的开山之作。
  职业程序员的“工匠精神修炼之书”。
  本书可以理解成《代码大全》的精华版和提升版,适合有一定年限经验的程序员。
  本书两位作者:大卫托马斯(David Thomas),安迪亨特(Andy Hunt),都是程序员大牛,也是“敏捷宣言”发起人之二,他俩把各种实战经验总结、提炼成一条条的程序员“心灵鸡汤”,并把鸡汤的营养、配方、制作过程、火候掌握等,都简要地展现出来,中间还穿插着各种段子,帮助程序员修炼成为熬制只有品牌鸡汤的大师傅。
  摘录几条喜欢的:
  关心你的技艺(Care About Your Craft)
  思考!你的工作(Think!About Your Work)
  不存在最终决策(There Are No Final Decisions)
  ......


3)走出软件作坊

软件开发十本书_企业_05软件开发十本书_模式_02

  本书可以理解为《程序员修炼之道》的农村版,是中国大多数小厂码农的“生存及发展之道”。
  本书的一个副书名,很好地体现了这一个主题:三五个人,十来条枪,如何成为开发正规军?
  作者阿朱,在书中总结和提炼了自己和他人的实战经验,对没有进入头部大厂的程序员,犹如一盏指路明灯,让我们敢于直面现实,远离眼高手低的无用抱怨,明确明天的目标,做好手边的事,一步一步发展壮大。
  个人认为本书最有价值的是,为大家展现了一个软件类创业公司的方方面面:内部的需求、设计、编码、测试、发布,外部的售前、报价、实施、运营,产品怎么定位,员工如何考核,组织怎么建设,为初创公司CEO描述了可能遇到的问题、并提供了实操性极强的解决方法。
先生存,再发展。

 
4)深入理解计算机系统

软件开发十本书_模式_07软件开发十本书_模式_02

  计算机系统方面的“经典之作”。
  国内外顶级学校的计算机专业教科书。
  本书的直面翻译:程序员看计算机系统(Computer Systems: A Programmer's Perspectives)。
  作者Randal E.Bryant、David R.O’Hallaron,是卡内基梅隆大学教授的教授,超过30年的经验。
如果说常规计算机专业课是集中本体、忽略边界,这本书则是以集中于整体运行为主,再关联边界上的各个专业重要概念。本书犹如串接珍珠的丝线,把各个计算机专业基础课的关键知识点,连接成魅力四射的珍珠项链。数值表示、数据结构、程序设计、编译、汇编、算法优化、操作系统、处理器、存储器、网络、并行计算,一个个独立的干巴巴的概念,在这本书中鲜活起来。
  看到前言里如此诱惑的字符串:“如果你学习和研究这本书里的概念,你将步入稀缺的“权威程序员”的行列......”,你还不行动吗?


5)编码:隐匿在计算机软硬件背后的语言

软件开发十本书_程序设计_09软件开发十本书_模式_02

  计算机科普方面的“经典之作”。
  作者Charles Petzold,是微软公司设计Windows系统的大牛。
  本书从十岁儿童的视角出发,采用成长学习法:由日常电器手电筒开始,介绍莫斯密码,布莱叶盲文,制造出“拐弯通信”的电灯系统;然后从发报机、断电器、十进制、二进制,引导出二进制电灯控制系统“继电器”;再结合布尔系统,封装出电路的基本单位,与门、非门、与非门、或非门、反相器、缓冲器;构造出初级组件:加法器、触发器、选择器、译码器、锁存器、振荡器;组合出计算机系统:时钟、CPU、存储器、总线、操作系统、GUI。看了本书,才发现对计算机系统,理解不如“十岁儿童”。
  本书和上一本书一起看效果更佳,一个从专业程序员角度,一个从十岁儿童角度。


6)敏捷软件开发:原则、模式与实践

软件开发十本书_模式_11软件开发十本书_模式_02

  敏捷开发的“扛鼎之作”。
  第13届震撼(jolt)大奖图书。
  作者Robert C.Martin,是软件开发和软件工程专家,敏捷宣言发起人之一。
书名副标题显示了作者的逻辑,而且也达到了这个效果:原则、模式、实践(Principles, Patterns, and Practices),本书变成敏捷类书籍的标准模板。
  本书正式对外宣导了“敏捷开发”,总结了之前极限编程、测试驱动开发、拥抱变化、重构的重要内容,描述了面向对象设计重要思想和一些常用设计模式,并通过展示案例把原则和模式结合起来。
  如果说“深入理解计算机系统”串联了计算机系统,本书则是串联了“敏捷开发方法论”。
  本书包含了接下来三本书的关键思想和核心内容。

 

7)面向对象分析与设计

软件开发十本书_软件开发_13软件开发十本书_模式_02

  OOAD的“经典之作”之一。
  深入理解各类设计模式书籍的“基石”。
  作者Grady Booch,UML的创始人之一,Rational产品的开拓者之一。
本书用严密的逻辑、经典的案例、搞笑的漫画,详细描述了软件系统的复杂性,程序设计语言的发展,面向对象的要素,类和对象的本质和关系,如何正确分类,如何用UML表示设计,最后还展现了5个应用案例。
  如今,“面向对象”相关概念已经泛滥成灾,我们都认为很重要,资料汗牛充栋,但却感觉无从下手;学习本书能正本清源,还面向对象一个清白。
  个人感觉,本书的结构以及作者,对Robert C.Martin有启发作用,让他能站在巨人的肩膀上,青出于蓝而胜于蓝。

 
8)Head First设计模式

软件开发十本书_程序设计_15软件开发十本书_模式_02

  Head First系列(深入浅出XXX)的“奥运代表”。
  设计模式类书籍的“颠覆之作”。
  第15届震撼(jolt)大奖图书。
  设计模式的书非常多,大多专业性强,以代码和文字为主,可读性不足,让无数人叹为观止又望而生畏。这里的四位作者聚集计算机专家、作家、讲师、艺术家、媒体专家的能力,以图示、故事为主,文字内容为辅,为观众呈现了一道立体感十足的设计模式大餐:火箭鸭、气象站、星巴兹咖啡、披萨店、巧克力工厂、万能遥控器、黑话菜单、糖果机等等,让食客不知不觉就爽爽地吃下了一个设计模式快餐,还感觉意犹未尽,想吃更多。
  先看完这本爽文,再去啃其他专业书籍,不会让人因噎废食,反而更容易增肌加肉。


9)重构:改善既有代码的设计

软件开发十本书_程序设计_17软件开发十本书_模式_02

  敏捷开发的“垫脚石”。
  重构了重构(Refactoring)这个词,成为一种方法论。
  作者Martin Fowler,软件开发、演讲专家,也是敏捷宣言发起人之一,和上面几位不是同事就是朋友。
  本书角度独特,聚焦于改善现有代码而非新代码,聚焦于改善设计而非编码,描述了重构的原则(测试驱动开发、自动化测试),使用了“代码味道”(Code Smell)来描述待改进的地方,列出了20多种经典的代码臭味和改善方法。
  本书和《反模式》有关,又比《反模式》走得更远,成为后续敏捷开发、持续集成中的不可或缺之基石。


10)C程序设计语言

软件开发十本书_原则_19软件开发十本书_模式_02

  计算机语言书籍的“开山之作”。
  计算机语言书籍的“星星之火”。
  作者Brian W.Kernighian,Dennis M.Ritchie,是贝尔实验室的大牛,Dennis 还获得了“图灵奖”。
  本书1978年发布第一版,是所有计算机语言书籍的模板,经典的“Hello World”从此出发;几十年来的升级版内容都大致相同;书籍100多页,还包含了三部分,一是C语言本身,如关键字、控制流、函数、指针、数据结构等,二是输入、输出、库,三是操作系统的接口,把“KISS”原则体现的淋漓尽致。
  可以说,学习了这本书,并做完所有的练习题,你已经是一名可以上岗的初级程序员了。


  历史的长河中,软件正在乘风破浪,关于软件开发的书籍也如过江之鲫,本文主要选取关于软件设计、思维、工程方面的相对通用的经典之作。以上推荐,仅为抛砖引玉,期待大家更多的分享交流。

软件开发十本书_程序设计_21软件开发十本书_模式_02