괜찮은 책을 찾는 방법 중 하나는 신뢰도 있는 목록을 찾는 것입니다. 졸트 어워드(Jolt Award) 같은 수상작 모음도 있을테고, 베스트셀러의 참고 문헌 목록도 있습니다. 아마존 같은 대형 서점의 베스트셀러도 괜찮은 목록이구요.

그런데 이런 정보들에 점수를 매겨 순위를 정리한 목록이 있길래 한번 소개해 보려 합니다. 국내 블로거 중 몇 분(대표적으로 jhrogue 님)이 자신의 평가를 붙인 글을 올리기도 했는데요. 원문은 「Top 100 Best Software Engineering Books」입니다.

이 목록의 저자는 1. 아마존 리뷰 개수 2. 아마존 평점 3. 구글 검색 결과 개수 4. 졸트상 수상 여부를 점수화했는데요. (자세한 계산 방법은 저자의 블로그에 있습니다.) 국내와 조금 상황이 다르긴 하더라도 꽤 괜찮은 목록임에는 분명하겠지요?

번역서가 있는 경우 번역서 제목을 추가해 두었지만, 절판인 경우도 더러 있으니 꼭 필요하시다면 도서관도 잘 활용해보세요. 또, 아직 번역되지 않은 책 중에 번역 중이라는 소식을 들은 책도 가끔 눈에 띄니 2010년엔 만날 수 있기를 기대합니다.

정리해놓고 보니 괜찮은 자료는 거의 다 번역되었네요. 아직 안 보신 책들이 있으면 이번 기회에 질러보세요. ^^ (이거 표시하는 것도 꽤 힘드네요. 헥헥;;)

Top 100 Best Software Engineering Books

먼저 Top 10부터 보시면… (Top 10만 기억하는 세상… ;;)

1. Steve McConnell / Code Complete(2nd Edition) / 2004

(Code Complete / 정보문화사 / 2005)

2. Elisabeth Freeman, etc. / Head First Design Patterns / 2004

(Head First Design Patterns, 한빛미디어, 2005)

3. Steve McConnell / Rapid Development / 2003

(Rapid Development: 프로젝트 쾌속 개발 전략 / 한빛미디어 / 2003)

4. Erich Gamma / Design Patterns / 1994

(GoF의 디자인 패턴 / 피어슨 / 2007)

5. Bruce Schneier / Applied Cryptography (2nd Edition) / 1995

(Top 10중 번역되지 않은 유일한 책입니다. 암호학 관련 책 같군요.)

6. Robert C. Martin / Agile Software Development: Principles… / 2002

(소프트웨어 개발의 지혜 / 야스미디어 / 2004)

7. Joel Spolsky / Joel on Software / 2004

(조엘 온 소프트웨어 / 에이콘 / 2005)

8. Tom DeMarco, Timothy Lister / Peopleware (2nd Edition) / 1999

(피플웨어 / 인사이트 / 2014)

9. Frederick P. Brooks / The Mythical Man-Month, Anniversary Edition (2nd Edition) / 1995

(맨먼스 미신 / 인사이트 / 2015 예정)

10. Martin Fowler / Refactoring / 1999

(리팩토링 / 한빛미디어 / 2012)

11. Mike Cohn / Agile Estimating and Planning / 2005

(불확실성과 화해하는 프로젝트 추정과 계획 / 인사이트 / 2008)

12. Alistair Cockburn / Writing Effective Use Cases / 2000

(엘리스터 코오번의 유스케이스 / 인사이트 / 2011)

13. Bertrand Meyer / Object-Oriented Software Construction (2nd Edition) / 2000

14. Steve McConnell / Software Estimation: Demystifying the Black Art / 2006

(소프트웨어 추정 / 정보문화사 / 2007)

15. Mike Cohn / User Stories Applied: For Agile Software Development / 2004

(사용자 스토리 / 인사이트 / 2006)

16. Donald E. Knuth / The Art of Computer Programming, 1-3 Boxed Set (2nd Edition) / 1998

