我是谁,十年里看了哪些书?有什么用?
大家好,我是黄禅宗,PhalApi开源接口框架的作者,果创科技的创始人。大学专业是软件工程,经历过的行业有游戏开发、广告、电商、教育行业等系统的开发,曾经在唯品会任PHP高级开发工程师,曾经在租租车任技术经理,现在在技术创业路上。
先简单分享下我的读书经历。
在上大学之前,我是不怎么喜欢看书的,但上大学后,我变得非常爱看书,特别爱看和我专业有关、以及我看不懂或看起来很痛苦的书,因为这证明我又要学到新的东西和知识了。
在上大学期间,我会经常到学校图书馆看书,借书,看到特别好的书,那会很想买但又舍不得买,因为编程相关的书普遍都很贵(不知道为什么),其次买的书回来以后毕业了要搬家时会很麻烦(因为书都很重)。但我都会用一本笔记,把我钟爱的书名记下来,等哪天我买房了,就把这些书一本一本“娶”回来。
毕业工作后,在租房那几年,我每个月都会持续在亚马逊上买书回来看,基本上专业书占一半,非专业书占另一半。看完一批,又上亚马逊再买一批。可惜后来,不知为什么,突然有一天,亚马逊上居然不卖纸质书,只卖电子书!!伤心欲绝。基本上,那几年,平均每年我都会花1000~2000块钱在亚马逊上买书来看,并且不断应用到实际工作中和项目开发中,进行创新、执行和实践,效果和收获还是很明显的。最重要的是,以前怎么想也想不通的问题,最终都能在书中找到我想要的答案,茅塞顿开!
现在的我,依然坚持看书。反倒,现在,看书对我来说是件最轻松的书了。累的时候,看会书,很安静,很放松。
同时,也推荐同为程序员的你,多看一些书,会很有启发性。毕竟,作者经过几年或十几年甚至几十年的经验积累、思想总结和实践验证,还要花几个月或半年甚至几年时间整理成书,最后经过出版社印刷,经过层层环节,耗费大量心血才出来的一本书,到你手上,是非常有价值的。
以下,分类整理了一下我看过的专业书,分享给大家。按推荐的顺序进行依次阅读,或者很能容易每个领域的整体脉络。最后,也顺便分享我写的两本电子书。
程序员读书清单推荐
首先,以下都是我买回来并看完的书,按分类整理给大家。书会有点多,可以收藏后,慢慢看。如果只是想快速看下有哪些书,可以看以下简明的清单。
第一类,项目管理
1-1、《人件》
1-2、《人月神话》
1-3、《项目百态:软件项目管理面面观》
1-4、《Scrum敏捷软件开发》
1-5、《软件开发成功路线图:敏捷模式》
1-6、《增量承诺螺旋模型——系统和软件开发的成功之道》
第二类,设计模式
2-1,《建筑的永恒之道》
2-2,《设计模式:可复用面向对象软件的基础》
2-3,《深入PHP:面向对象、模式与实践(第3版) 》
2-4、《大话设计模式》
2-5、《设计模式解析(第2版)(修订版)》
2-6、《重构与模式》
2-7、《反模式——危机中软件架构和项目的重构》
第三类,技术管理
3-1、《轻松做中层》
3-2、《格鲁夫给经理人的第一课:英特尔创始人自述(畅销版)》
3-3、《布道之道:引领团队拥抱技术创新》
3-4、《执行:如何完成任务的学问(珍藏版)》
第四类,系统架构
4-1、《恰如其分的软件架构:风险驱动的设计方法》
4-2、《架构之美》
4-3、《软件架构师的12项修炼》
4-4、《面向模式的软件架构(第1卷):模式系统 》
4-5、《企业应用架构模式》
第五类,编程语言
5-1、《代码整洁之道》
5-2、《代码大全(第2版)》
5-3、《编程珠玑(续)》
5-4、《Scala函数式编程》
5-5、《Ruby元编程》
5-6、《Go程序设计语言(英文版)》
5-7、《修改软件的艺术 构建易维护代码的9条最佳实践 》
第六类,专业技能
6-1、《UML和模式应用》
6-2、《测试驱动开发:实战与模式解析》
第七类,最具启发性的书籍
7-1、《浮现式设计:专业软件开发的演进本质》
7-2、《重构:改善既有代码的设计》
7-3、《领域特定语言》
7-4、《持续交付:发布可靠软件的系统方法》
7-5、《软件随想录》
7-6、《发布!设计与部署稳定的分布式系统》
第八类,程序员软技能
8-1、《软件工艺师:专业、务实、自豪 》
8-2、《程序员修炼之道:从小工到专家》
8-3、《清单革命》
8-4、《番茄工作法图解:简单易行的时间管理方法》
8-5、《六顶思考帽》
8-6,《考拉小巫的留学成长日记:写给在人生路上不曾停步的人》
第九类,我写的电子书
9-1、《良质!PHP企业级系统开发》
9-2、《初识PhalApi:探索接口服务开发的技艺》
分类不分先后,但每个分类里面的读书顺序可根据自己的喜欢来读。
程序员读书清单概要介绍
第一类,项目管理
1-1、《人件》
经典必读,只有更好更深入了解人、项目和流状态,才能更好的管理项目。
1-2、《人月神话》
又一经典必读,和《人件》搭配,最佳组合。
1-3、《项目百态:软件项目管理面面观》
失败的项目,和成功的项目。幸福都是一样的,痛苦就各有各的不同。
1-4、《Scrum敏捷软件开发》
1-5、《软件开发成功路线图:敏捷模式》
理解与实践相结合。
1-6、《增量承诺螺旋模型——系统和软件开发的成功之道》
和敏捷开发、Scrum不太一样的另一种软件交付方式和模型,进一步控制风险和把控项目进度。
第二类,设计模式
设计模式,是我最喜欢的专业科目之一。
2-1,《建筑的永恒之道》
这本书,在很多设计模式的书里面都有提到。虽然它本身不是写给软件行业的,而是亚力山大写给建筑行业的,但看下来,会非常有启发性,其思想高度极其厉害,真的无法用言语形容。
里面也有很多经典的语句,例如:
无心之心,道之所存。
建筑的永恒之道》扉页
2-2,《设计模式:可复用面向对象软件的基础》
接下来,可以阅读这本经典的教科书,由GoF4 设计模式的四位原作者 编写的,是设计模式这一领域的开山之作。里面有很多知识点和专业解说,每一个模式和原则,都是非常有用的。或许你在看的时候还感受不到,但有一定项目后,你会发现,真的很受用!
2-3,《深入PHP:面向对象、模式与实践(第3版) 》
如果你是PHP开发,可以再看下这本书,以便可以在实际项目开发中,快速应用设计模式;如果你不是PHP开发,可以先跳过这本书。
2-4、《大话设计模式》
如果你觉得设计模式的理论、思想还是很抽象,那么可以再看下这本书。这本书以生动的小故事和人物,把设计模式更平民化、更白文化地介绍给了大家。风趣,好学,容易理解。
2-5、《设计模式解析(第2版)(修订版)》
当你有了一定项目经验后,并且也应用一段设计模式后,会有一些心得和更多的问题。那么,是时候看一下《设计模式解析》这本书了。如果你的项目经验还不是很丰富,提前看这本书,反而不会有太多的共鸣和同感。
2-6、《重构与模式》
当新项目应用设计模式后,一段时间后,或许你该提前看下《重构与模式》了。提前为将来重构当前系统做好知识准备,并且也有可能需要立即重构其他现有的系统。
2-7、《反模式——危机中软件架构和项目的重构》
作为模式的反面,本书从另一方面讲述了有哪些不好的模式,并且应当在项目过程避免和消除。
第三类,技术管理
3-1、《轻松做中层》
提前看一看,至少对走管理路线,有个大概的认知和了解。说不定哪天就突然让你当TL了呢?
3-2、《格鲁夫给经理人的第一课:英特尔创始人自述(畅销版)》
偏执狂,大佬人物写给职业经理人的书。
3-3、《布道之道:引领团队拥抱技术创新》
不仅要管理好团队,还要不断通过技术进行创新,创造新的价值。
3-4、《执行:如何完成任务的学问(珍藏版)》
培养自己和团队的执行力,把不可能完成的任务变成可能。
第四类,系统架构
4-1、《恰如其分的软件架构:风险驱动的设计方法》
以最优的方案,满足最苛刻的要求。恰如其分,不多不少;风险驱动,保证完成。
4-2、《架构之美》
工程、艺术和不同行业的结合,架构,它真的很美。
4-3、《软件架构师的12项修炼》
如果都能做到或满足,离架构师就远啦~
4-4、《面向模式的软件架构(第1卷):模式系统 》
一个系列的书,比较偏理论,学术型的书箱,但总结和提炼得非常到位。
4-5、《企业应用架构模式》
最后,但也是最重要,最值得推荐的一本书。当我看到这本书时,真的有一种相见恨晚的感觉。里面的内容和总结,以及架构模式,非常中肯到位,仿佛你正在做的项目他都知道,你将要做什么系统,他也知道。因为模式都是相通的。买它买它买它!
第五类,编程语言
5-1、《代码整洁之道》
童子军原则,让营地比你来时还要干净!
如果这个项目,有人写了第一行代码和第一段代码,基本上就定型了整个项目的代码风格和整洁的程度。因为后面的人会参考,会复制,会以此为模板。书很厚,慢慢品读。
5-2、《代码大全(第2版)》
又是一本很厚的书,而且还很贵,原价100多块钱,不过搞活动时,50多买到了。但很值得一读。
5-3、《编程珠玑(续)》
“谁知屏中码,行行皆辛苦。”写代码,每一行,每个语法,每个函数,都有非常微妙的区别。
5-4、《Scala函数式编程》
基于Java语言,另一种编程范式和思想。
5-5、《Ruby元编程》
你见过用代码生成代码吗?比如写行代码,为这个类加一个方法。来看看Ruby吧,新技能 Get!
5-6、《Go程序设计语言(英文版)》
5-7、《修改软件的艺术 构建易维护代码的9条最佳实践 》
编写机器能识别的代码不难,但要想写出每个人都能容易理解的代码,很难。
第六类,专业技能
6-1、《UML和模式应用》
作为一名专业的工程师,一定要学会画图纸,并且是正宗的UML建模。能看得懂每个箭头、每个图形的意思,同时也能快速整理和表达。
6-2、《测试驱动开发:实战与模式解析》
TDD,真的很有启发性,很有帮助。一定要抽时间,好好学习一下测试驱动开发。在提测之前,一定要对自己的代码和功能进行自测,保证提测的质量。有一次,我做了一个贼复杂的需求,提测很久后都没见测试妹子找我。我忍不住问她,“那个需求,开始测试了吗?”。回复说,“测完了,没有问题”。顿时,还有是很有成就感的。但确实自己也做了充分的测试,用代码证明代码。
第七类,最具启发性的书籍
7-1、《浮现式设计:专业软件开发的演进本质》
软件开发过程中的不断演进,正如前面《建筑的永恒之道》里所说的,要忠于本质,不是我要这么写代码,而是这个系统本来就应该这样开发。但每个阶段,都有不同的约束和要求,找到最贴合当时的设计,不断实践探索更符合本质的实现。
7-2、《重构:改善既有代码的设计》
以前在部队,叠豆腐块被子的方法就是:3分靠叠7分靠整。代码也是一样,需要不断的重构,逐步完善。惭变优于巨变。我最敬佩的Martin Fowler的又一本经典之作。对于修改和维护旧系统,会非常有帮助。
7-3、《领域特定语言》
曾经我述职演讲中,我讲到了DSL作为我接下来计划的一部分。结果没有评委问到这块,后来别人和我说:“聊天止于DSL”。为什么?因为这块比较难、比较罕见。但我觉得,还是很有用的,特别对于技术之技术,科学之科学上。
DSL可以让不懂技术编程的人,只需要编写符合他们领域的表达字母,就能实现他们要的效果,不是非常棒吗?例如,一名化学家,写一句:H2O,就能出来一个水分子,再写几个字母出来另一个分子结构,按一下回车,立即发生反应,还支持回滚后退,多棒呀!跟玩仿真机似的。
7-4、《持续交付:发布可靠软件的系统方法》
关于CD,从此打开了另一个神秘的世界。
7-5、《软件随想录》
没有灵感时,读一读,或许又会有新的灵感,和新的突破。
7-6、《发布!设计与部署稳定的分布式系统》
发布上线,是非常重要的一环节。故障和恶梦,就从这一刻开始。好的发布系统,不仅能节省人力成本,提高上线速度,还能有效进行风险控制,降低发布的故障率,保障SLA服务质量。
第八类,程序员软技能
8-1、《软件工艺师:专业、务实、自豪 》
非常有指导性的一本书,类似社交礼仪一样,能教会你成为一名更优雅、斯文的软件开发工程师。我曾经还邮件和原作者沟通过我对于这本书的感觉,真的很棒!!
8-2、《程序员修炼之道:从小工到专家》
还是很不错的一本书,从小白到专家,以及可以知道专家到底是长什么样的。
8-3、《清单革命》
畅销书,别看很简单,做好备忘,做的很重要。事事有回应,件件有着落。
8-4、《番茄工作法图解:简单易行的时间管理方法》
GTD,学会时间管理,高效工作,合理分配时间。
8-5、《六顶思考帽》
以前在唯品会任职时,还在唯品大学专门上过这门课。讲的是在会议或其他场景,如何有效思考和组织。
第九类,我写的电子书
最后,补充我自己写的两本电子书。
9-1、《良质!PHP企业级系统开发》
围绕企业级系统开发,以PHP为编程代码,讲述如何进行大型的系统开发。
9-2、《初识PhalApi:探索接口服务开发的技艺》
介绍PhalApi开源接口框架1.x版本的设计和使用,2.x版本也可以参考。
本文分享自微信公众号 - 小白开放平台(yesapi)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。