站在巨人的肩膀上 (转)
看到博客园在轰轰烈烈地讨论程序员的基础/基本功问题,正好在devlicio.us上看到Billy McCafferty撰写的《站在巨人的肩膀上》一文,推荐一下:
Standing on the Shoulders of Giants
http://devlicio.us/blogs/billy_mccafferty/archive/2007/11/12/standing-on-the-shoulders-of-giants.aspx
文中说到,随着这个世界越来越依赖我们的实践,作为计算机行业的从业人员,对计算机行业的 science 实在有必要给与应有的尊重。行动的第一步,就是阅读一些经典的著作,掌握前人/前辈/行业大家们总结出来的知识和行之有效的实践,在日常实践中使用这些知识和实践,成为一个更好的开发人员。他将这些著作分成五大类:
基本读物(Foundational Texts) (每个开发人员都应该读的,没有例外,不管什么经验或平台。这些读物注重讨论如何编写更好,可维护的代码,向坚实的面向对象设计过渡)
- Code Complete, 2nd Ed. by Steve McConnell (【中文版】代码大全(第二版),金戈译,电子工业出版社出版)
- Refactoring by Martin Fowler (【中文版】重构:改善既有代码的设计,侯捷译,中国电力出版社出版)
- Refactoring Workbook by William Wake
- Applying UML and Patterns, 3rd Ed. by Craig Larman (【中文版】UML和模式应用:面向对象分析与设计导论,姚淑珍译,机械工业出版社出版) 以及 UML Distilled, 3rd Ed. by Martin Fowler
- Object-Oriented Design Heuristics by Arthur Riel (【中文版】OOD启思录,鲍志云译,人民邮电出版社出版)
学徒读物(Apprenticeship Texts)(这些读物帮你从代码的层次转移到从高的层次来看待实现,以完善项目整体为目的)
- The Pragmatic Programmer by Andrew Hunt (【中文版】程序员修炼之道——从小工到专家,马维达译,电子工业出版社出版)
- Patterns of Enterprise Application Architecture by Martin Fowler (【中文版】企业应用架构模式,王怀民译,机械工业出版社出版)
- Test-Driven Development by Kent Beck (【中文版】测试驱动开发,崔凯译,中国电力出版社出版)
- Refactoring to Patterns by Joshua Kerievsky (【中文版】重构与模式,杨光译,人民邮电出版社出版)
- Head First Design Patterns by the Freemans (【中文版】Head First设计模式,UMLChina译,中国电力出版社出版) 以及 Design Patterns (【中文版】设计模式:可复用面向对象软件的基础,李英军译,机械工业出版社出版)
熟练技术人员读物(Journeyman Texts)(这些读物转向“把东西整合起来”,涉及软件开发过程,并深入计算机科学后面的“science”)
- The Mythical Man-Month by Frederick Brooks (【中文版】人月神话,UMLChina译,清华大学出版社出版)
- User Stories Applied by Mike Cohn
- Agile Software Development (【中文版】敏捷软件开发:原则、模式与实践,邓辉译,清华大学出版社出版) 或者 Agile Principles, Patterns, and Practices in C# by Robert Martin
- Applying Domain-Driven Design and Patterns by Jimmy Nilsson
- Rapid Development by Steve McConnell
- Extreme Programming Explained, 2nd Ed. by Kent Beck (【中文版】解析极限编程--拥抱变化(第二版),雷剑文译,电子工业出版社出版) 以及 Agile Project Management with Scrum by Ken Schwaber (【中文版】Scrum敏捷项目管理,李国彪译,清华大学出版社出版)
- Introduction to Algorithms by Thomas Cormen
专家初始读物(The Beginnings of Mastery)(这些读物帮你磨练技术,帮助提高团队的效率)
- Domain Driven Design by Eric Evans (【中文版】领域驱动设计--软件核心复杂性应对之道,陈大峰译,清华大学出版社出版)
- Working Effectively with Legacy Code by Michael Feathers (【中文版】修改代码的艺术,刘未鹏译,人民邮电出版社出版)
- Agile Estimating and Planning by Mike Cohn (【中文版】敏捷估计与规划,宋锐译,清华大学出版社出版)
- Lean Software Development by Poppendiecks (【中文版】敏捷软件开发工具——精益开发方法,朱崇高译,清华大学出版社出版) 以及 Implementing Lean Software Development
专家读物(Mastery Texts)(虽然不是必读,但下面这些读物助你进入纯计算机科学的领域,最少也向你示范我们的工作有个坚实的定量科学的基础)
- The Art of Computer Programming, Volume 1: Fundamental Algorithms, 3rd Ed. by Donald Knuth 第 2, 3, 4 卷(以及相关著作) (【中文版】计算机程序设计艺术 1-4卷,苏运霖译,机械工业出版社出版)
- Concrete Mathematics: A Foundation for Computer Science, 2nd Ed. by Donal Knuth