100 Most Influential Programming Books According To Stack Overflow
100 Most Influential Programming Books According To Stack Overflow
Stack Overflow
Please read this blog post to see why this is here. This data was created on 02/13/2012 20:00:00
All content found below was taken from Stack Overflow in accordance with the Creative Commons
license governing the site. As such, you are free to use this data as you wish so long as the proper
attribution is used.
The Pragmatic Programmer; it's more about your trade, and how to apply it
than the code per se, but it's still very good.
Some classics like Code Complete, Refactoring and Design Patterns teach
you the effective working habits and the painstaking details of the trade.
Others, like Peopleware, Psychology of Computer Programming and The
Mythical Man-Month delve into the psychosocial aspects of software
development. Numerous others deal with algorithms. These books all have
their place.
SICP, however, is in a different league. It is a book that will enlighten you.
It will evoke in you a passion for writing beautiful programs. Moreover, it will
teach you to recognize and appreciate that very beauty. It will leave you
with a state of awe and an unquenchable thirst to learn more. Other books
may make you a better programmer; this book will make you a
programmer.
And in the meanwhile, you will learn a thing or two about functional
programming (side effects won't be introduced until chapter three), lazy
evaluation, metaprogramming (well, metalinguistic abstraction), virtual
machines, interpreters, and compilers.
Not convinced? Read the Foreword or the Preface to the First Edition. The
full text is freely available on the web.
It's available online for free, and there are even video lectures to go along
with it.
It is concise, easy to read, and it will teach you three things: the C
programming language, how to think like a programmer, and the low-
level computational model. (It is important to understand what's going on
"under the hood".)
In my mind, code is just a tool, not the essence. The main part of
developing software (IMO) is creating new algorithms or re-implementing
existing ones. Other than that it's just assembling Lego bricks or creating
"management" layers. I still dream about the workplace that would allow
me to invest most (>50%) of my time in writing algorithms, leaving the
management details to other people...
The Art of Computer Programming if only for the effort Knuth put into it.
Peter Coulton Created on: 2008-08-04 20:07:28
4701 Last edit: 2011-01-22 14:50:08
I'm surprised no one's mentioned the Dragon Book by Aho et al. (or if it has
been mentioned, I missed it).
I will never forget the first edition's cover. This book made me realize just
how magically awesome compilers truly are. :)
I know that Design Patterns by the Gang of Four is a standard text, but
rather than try and read that brick of a book start with the easier Head-First
Design Patterns, and once you have got your head around the basic
principles, progress to the great GoF bible...
Calanus Created on: 2008-08-06 03:21:22
3273 Last edit: 2010-03-20 07:57:04
For a truly deep read, I'd suggest Douglas Hofstadter's Gödel, Escher,
Bach. He dives pretty deep into many of the issues that programmers face
every day- recursion, verifiability, proof, and boolean algebra. Great read, a
little off the beaten path, occasionally challenging, and extremely rewarding
once you fight through it and process what you've read.
In the last year, the book with the biggest impact on my thinking has been
The Cathedral and the Bazaar which taught me a lot about how the open
source development process works and how to get rid of bugs from my
code.
I recommend CODE by Charles Petzold. In this age of tools and IDEs that
abstract a lot of complexity away from the programmers, this one is an eye
opener.
user352 Created on: 2008-08-04 20:03:22
383 Last edit: 2010-01-11 15:18:44
I really recommend programming pearls, it's got some amazing stuff in it,
although I'm not ashamed to admit that I didn't understand half of it!
Matt Warren Created on: 2008-09-04 05:32:29
4576 Last edit: 2009-03-01 16:52:10
Quality -- you know what it is, yet you don't know what it is. But
that's self- contradictory. But some things are better than others,
that is, they have more quality. But when you try to say what the
quality is, apart from the things that have it, it all goes poof!
There's nothing to talk about. But if you can't say what Quality
is, how do you know what it is, or how do you know that it even
exists? If no one knows what it is, then for all practical purposes
it doesn't exist at all. But for all practical purposes it really does
exist. What else are the grades based on? Why else would
people pay fortunes for some things and throw others in the
trash pile? Obviously some things are better than others -- but
what's the ``betterness''? -- So round and round you go,
spinning mental wheels and nowhere finding anyplace to get
traction. What the hell is Quality? What is it?
Get it here
Peopleware
Demarco and Lister demonstrate that the major issues of software
development are human, not technical. Their answers aren't easy--just
incredibly successful. New second edition features eight all-new chapters.
Gustavo Created on: 2008-08-17 11:27:57
512 Last edit: 2009-10-07 17:56:54
Coders at Work by Peter Seibel. A very influential book to learn from the
experience of some of the top names in the field, how they think and work.
ok, this is a slightly off-center answer, but believe it or not, it was on the
reading list for a compsci course way back in the day. An excellent role
model and a good book about curiosity.
I agree with Cristian, I think we should not forget SICP, I think every
programmer should use it, al least as an exercise, you can complement it
with;
I also include in the reading list Code Complete, Applying UML and
Patterns: An Introduction to Object-Oriented Analysis and Design and the
Unified Process and Design Patterns and Design Patterns: Elements of
Reusable Object-Oriented Software
The Inmates Are Running The Asylum: Why High Tech Products Drive Us
Crazy and How to Restore the Sanity, or any of Alan Cooper's books.
@lurks
It is useful regardless operating system you use.
Many of the books already mentioned opened my eyes and influenced me,
but a book every programmer should read is Test-Driven Development by
Example. It really showed me the importance of unit tests and TDD and got
me started very quick.
cover
Not the most influential, but certainly a good read and absent so far is My
Job Went To India by Chad Fowler. It consists of 52 chapters/mini essays
giving guidance on how to differentiate yourself as a developer rather than
a code monkey (whose work could easily be outsourced).
Edit by different person: This is now called "The Passionate Programmer".
Sullivan
5939
I'm amazed that no one has suggested The Story About Ping yet.
The books listed here in this question are great. Code Complete, Pragmatic
Programmer, Head First Design Patterns, all great.
My favorite books are already covered here, but if you need to learn Java, I
enjoyed Bruce Eckel's book, Thinking in Java.
Community User Created on: 2008-09-15 19:04:57
0 Last edit: NA
This book walks the reader through the process of building a computer
system given NAND gates and flip flops. It gives a good introduction to the
"big picture".
These apply to so much more than just user interface design... Make things
that work as others would expect - even if the others are developers using
code that you've created.
I prefer Stroustrup's The C++ Programming Language (3rd edition) - it's the
C++ book. C++ may be out of fashion these days, but this book takes you
from the basics to OO to templates (STL) and even covers things like
improving compile and link time. I still learn something every time I pick it
up, and it's never, ever bad to know C++.
One thing I really appreciate in this book is the notes of .NET Framework
developers giving details on issues they had when designing the .NET
Framework, which I think are good advices as it is representative of a well
designed framework.
It's a brand new book and I've only just skimmed it but Growing Object-
Oriented Software, Guided by Tests right now is THE book on TDD. It really
concentrates on the "design" part of software development and how it is
closely related to how you develop code writing tests first. I've enjoyed
other books on TDD and unit testing but this takes it to a higher level, I'm
pretty sure this one is destined to be a classic.
FinnNk Created on: 2009-10-31 18:43:18
2110 Last edit: 2010-12-09 02:41:48
GeraldWeinberg
Alan J. Peril
There are alot of really great books in the answers. One that isn't
mentioned that I absolutely love is Object Thinking by Dr. David West. This
book had a huge impact on me because it explains the why more than the
how.
Even though I mostly did (and do) Perl programming, reading this book
really helped me understand more about what's going on under the hood. It
covers a ton of really critical low-level concepts like File IO, system files
(passwd, group, etc), process control, signals, and so on.
Having some idea of how this stuff works at the C level is very useful, even
if you never write any C code, because every language you use (on a Unix
system) is using these APIs under the hood.
Godel Escher Bach wins hands down for me, but that's already been
mentioned elsewhere. One book that motivated me highly that isn't already
in an answer AFAIK is Tracy Kidder's Pulitzer prize winning book The Soul
of a New Machine (amazon). Which charts the trials and tribulations of an
engineering team trying to bring a new machine to market. It made me feel
proud to be an engineer.
Andrew Matthews Created on: 2010-09-06 21:16:15
818 Last edit: 2010-09-07 10:08:02
Framework Design Guidelines will give you a very good start on how to
organize code.
Since you didn't say you wanted programming books specifically, I can be a
little more creative.
I though Jurgen did a decent job with his Top 100 Best Software
Engineering Books, Ever.
Robert M. Pirsig's Zen and the Art of Motorcycle Maintenance has a little
section near the end about Gumption Traps. That's the best advice I've
ever read on how to debug code or solve problems in general. The rest of
the book is pretty good, too.
It was cutting edge in 1998 and still has plenty of relevant points. I found it
an enjoyable read with a real sense of humour (not the twee kind you often
get in software books). When he gets down to the details he talks about
specific platforms though, so it shows it's age when Oracle 7 is mentioned!
I would still put this at the top of the required reading list for a web
developer because of the way it assumes no prior knowledge, starting from
first principles ("what's HTML?")
Opened my eyes to the goodness hidden in JavaScript and how bad the
examples of JavaScript are strewn through tutorial sites.
Essential reading for anyone serious about web client side development.
Peopleware
Mythical Man Month
Psychology of Computer of Programming
The Tao Te Ching. Although it's a philosophy book and not a programming
book, some of it's principles are very applicable to programming:
"Know when it's time to stop. If you don't know then stop when
you are done."
"The harder one tries, the more resistance one creates for
oneself."
Translation: How many times have you worked on a problem for several
hours, only to find the answer after taking a 15-minute break? The more
you hammer at a problem, the harder it is going to be for you to solve it.
"One whose needs are simple can fulfill them easily."
Masters of Doom.
Most fun to read: The Art of Deception by Kevin Mitnick (one of world's
most famous hackers)
Really shows that how secure your software may be, the weakest link is
always the human controlling it, with entertaining examples.
Unit testing is one thing that I really wished I knew at the start of my
programming career rather than the middle of it.
As to the general "what good books have you read" offshoot of this thread:
Writing requirements is one area where I suck, this book helped a lot.
Smalltalk-80: The Language and its Implementation AKA the "Blue book":