Update: Recently (August 17, 2012) revisited the original StackOverflow discussion thread and found that it was shut down earlier this year. But someone did a roundup and put the books mentioned in the other responses in the highest number of votes. The new update adds 59 books, as detailed in the second half of this article.

Editor’s Note: On August 4, 2008, StackOverflow user Bert F posted the question: What is the most influential book that every programmer should read?

“If you could go back in time and tell yourself as a developer that you should have read one book at the beginning of your career, what would it be? I wanted it to be a single, informative book that could cover a lot of things.”

Many programmers responded by writing their own comments along with recommendations. This list of books for programmers has been introduced by Chinese netizens before, but they are all recommended by the Top 10 books. In fact, in addition to the top 10 books, the recommended number of top 30 or so books are considered classics, bole online collation and compilation of this q&A post, at the same time excerpted part of the referee’s comments. Here are the recommended numbers for each book.

 

1. Code By Steve McConnell

Recommended number: 1684



“The Encyclopaedia of good programming practices, The Code Book focuses on personal skills, all of which add up to what we instinctively call” writing clean code.” There are 50 pages of this book talking about code layout.” – Joel Spolsky

The ideas in this book are a bit advanced for beginners. By the time you are ready to read this book, you should have known and practiced 99% of its ideas. – esac

 

2.”The way of programmer training”

Recommended number: 1504



This is an excellent book for programmers who have already learned the mechanics of programming. Maybe they’re still in school, but they don’t feel very secure about what to do with themselves. It’s the difference between a sketch and an architecture. Although you learned to draw in school, you can draw pretty well, but if you feel like you don’t quite know where to start, if someone asks you to draw a P2P music exchange network on your own, then this is the book for you. – Joel

3.”The construction and interpretation of computer programs”

Recommended number: 916



Personally, this book has been the most influential programming book for me so far.

Classic books like Complete Code, Refactoring, and Design Patterns will teach you efficient work habits and transaction details. Other books like The People Piece, The Psychology of Computer Programming, and the Myth of the Man Month delve into the psychology of software development. Other books deal with algorithms. These books have their place.

Construction and Interpretation of Computer Programs, however, is different. This is a book that will inspire you. It will kindle your passion for writing great programs. It will also teach you to recognize and appreciate beauty; It leaves you in awe and an unquenchable desire to learn more. Other books may make you a better programmer, but this one will definitely make you one.

In the meantime, you’ll learn about functional programming (Chapter 3), lazy computing, metaprogramming, virtual machines, interpreters, and compilers.

Some people think this book is not suitable for beginners. Personally, I don’t entirely agree that you need some programming experience to read this book, but I definitely recommend it for beginners. After all, the book was written for the famous 6.001, an introductory programming course at MIT. This book may require a lot of work (especially if you’re doing exercises), but it’s worth the price.

Aren’t you sure? Read the preface or preface to the first edition. A free electronic version is available online. – Antti Sykari

 

4.”C programming language”

Recommended number: 774

This book is concise and easy to read, and will teach you three things: the C programming language; How to think like a programmer; Underlying computing model. (This is very important to understand “bottom”) — Nathan

 

5.”Introduction to algorithms”

Recommended number: 671

The Code Guide teaches you how to program correctly. “Man-month Myth” teaches you how to manage correctly; Design Patterns teaches you how to design correctly…

In my opinion, code is just a tool, not the essence. A major part of developing software is creating new algorithms or reimplementing existing ones. Other parts are like reassembling Lego bricks or creating “management” layers. I still dream of a job where I spend most of my time (>50%) writing algorithms and leave the other “administrative” details to others… – Ran Biron

 

6.”Refactoring: Improving the design of existing code”

Recommended number: 617

I guess I have to recommend Refactoring: improving the design of existing code. – Martin

I have to admit that my favorite programming quote comes from this book: Any fool can write a program that a computer can understand, but a good programmer can write a program that others can understand. – Martin Fowler

 

