文章千古事、得失寸心知
这些年,读过的技术经典图书
成晓旭:欢迎转载
行千里路、读万卷书;历数十项目、编百万代码。十来年风雨IT路,上百本沉寂专业书。
佛说:一花一世界、一叶一菩提;书对于人,可以牵强附会为:一师一派宗、一书一扇门。良师开宗立派,一道相传;好书常常为读者开启通向人生另一端的智慧之门。
关于阅读,总离不开阅读的时间;人会随着时间的推移发生工作环境的变化。通常情况下,所读的书籍也会随之变化;反之也行,先有意识地选择性阅读一些书籍,储备未来需用的知识。书籍、时间和职业发展之间的关系,我习惯用下图来表示:
关于软件研发领域,书籍、阅读和职业发展,粗浅总结几点:
1,不要一直只看技术书籍,更不要只看软件开发方面的书籍;
2,开发语言,只需要选1本纯语言基础方面的书,深入学习就足够了;第二本通常都是多余的;
3,各个应用领域的专项书籍,通常是不需要买书看的,那些号称最权威的数据库开发指南、网络编程实战、多媒体开发秘决,基本上全是出版社自我吹嘘的宣传字眼,不具参考价值;认真参与项目跟项目经理好好学,找前辈的方案、设计文档、代码,多沟通讨论,比看任何书都有效;
4, 技术基础牢固以后,一定要去系统学习软件工程、需求、分析、设计、测试等环节的其他知识;即使只想做技术牛人,也不要只会编码;要编好的代码,架构、设计、甚至测试,都是考核代码好坏的标准;
5, 不看书学习的架构师,常常是刚愎自用、鼠目寸光的架构师。软件系统架构,发展到今天,我们能遇到的绝大部分应用,基本上都有成型的、甚至成熟的技术解决方案和系统架构模式;因此不要被自己狭隘的项目实战经验所禁锢,认真去学习前辈们在多年的失败经历中沉淀下来的稳定、可靠和成功的软件架构的方法论、原则、模式和实例;
6, 尝试去看看管理方面的书,及时压根就不想做管理者。没做过领导者的人,永远不会是好下属,起码从来没站在管理者的角度看过问题,难以理解软件项目研发过程中技术之外的很多事情。
初步整理这些年看过的具有代表性、对个人的职业发展历程产生显著影响的书籍,并附会个人的一点浅薄的认识和阅读时真实的体会。文章千古事、得失寸心知,相信每个人读者对同一本书籍都会有自身独特的体会和特定的感受,因此本文内容仅供参考、不作书评。
这些年,读过的技术经典图书:
序号 | 类型 | 书名 | 书籍概况 | 阅读体会 |
1 | 语言类 | Delphi4开发大全 | 全面介绍语言、基础结构、以及在UI、数据库、网络等方面的应用技术。毕业后自学的第一门语言。 | 大而全的书,注定浅尝辄止;学任何语言都没必要买这类书。1999年此书175元,那时猪肉5元,现在15元,此书折现约525元,贵! |
2 | 语言类 | C++编程思想 | 讲的不是C++,而是面向对象;不是C++语言的思想,而是用C++进行面向对象程序编程的思想。基础不扎实反对直接看此书,免得把很多概念搞混了,以后很难理得清。 | 建议先有一定的C++语言基础后,在看此书;或者用C++开发一年年半载后再看。 |
3 | 语言类 | Windows核心编程 | 规规矩矩讲win32程序设计原理,对进程、线程、内存、文件、堆栈等的应用说得很透彻;是90年代学windows编程必修之课。 | 没有IDE,让现在大部分软件工程师写一个windows的计算器,可能觉得无从下手?当然,也没这个必要。推荐做大型服务器、高性能、高效率、高IO等特殊系统的软件工程师参考此书。 |
4 | 语言类 | JAVA2编程指南 | 只介绍Java语言语法、基础数据结构的书籍,作者讲课的思路非常好,循序善诱、逐层深入,很容易接受。本人学Java第一本书,那时《Java Programmer Lanage》还没出版。 | 此书一直有后续版本,是初学Java语言入门级推荐书籍之一,比《Java Programmer Lanage》更浅显易懂,书中实例非常不错。 |
5 | 语言类 | The Java Programming Language | 只介绍Java语言语法、基础数据结构的书籍,后面有章讲Java标准包,非常不错,刚学的时候,天天在公交车上背。本人学Java第二本书, | 如果说Java语言只看一本书就能真正入门的话,非此书莫属。 |
6 | 语言类 | J2EE without EJB | Spring之父在spring尚未完全成熟之前,关于传统J2EE产品开发经验的总结和方式。本书阐述的观点奠定了spring的雏形,也敲响了sun EJB企业级应用系统架构的丧钟。 | 彻底颠覆对J2EE开发认知、摒弃EJB开发Java应用系统的转折之作;此前看了一堆开发J2EE企业级应用系统的所谓实战专家的专著。建议学spring都先看看此书,以便知道为什么会有spring,以及spring所解决的核心问题。 |
7 | 语言类 | Spring框架高级编程 | 中规中矩介绍基于spring开源框架进行J2EE企业级应用系统开发的操作指南。与《J2EE without EJB》相比,已无超越的理念和精妙的技巧出现。 | 在我看来,spring本身仅仅是作者在特定领域的个人设计经验和项目经历的升华与提炼;尽管第一次看《J2EE without EJB》为作者巧妙的技巧折服。 |
8 | 语言类 | 代码大全2 | 软件编码全过程“奇技淫巧”的大杂烩。其中能找到很多经典设计模式的影子、经典开源框架的核心技术雏形、经典编码、设计原则的示例、典型违背编码、设计原则的教训实例,各种各种,不一而足。 | 有了这一本书,其他关于编码技巧的书都可以省了。3点体会:1,此书不适合初学者阅读,没2,3年实际编程经验者慎入;因为感同身受才能刻骨铭心。2,此书不是编程地图,不能按图索骥;不建议遇到问题再去书里找答案;3,细心阅读,静心体会;顿悟作者这些编程招式的精髓,变成自己对软件领域计算问题认知,慢慢忘掉这些技巧,方能无招胜有招。看完此书,本人正式从软件江湖退隐。 |
9 | 系统类 | Windows操作系统原理 | 第一本以windows操作系统为蓝本讲解计算机操作系统的书籍,介绍windows进程管理,内存管理、存储管理等内容。对于进程间通信、软件性能优化或底层驱动开发,都有较好的参考价值。 | 任何软件开发人员都应该深入了解你的软件所运行的操作系统,应用软件总是运行于操作系统之上;熟悉操作系统底层会让你在软件开发过程中少遇到很多莫名其妙的问题。(运行于各自虚拟机上的软件可例外,此时需要去深入了解虚拟机。道理一样) |
10 | 系统类 | windows网络编程技术 | 基于Windows操作系统,以windows API为依托,比较全面的介绍网络通信的基础知识;此书为我在通信领域做数据采集、网络服务器打下坚实的基础。 | 此书需具备windows编程、网络通信、TCP/IP协议等基础知识;此书内容很基础,适合于各种做数据传输、网络通信、流媒体服务、P2P等领域的工程师打基础;网络通信技术不复杂,更多的是系统架构和设计经验。 |
11 | 领域类 | 应用密码学 | 第一本关于系统讲解各类加解密算法及原理的密码学专著;那几年一直从事信息安全产品研发,此书是第一本真正带我进入信息安全领域的领路人,很遗憾没有在这个领域坚持做下去。记得当年去图书馆借一本关于密码学方面的图书,必须单位出证明,并承诺不得扫描、照相和复印,才能借出来。 | 从事数据加解密或信息安全领域,自己编写加解密算法,需看此书。提醒一下,要看懂此书并不需要特别高深的数学基础,业界很多人喜欢讹传数学对应用领域的算法、密码学的重要性。 |
12 | 领域类 | 密码编码和密码分析:原理与方法 | 系统介绍密码学起源、方法、目标和信息安全传递方法的里程碑式专著;并对主流的对称、非对称的密码学体系进行了全面的总结和对比分析;后半部分对主要的信息破解手段进行了详细的阐述。彻底颠覆我对密码学和信息安全的认知,初窥密码学门径之作。 | 致力于从事信息安全传输、数据分析、协议破解和简单密码破译,可认真研究此书;深入理解信息转换、混淆和逆向分析、还原的思路和数学原理,定能在信息安全领域登堂入室。彻底看懂此书数学水平越高越好。 |
架构类、工程类待续…… |