(The Art of Computer Programming / 한빛미디어 / 2006)

17. Martin Fowler / Patterns of Enterprise Application Architecture / 2002

(절판 – 엔터프라이즈 애플리케이션 아키텍처 패턴 / 피어슨 / 2003)

18. Jeffrey Friedl / Mastering Regular Expressions (3rd Edition) / 2006

(절판 – 정규표현식 완전 해부와 실습 (2판) / 한빛미디어 / 2003)

19. Andrew Hunt, David Thomas / The Pragmatic Programmer: From Journeyman to Master / 1999

(실용주의 프로그래머 / 인사이트 / 2005)

20. Karl E. Wiegers / Software Requirements (2nd Edition) / 2003

(실용적인 소프트웨어 요구사항 / 정보문화사 / 2006)

21. Craig Larman / Applying UML and Patterns (3rd Edition) / 2004

(절판 – UML과 패턴의 적용 / 홍릉과학출판사 / 2005)

22. Alistair Cockburn / Agile Software Development: The Cooperative Game (2nd Edition) / 2006

(절판 – Agile 소프트웨어 개발 / 2002)

23. Gary McGraw / Software Security: Building Security In / 2006

24. Gregor Hohpe, Bobby Woolf / Enterprise Integration Patterns / 2003

(기업 통합 패턴 / 에이콘 / 2014)

25. Tom DeMarco / The Deadline: A Novel About Project Management / 1997

(데드라인 / 인사이트 / 2004)

26. Craig Larman / Agile and Iterative Development: A Manager’s Guide / 2003

27. Eric A. Marks, Michael Bell / Service-Oriented Architecture: A Planning and Implementation Guide for Business and Technology / 2006

(SOA 서비스지향아키텍처 / 엠플래닝 / 2007)

28. Thomas H. Cormen, etc. / Introduction to Algorithms, Second Edition    / 2001

(Introduction to Algorithms / 한빛미디어 / 2005)

29. Thomas Erl / Service-Oriented Architecture: A Field Guide to Integrating XML and Web Services / 2004

(SOA : 서비스 지향 아키텍처 / 성안당 / 2007)

30. Martin Fowler / UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition) / 2003

(UML Distilled / 홍릉과학출판사 / 2005)

31. Kent Beck / Extreme Programming Explained: Embrace Change (2nd Edition)    / 2004

(익스트림 프로그래밍 2판 / 인사이트 / 2006)

32. Alan Shalloway, James Trott / Design Patterns Explained: A New Perspective on Object-Oriented Design (2nd Edition) / 2004

(절판 – 알기 쉬운 디자인 패턴 (1판) / 피어슨 / 2003)

33. Grady Booch, etc. / Object-Oriented Analysis and Design with Applications (3rd Edition) / 2007

34. Jim Highsmith / Agile Project Management: Creating Innovative Products / 2004

35. Scott Berkun / Making Things Happen: Mastering Project Management / 2008

(The Art of Project Management의 2판으로, 1판 번역서가 있음 / 한빛미디어 / 2006년)

36. Jon Bentley / Programming Pearls (2nd Edition) / 1999

(생각하는 프로그래밍 / 인사이트 / 2003)

37. Paul Duvall, etc. / Continuous Integration: Improving Software Quality and Reducing Risk    / 2007

(지속적인 통합 / 위키북스 / 2008)

38. Andrew Stellman, Jennifer Greene / Applied Software Project Management    / 2005

39. Clemens Szyperski / Component Software: Beyond Object-Oriented Programming    / 1997

40. Arthur J. Riel / Object-Oriented Design Heuristics    / 1996

41. Thomas Erl / SOA Principles of Service Design    / 2007

42. Mary Poppendieck, Tom Poppendieck / Lean Software Development: An Agile Toolkit    / 2003

(절판- 린 소프트웨어 개발 / 인사이트 / 2007)

43. Ken Schwaber / Agile Project Management with Scrum    / 2004