7.”Design patterns”

Recommended number: 617

As far as I am concerned, I think Design Patterns by the Gang of Four is an extremely useful book. While the book is not as much about “meta-” programming as other recommendations, its emphasis on encapsulating good programming techniques such as patterns encourages others to come up with new patterns and antipatterns and apply them to programming conversations. – Chris Jester – Young

 

8.”One month myth”

Recommended number: 588

 

9.”Computer programming”

Recommended number: 542

This is a book that Gartner poured his heart and soul into. Peter Coulton –

 

10. The compilation principle (Chinese version) | English “(dragon)

Recommended number: 462

I’m surprised no one mentioned the Dragon Book. (It may have been recommended, but I didn’t see it). I’ve never forgotten the first cover of this book. This book taught me how amazing compilers are. – DB

 

11.”Simple Design Mode (Chinese version) | English photocopy”

Recommended number: 445

I know Design Patterns by the Gang of Four is a standard book, but I’d rather read this tome first. It’s easier. Once you understand the basics, look at the Gang of Four bible. – Calanus

 

12.”Books of Godel, Escher and Bach: A collection of different things”

Recommended number: 437

If Ha ‘ang really digs deep, I recommend Douglas Hofstadter’s “Godel, Escher, Bach.” He delves deeply into the problems programmers face every day: recursion, validation, proof, and Boolean algebra. It’s an excellent read, not too difficult, with occasional challenges that are well worth it once you get down to it. – Jonik

 

13.”Clean code”

Recommended number: 329

While The Code Clean Way has a lot in common with The Code Book, it has clear examples that are much more concise and practical. – Craig p. Motlin

 

14.”Effective C++”And”More Effective C++”

Recommended number: 297

Early in my career, Scott Meyer’s Effective C++ and the subsequent More Effective C++ had a direct impact on my programming ability. As a friend of the time put it, these books shorten the process of developing programming skills that others might take years to develop.

One of the books that had the biggest impact on me last year was Cathedral and Bazaar, which taught me a lot about how the open source development process works and how to deal with bugs in my code. – John Channing

 

15.”The programming of mission”

Recommendations: 282

Although I am ashamed to admit that I did not understand half of the book, I do recommend Programming Abeci, which has some amazing things in it. – Matt Warren

 

16. The Art of Changing Code by Michael Feathers

I don’t think any other book has influenced my views on programming as much as this one. It explicitly tells you what to do with other people’s code, and implicitly teaches you what to avoid (and why). – Wolfbyte

agree Many developers talk about writing software with a clean SLATE. But I think almost all developers eat other developers’ dog food at some point. – Bernard Dy

 

17.”Coding: The language hidden behind computer hardware and software”

I recommend Charles Petzold’s code. In an age of tools and ides, where a lot of complexity has been “extracted” from programmers, this book is an eye-opener. – hemil

 

18.”Zen and the art of motorcycle maintenanceZen and the Art of Motorcycle Maintenance

The book that had the biggest impact on me was Robert Pirsig’s Zen and the Art of Motorcycle Maintenance. Always be perfect in whatever you do, know your tools and tasks inside out, and most importantly, have fun (because if you have fun, things will naturally lead to better results). – akr

(Editor’s note: You can also read Nguyen Yifeng’s thoughts on this book.)

 

19. 《Peopleware / The Human Widget: Human-friendly software development”

Demarco and Lister show that the primary problem in software development is people, not technology. Their answer is not simple, just incredibly successful. Eight new chapters were added to the second edition. – Eduardo Molteni

 

20. Coders at Work /Programming life”

A powerful book to learn from the experiences of some of the top people in the industry and how they think and work. – Jahanzeb Farooq,

 

Surely You’re Joking, Mr. Feynman!

Believe it or not, this book was once on the reading list for computer science majors, although it may be a bit off topic. A good character model, a good book about curiosity. – mike511

 

22.”Effective JavaChinese version of”

The second edition of this book teaches you how to write beautiful and efficient code. Although it is a Java book, it has many cross-language ideas. – Marcio Aguiar

 

Patterns of Enterprise Application Architecture/Enterprise Application Architecture

Oddly enough, no one has recommended Martin Fowler’s Enterprise Application Architecture Patterns, Levi Rosol

 

24. 《The Little Schemer》和《The Seasoned Schemer》 nmiranda

These two books are LISP English books, there is no Chinese version. An electronic version is also available on the Northeastern University website.

 

25. The Inmates of Interaction Design Are Running The Asylum. Why High Tech Products Drive Us Crazy and How to Restore the Sanity By Alan Cooper, the Father of Visual Basic and the Father of interaction design.

This book is based on business case studies on how to create better, more loyal software products and software-based high-tech products. This book lists a lot of real and credible practical examples to illustrate the widespread “difficult to use” problem in software products and high-tech products based on software. According to the author, the “difficult to use” problem is caused by the high level of “cognitive friction” existing in these products, and the root cause of this problem is the lack of an early stage of “interaction design” in the current software development process for the benefit of the user. “Difficult-to-use” products not only harm the interests of users, but also ultimately lead to the failure of the enterprise. Through some vivid examples, this book convincingly tells the effectiveness of the “goal-oriented” interaction design method advocated by the author in solving the “difficult to use” problem, and proves that only by changing the existing concept can interaction design be effectively introduced into the development process and the product design lead to success.

Although this book is written for business people, it is also suitable for all professionals involved in the development of software products and high-tech products based on software, as well as concerned about the status quo and development of the software industry and high-tech industry.

He also has another book in Chinese: About Face 3 Essence of Interaction Design

 

26.”Why’s (Poignant) Guide to Ruby 》

If you’re not a programmer, this book can be fun to read, but if you’re already a programmer, it can be a little boring.

 

27. The Art of Unix Programming

It is useful regardless operating system you use. — J.F. Sebastian – j. f. Sebastian

 

28. Practices of an Agile Developer /45 Habits of effective Programmers: The Path to Agile Development”

45 habits, divided into seven areas: work attitude, learning, software delivery, feedback, coding, debugging, and collaboration.

For each specific habit, start with a fallacy, then analyze it, then legitimately suggest the correct course of action, empathize with your personal “feelings” about the correct course of action, and finally list a few DOS and don ‘ts to help you correct your course of action (” The Art of balance “).

 

29. Test-driven Development by Example. /Test-driven development”

Many of the books already mentioned have inspired and influenced me, but this one should be read by every programmer. It showed me the importance of unit testing and TDD and got me up to speed. – Curro