(Agile Project Management with Scrum / 에이콘 / 2012)

44. Ken Schwaber, Mike Beedle / Agile Software Development with Scrum    / 2001

(스크럼 / 인사이트 / 2008)

45. Joshua Kerievsky / Refactoring to Patterns / 2004

(패턴을 활용한 리팩터링 / 인사이트 / 2006)

46. Alistair Cockburn / Crystal Clear / 2004

47. Steve McConnell / Software Project Survival Guide / 1997

(소프트웨어 생존 전략 / 인사이트 / 2003)

48. Tom DeMarco, Timothy Lister / Waltzing With Bears: Managing Risk on Software Projects / 2003

(소프트웨어 프로젝트에서의 리스크 관리 / 인사이트 / 2004)

49. Venkat Subramaniam, Andy Hunt / Practices of an Agile Developer / 2005

(애자일 프랙티스 / 인사이트 / 2007)

50. Kathy Schwalbe / Information Technology Project Management / 2007

51. Randall Hyde / Write Great Code: Volume 1: Understanding the Machine / 2004

(Great Code / 에이콘 / 2005)

52. Scott Rosenberg / Dreaming in Code / 2007

(드리밍 인 코드 / 에이콘 / 2009)

53. Cem Kaner, etc. / Lessons Learned in Software Testing    / 2001

(절판 – 소프트웨어 테스팅 법칙 293가지 / 정보문화사 / 2004)

54. Andy Oram, Greg Wilson / Beautiful Code / 2007

(Beautiful Code / 한빛미디어 / 2007)

55. Luke Hohmann / Beyond Software Architecture: Creating and Sustaining Winning Solutions    / 2003

(소프트웨어 아키텍처 2.0 / 에이콘 / 2009)

56. Grady Booch / Unified Modeling Language User Guide, The (2nd Edition)    / 2005

(UML 사용자 지침서 (1판) / 인터비젼 / 1999)

57. Karl Fogel / Producing Open Source Software: How to Run a Successful Free Software Project    / 2005

58. Michael Feathers / Working Effectively with Legacy Code    / 2004

(레거시 코드 활용 전략 / 에이콘 / 2008)

59. Kent Beck / Test Driven Development: By Example    / 2002

(테스트 주도 개발 / 인사이트 / 2004)

60. Per Kroll, Philippe Kruchten / The Rational Unified Process Made Easy: A Practitioner’s Guide to the RUP    / 2003

61. Thomas Erl / Service-Oriented Architecture: Concepts, Technology, and Design    / 2005

(SOA: 서비스 지향 아키텍처 / 에이콘 / 2006)

62. Cem Kaner, etc. / Testing Computer Software (2nd Edition) / 1999

63. Frank Buschmann, etc. / Pattern-Oriented Software Architecture Volume 1: A System of Patterns / 1996

(패턴 지향 소프트웨어 아키텍처 / 지앤선 / 2008)

64. Harold Abelson, Gerald Jay Sussman / Structure and Interpretation of Computer Programs – 2nd Edition / 1996

(컴퓨터 프로그램의 구조와 해석 / 인사이트 / 2007)

65. Dan Pilone / UML 2.0 in a Nutshell / 2005

66. Brett D. McLaughlin, etc. / Head First Object-Oriented Analysis and Design / 2006

(Head First Object-Oriented Analysis and Design / 한빛미디어 / 2007)

67. Johanna Rothman / Manage It!: Your Guide to Modern, Pragmatic Project Management / 2007

(매니지 잇 / 위키북스 / 2010)

68. James Shore, Shane Warden / The Art of Agile Development / 2007

69. Brian W. Kernighan, Rob Pike / The Practice of Programming    / 1999

(프로그래밍 수련법 / 인사이트 / 2008)

70. Ron Jeffries, etc. / Extreme Programming Installed    / 2000

(Extreme Programming Installed / 인사이트 / 2002)