I don’t care how good or elegant your code is. If you don’t test, you might as well not write code. This book should get a lot more recommendations. People talk about writing software that users love, or efficient code that is both well-designed and robust, but if your software has a bunch of bugs, there’s no point in talking about that stuff. – Adam (

 

30. Don’t Make Me Think /Midas Touch: The secrets of web design for visitors”

It depends on what you’re after. I love Code because it’s pure programming, and Midas Touch is a great book on UI design. – Justin Standard

 

Update: August 17, 2012 19:08:39

Other sites recently reprinted the article, but the title was changed to “30 Books a Qualified Programmer Should Read.” This title is not well corrected. It deviates from the original meaning. And there are more than 30 books mentioned above.

Looking back at the original SO post today, it was shut down earlier this year. But someone did a roundup and put the books mentioned in the other responses in the highest number of votes.

Modern C++ Design by Andrei Alexandrescu

Best Software Writing I by Joel Spolsky

“The Practice of Programming | Programming practices by Kernighan and Pike

Pragmatic Thinking and Learning: Refactor Your Wetware by Andy Hunt

Software Estimation: Demystifying the Black Art by Steve McConnel

“The Passionate Programmer | I programming, I happiness: programmers The path to career planning” by Chad Fowler

The Hackers: Heroes of the Computer Revolution | Hackers: Computer Revolution hero”

Algorithms + Data Structures = Programs

Writing Solid Code

“JaveScript: The Good Parts | JavaScript language essence”

Getting Real by 37 Signals

Foundations of Programming by Karl Seguin

The Computer Graphics: all of the and Practice in C (2nd Edition) | Computer Graphics theory and Practice: C language description”

“Thinking in Java | Java programming ideas” by Bruce Eckel

The Elements of Computing Systems

The Refactoring to Patterns | Refactoring and mode “by Joshua Kerievsky

The Modern Operating Systems | Modern Operating system “by Andrew s. Tanenbaum

The Annotated Turing

Things That Make Us Smart by Donald Norman

“The Timeless Way of Building | eternal Way of Building” by Christopher Alexander

The Deadline: A Novel About Project Management by Tom DeMarco

“The c + + Programming Language | c + + Programming Language by Stroustrup

The Patterns of Enterprise Application Architecture | Patterns of Enterprise Application Architecture”

The Computer Systems – A Programmer ‘s Perspective | deep understanding of Computer Systems”

Agile Principles, Patterns, and Practices in C# by Robert C. Martin

Growing Object-oriented Software, Guided By Tests

Design code: the Framework Design Guidelines | the.net conventions, idioms and patterns by Brad Abrams

Object Thinking by Dr. David West

The Advanced Programming in the UNIX Environment | senior Programming in the UNIX Environment by w. Richard Stevens

The Hackers and Painters: Big Ideas from the Computer Age | Hackers and Painters”

“The Soul of a New Machine | New Machine Soul” by Tracy Kidder

The CLR via c # | framework design by Jeffrey Richter

Design Patterns in C# by Steve Metsker

“Alice in Wonderland | Alice in Wonderland by Lewis Carol

“Zen and the Art of Motorcycle Maintenance | Zen and the Art of Motorcycle Maintenance” by Robert m. Pirsig

“About Face — The Essentials of Interaction Design | About Face3 Interaction Design essence”

“Here Comes Everybody: The Power of Organizing Without Organizations | future is wet: unorganized group Power by Clay Shirky

The Tao of Programming

Computational Beauty of Nature

Philip and Alex’s Guide to Web Publishing

The Object – Oriented Analysis and Design with Applications | object-oriented Analysis and Design “by Grady Booch

The Effective Java | Effective Java version “by Joshua Bloch

Computability: An Introduction to Recursive Function Theory by N. J. Cutland

The Masterminds of Programming | Programming master the soul of wisdom/Programming”

“Tao Te Ching | daodejing

“The Productive Programmer | Productive Programmer”

The Art of Deception by Kevin Mitnick

The Career Programmer: Guerilla Tactics for an Imperfect World by Christopher Duncan

Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp

The Masters of Doom | Doom of revelation

Pragmatic Unit Testing in C# with NUnit by Andy Hunt and Dave Thomas with Matt Hargett

“How To Solve It: A New Aspect of Mathematical Method | How To problem solving: A New Method of Mathematical thinking,” by George Polya

“The Alchemist | shepherd boy fantasy journey by Paulo Coelho

Smalltalk-80: The Language and Its Implementation

Writing Secure Code (2nd Edition) by Michael Howard

Introduction to Functional Programming by Philip Wadler and Richard Bird

No Bugs!: Delivering Error Free Code in C and C++ by David Thielen

The Rework | again: the more simple and effective business thinking by Jason Freid and DHH

The JUnit in Action | JUnit combat”

[Update] : The list of books listed in this article has been added as follows:

@boydwang recommends Head First Design Patterns because: The best book on design patterns I’ve ever seen!

@sunbiaobiao recommends the Definitive Guide to HTTP for: classic without much explanation 🙂

After the language

In addition to this list, some Weibo users once recommended “Some classic computer books”, about 50 books.

Support me to translate more good articles, thank you!

Exceptional translator



32 comments

About the author:Li-min huang

Personal home page
My article
99