71. Scott W. Ambler, Pramodkumar J. Sadalage / Refactoring Databases: Evolutionary Database Design    / 2006

(리팩토링 데이터베이스 / 위키북스 / 2007)

72. Jared Richardson, William Gwaltney / Ship it! A Practical Guide to Successful Software Projects    / 2005

(Ship it / 위키북스 / 2007)

73. Greg Hoglund, Gary McGraw / Exploiting Software: How to Break Code    / 2004

(소프트웨어 보안 / 정보문화사 / 2004)

74. Michael Nygard / Release It!: Design and Deploy Production-Ready Software    / 2007

(릴리스 잇 / 위키북스 / 2007)

75. Edward Yourdon / Death March (2nd Edition)    / 2003

(죽음의 행진 / 소동 / 2005)

76. Stephen P. Berczuk, etc. / Software Configuration Management Patterns / 2003

77. Elfriede Dustin, etc. / Automated Software Testing / 1999

78. Donald C. Gause, Gerald M. Weinberg / Exploring Requirements: Quality Before Design    / 1989

79. Tom Gilb / Competitive Engineering    / 2005

80. David J. Agans / Debugging    / 2006

81. Eldad Eilam / Reversing: Secrets of Reverse Engineering    / 2005

(리버싱 / 에이콘 / 2009)

82. Robert L. Glass / Facts and Fallacies of Software Engineering    / 2002

(소프트웨어 공학의 사실과 오해 / 인사이트 / 2004)

83. Martin Fowler / Analysis Patterns: Reusable Object Models    / 1996

84. Matt Weisfeld / The Object-Oriented Thought Process (2nd Edition)    / 2003

85. John M. Vlissides / Pattern Hatching: Design Patterns Applied    / 1998

86. Johanna Rothman / Behind Closed Doors: Secrets of Great Management    / 2005

(실천가를 위한 실용주의 프로젝트 관리 / 위키북스 / 2007)  

87. Robert K. Wysocki / Effective Project Management: Traditional, Adaptive, Extreme    / 2006

88. Ellen Gottesdiener / Requirements by Collaboration: Workshops for Defining Needs    / 2002

89. Eric Evans / Domain-Driven Design: Tackling Complexity in the Heart of Software    / 2003

90. Nick Rozanski, Eóin Woods / Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives    / 2005

91. Peter Rob, Carlos Coronel / Database Systems: Design, Implementation, and Management (8th Edition)    / 2006

(데이터베이스 시스템 (4판) / 사이텍미디어 / 2003)

92. Robert Orfali, etc. / Client/Server Survival Guide (3rd Edition)    / 1999

(절판 – Client/Server Survival Guide / 영진 / 1999)

93. Douglas Schmidt, etc. / Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects    / 2000

94. Michael Lopp / Managing Humans: Biting and Humorous Tales of a Software Engineering Manager    / 2007

(IT 개발자가 쓴 통쾌한 인간관리 이야기 / ITC / 2009)

95. Paul Graham / Hackers and Painters: Big Ideas from the Computer Age    / 2004

(해커와 화가 / 한빛미디어 / 2014)

96. Philippe Kruchten / The Rational Unified Process: An Introduction (3rd Edition)    / 2003

(The Rational Unified Process: An Introduction 2판 / 인터비젼 / 2003)

97. Joel Spolsky / The Best Software Writing I: Selected and Introduced by Joel Spolsky    / 2005

(조엘이 엄선한 소프트웨어 블로그 베스트 29선 / 에이콘 / 2006년)

98. James O. Coplien, Neil B. Harrison / Organizational Patterns of Agile Software Development / 2004

99. Esther Derby, etc. / Agile Retrospectives: Making Good Teams Great / 2006

(애자일 회고 / 인사이트 / 2008)

100. Henry S. Warren / Hacker’s Delight / 2002

(해커의 기쁨 / 제이펍 / 2013)

ps. 일일이 번역서를 찾다 보니 빠진 책도 있을 겁니다. 댓글로 알려주세요~ ^^