What is the single most influential book every programmer should read? [closed]
Asked Answered
A

154

1436

If you could go back in time and tell yourself to read a specific book at the beginning of your career as a developer, which book would it be?

I expect this list to be varied and to cover a wide range of things.

To search: Use the search box in the upper-right corner. To search the answers of the current question, use inquestion:this. For example:

inquestion:this "Code Complete"
Accidence answered 4/8, 2008 at 23:50 Comment(28)
Is "Joel on Software" too obvious? For C++, anything by Herb Sutter, Scott Meyers. An if you are into template masochism, "Modern C++ Design" by Alexandrescu.Mixie
Browsing this thread make me realize how ugly most programming related books are. Very good thread though!Selinaselinda
Interesting this is, while the title reads "What is the single most influential book every programmer should read?", there are quite a few books suggested that deal with language specific topics. By definition, and by question as it was put, the books suggested here should deal with language agnostic topics, which proves most programmers have yet to learn how to read.Tracheid
If I could go back in time and tell myself to read something, it better be a newspaper or sports fact book that I carried with me. Anything else is a waste of good time travel. :-)About
The cover of "Head First" is eye catching for sure, and did succeed in getting me to pick up the book. But I put it down again soon after as it seemed light on content.Isochronous
This question has now turned into the equivalent of a library of journals containing book titles. It's far too generic but the worst part is it's impossible to searchSwihart
I agree that the inability to search for something within the answers is pretty frustrating. One needs to page through 10 pages of posts just to see whether one can contribute something new.Idolah
You know, if I wasn't worried about getting down voted a WHOLE lot I would trollishly go and suggest Twilight. "Its ALSO about people who are pale and avoid the sun!"Ortego
@Carl: THIS is one of the prettiest programming-related books I have on my shelf: amazon.com/Operating-System-Concepts-Abraham-Silberschatz/dp/…Prosector
Can someone cleanup answers by deleting repeated entries on books? Most of them area already down voted.Tinned
It has been suggested, and I'm inclined to agree, that at 20 pages this has run its course for the current time. Just duplicates. I'm locking for now; flag if you disagree...Aboveboard
I have voted to close. This question is subjective, argumentative, and the answer accepted is lol-wrong. A Microsoft Press book about how M$ does things more important than even Don Knuth's Art of Computer Programming? I have to change my pants.Portaltoportal
@Heath, this has been discussed to death on Meta. This is one of those questions that everyone knows is inappropriate but gets grandfathered in because it was so popular when the site started. More practically, at this point, it's unlikely that you're going to find four other people to vote to close before your vote expires.Haystack
@Heath, have you read CC? I'm anti-Microsoft generally, but I found it very useful. It's good to read it as well as The Pragmatic Programmer, because the two offer nicely contrasting views. Luckily this question has these two books right at the top. You shouldn't close a question just because you don't agree with the top-voted answer.Saiga
@skilldrick. Not only have a I read McConnell, I formerly worked at MS, where you are required to lick the book. McConnell was jealous of Steve Maguire, the author of Writing Solid Code, also MS press. The Maguire book is good and not so many pages. The McConnell book, meh, you can tell what I think, but to articulate: "Full of preachy crap that doesn't work for everyone and becomes dated even as IDEs change." Writing Solid Code has not become dated.Portaltoportal
@Torgamus -- TRADITION! It's what keeps us on the roof!!! TRADITION!Portaltoportal
@Heath: This ancient, sprawling, and grandfathered question has been locked by a diamond mod. There is no need to close, since that only stops new (and doubtless redundant) answers from being added.Arbutus
Perfection. Now the corpus of already-answered SO questions, available for reference to newcomers, lacks this subjective question.Portaltoportal
@David: This isn't locked anymore. It's simply protected, which isn't really enough to stop more needless answers from being posted. It needs to be locked again.Silverware
@Heath, congrats on succeeding, even though it was only for a few hours. FYI I found the related blog post: blog.stackoverflow.com/2010/01/stack-overflow-where-we-hate-funHaystack
@Torgamus -- It appears the cabal of admins doesn't like democracy. SO so lame.Portaltoportal
@Heath - I agree, it is lame. @Torgamus - I don't like 'fun' questions. They usually end up with stupid, meaningless answers that are more based on popularity than anything else. I've read most of the books on the first page, and I only think about 40% of them are particularly worthwhile for everybody, and definitely not the first on the list.Officious
@Torgamus -- It isn't about having fun. It's about not being stupid. This question, and its answer, are 110% stupid.Portaltoportal
@Omnifarious: How is pragmatic programmer not useful? It's going to overtake Code Complete like it rightfully should. Actually now I look beyond the first few I see you are right.Wilterdink
@Matt Joiner: The Pragmatic Programmer is one of the few I haven't read. :-)Officious
@Omnifarious: You REALLY should.Saiga
As for the rollbacks, please see Regarding a CW question and author-specific info.Isaisaac
Rollback war means time to lock again.Ant
F
1743
  • Code Complete (2nd edition) by Steve McConnell
  • The Pragmatic Programmer
  • Structure and Interpretation of Computer Programs
  • The C Programming Language by Kernighan and Ritchie
  • Introduction to Algorithms by Cormen, Leiserson, Rivest & Stein
  • Design Patterns by the Gang of Four
  • Refactoring: Improving the Design of Existing Code
  • The Mythical Man Month
  • The Art of Computer Programming by Donald Knuth
  • Compilers: Principles, Techniques and Tools by Alfred V. Aho, Ravi Sethi and Jeffrey D. Ullman
  • Gödel, Escher, Bach by Douglas Hofstadter
  • Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
  • Effective C++
  • More Effective C++
  • CODE by Charles Petzold
  • Programming Pearls by Jon Bentley
  • Working Effectively with Legacy Code by Michael C. Feathers
  • Peopleware by Demarco and Lister
  • Coders at Work by Peter Seibel
  • Surely You're Joking, Mr. Feynman!
  • Effective Java 2nd edition
  • Patterns of Enterprise Application Architecture by Martin Fowler
  • The Little Schemer
  • The Seasoned Schemer
  • Why's (Poignant) Guide to Ruby
  • The Inmates Are Running The Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity
  • The Art of Unix Programming
  • Test-Driven Development: By Example by Kent Beck
  • Practices of an Agile Developer
  • Don't Make Me Think
  • Agile Software Development, Principles, Patterns, and Practices by Robert C. Martin
  • Domain Driven Designs by Eric Evans
  • The Design of Everyday Things by Donald Norman
  • Modern C++ Design by Andrei Alexandrescu
  • Best Software Writing I by Joel Spolsky
  • The Practice of Programming 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 (My Job Went To India) by Chad Fowler
  • Hackers: Heroes of the Computer Revolution
  • Algorithms + Data Structures = Programs
  • Writing Solid Code
  • JavaScript - The Good Parts
  • Getting Real by 37 Signals
  • Foundations of Programming by Karl Seguin
  • Computer Graphics: Principles and Practice in C (2nd Edition)
  • Thinking in Java by Bruce Eckel
  • The Elements of Computing Systems
  • Refactoring to Patterns by Joshua Kerievsky
  • Modern Operating Systems by Andrew S. Tanenbaum
  • The Annotated Turing
  • Things That Make Us Smart by Donald Norman
  • The Timeless Way of Building by Christopher Alexander
  • The Deadline: A Novel About Project Management by Tom DeMarco
  • The C++ Programming Language (3rd edition) by Stroustrup
  • Patterns of Enterprise Application Architecture
  • Computer Systems - A Programmer's Perspective
  • Agile Principles, Patterns, and Practices in C# by Robert C. Martin
  • Growing Object-Oriented Software, Guided by Tests
  • Framework Design Guidelines by Brad Abrams
  • Object Thinking by Dr. David West
  • Advanced Programming in the UNIX Environment by W. Richard Stevens
  • Hackers and Painters: Big Ideas from the Computer Age
  • The Soul of a New Machine by Tracy Kidder
  • CLR via C# by Jeffrey Richter
  • The Timeless Way of Building by Christopher Alexander
  • Design Patterns in C# by Steve Metsker
  • Alice in Wonderland by Lewis Carol
  • Zen and the Art of Motorcycle Maintenance by Robert M. Pirsig
  • About Face - The Essentials of Interaction Design
  • Here Comes Everybody: The Power of Organizing Without Organizations by Clay Shirky
  • The Tao of Programming
  • Computational Beauty of Nature
  • Writing Solid Code by Steve Maguire
  • Philip and Alex's Guide to Web Publishing
  • Object-Oriented Analysis and Design with Applications by Grady Booch
  • Effective Java by Joshua Bloch
  • Computability by N. J. Cutland
  • Masterminds of Programming
  • The Tao Te Ching
  • The 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
  • Masters of Doom
  • Pragmatic Unit Testing in C# with NUnit by Andy Hunt and Dave Thomas with Matt Hargett
  • How To Solve It by George Polya
  • The Alchemist 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! by David Thielen
  • Rework by Jason Freid and DHH
  • JUnit in Action
Facultative answered 4/8, 2008 at 23:50 Comment(23)
We used to call Code Complete the "Bible" at one development shop. "Hey, you need to refer to the bible, the naming of your methods are terrible."Inerrable
I was very impressed with Code Complete, I think that it's a must for every programmer. If I have one book to recommend, it's this book.Hartzel
I wouldn't go so far as labeling Code Complete the most influential that every programmer should read. It is certainly worth reading, but I don't think it deserves the religious following...Kilgore
I was deeply unimpressed by Code Complete. I hate to use an over-used PGism, but it's mired in Blub. So much of the book was irrelevant to me.Bookshelf
I read Code Complete (first edition) about 15 years into my career. It was the first book I'd read about why code should be written a certain way. I don't know if I would have appreciated it as much if I'd read it earlier in my career, before personally experiencing some of the problems discussed.Gittel
Code Complete is a nice book if you are in college maybe. If you have at least 1 year of programming experience, it is a total bore.Fontaine
Code Complete has a lot of useful information in it but it's buried in hyperbole, waffle, and repetition, which makes it a hard read.Office
@Bogdan - I totally disagree. While it's useful for beginners, much of the advice is hard to appreciate without a few years experience. For beginners, please note you need a basic foundation in OO programming to follow many chapters. The text generally assumes you're an OO programmer.Aday
I read Code Complete 3 years into my career. I hadn't taken a software engineering course nor a programming language constructs course but had taken some intro CS courses. It is by far the best single book I've ever read for becoming a better programmer. It won't make you a specialist but it will make you much more than a tinkerer.Forcier
Its not for beginners. Most of the things said there and effects of them can be fully understood only by experienced programers, IMO. You need to have dozen of frameworks designed in order to fully appriciate this enciclopedia of good practices. I do agree however that book is somewhat borring and repetitive, but that doesn't have anything to do with insights it presents. Its pedagogical thingy...Australian
The problem with this book is that for a beginner, it doesn't really make sense as the concepts are a little advanced. By the time you are ready to be able to read it, you should already know and practice 99% of the concepts in the book.Ship
I read it during my last year of CS studies, thats the perfect time to read it, most topics are covered during the studies, but its a nice recap, and well written with a lot of references to dive deeper if you want to. Chapter 5 about design is freely available on the site, try it, for me it was one of the most fun chaptersFretwork
That's the deal with common sense suggestions, like those found in this book. Every so often you need to be reminded of them to fall back in line.Oeo
Code Complete is fundamentally about software construction. Comp sci programs are not. The book fills in the gaps at a critical point, right out of school.Cockoftherock
I don't think this book is only for beginners. There is always something that you understand differently when reading as a senior and if not, it's always nice to have a confirmation that you do know all the "basics".Polyester
This book should be part of every programmers reference. I would make this required reading for a degree in CS!Electroscope
For all the nay-sayers ... Code Complete opened my eyes to the fact that I should be programming not just for myself, but so when other people came after me, they could easily read my code. Readability, pseudo-code design, methods should only have a single purpose, basically all the BASICS of what a good programmer should do. HENCE, I would read this at the beginning of my career (about 1 - 2 years earlier than I did).Inna
There is a big difference between ed 1 and 2. The first one was about defensive code in detail, the 2nd ed seems to be just an arguement for 'Big Design Up Front'Dagan
Most computer books are either very narrowly focused, or they are written by pitchmen touting the panacea of the month, complete with a guide to 'getting certified'. This book can take someone who knows programming and teach him or her practical techniques that teach how to write actual finished applications in the real world.Deaton
Some comments state that programmers with more than a year of experience should know and practice the concepts in Code Complete. I agree, they really should, but that doesn't mean they actually know and practice them. Reading the book improves the odds that it really happens. It's also not necessary to read all of it as you can read the key points and checklists, and read more on the points you didn't understand or agree with. I especially enjoy using it as a quick reference for things like checking a list of solutions to deep control structures.Marjoram
Code Complete is highly overrated. It is basically redundant for someone who's done professional programming for a few years. Also, it could probably be cut in half if it weren't for all the repetitions and fillers.Indign
@chaiguy One reason for recommending this book is the excellent reviews from world-famous programmers. People like Martin Fowler, Grady Booch, Jeffrey Richter, Mike Gunderloy, John Vlissides (coauthor of Design Patterns), Jon Bentley, Joel Spolksy, Software Development Magazine, IEEE Micro Magazine, Windows Tech Journal, IEEE Computer Magazine... I agree if you are an expert already with years of experience, you may not get much from it. But that's not the point of this question.Dessertspoon
Bought Code Complete on the back of this recommendation. And I am extremely impressed. Steve McConnell has an excellent way of explaining things- patiently, accurately and making good use of helpful analogies. Maybe some would find this book to be too simple and lacking in depth (as some have already said on here). But for mere mortals like myself, it has proven an invaluable resource.Ampere
D
9

Programming from the ground up. It's free on the internet. This book taught me AT&T asm. It is very easy to read.

alt text

Duplessismornay answered 4/8, 2008 at 23:50 Comment(0)
A
9

Database System Concepts is one of the best books you can read on understanding good database design principles.

alt text

Apodosis answered 4/8, 2008 at 23:50 Comment(0)
A
9

Types and Programming Languages by Benjamin C Pierce for a thorough understanding of the underpinnings of programming languages.

Ambulance answered 4/8, 2008 at 23:50 Comment(0)
K
9

The practice of programming. By Brian W. Kernighan, Rob Pike.

The style shown here is excellent - the code just speaks for itself, and the whole book follows the KISS principle. Personally not my languages of choice, but still influential to me.

Kokaras answered 4/8, 2008 at 23:50 Comment(1)
-1 Duplicate of #2211Vinni
S
9

Extreme Programming Explained: Embrace Change by Kent Beck. While I don't advocate a hardcore XP-or-the-highway take on software development, I wish I had been introduced to the principles in this book much earlier in my career. Unit testing, refactoring, simplicity, continuous integration, cost/time/quality/scope - these changed the way I looked at development. Before Agile, it was all about the debugger and fear of change requests. After Agile, those demons did not loom as large.

Seasonal answered 4/8, 2008 at 23:50 Comment(0)
F
9

Concepts, Techniques, and Models of Computer Programming.

alt text http://ecx.images-amazon.com/images/I/51YZ50ZR13L._SL500_AA240_.jpg

Fic answered 4/8, 2008 at 23:50 Comment(1)
Brillant, the book cover shows "La Sagrada Família", a large Roman Catholic basilica under construction in Barcelona, Catalonia, Spain. To be completed in 2026 (only 17yrs left). Like most programs, even with the best books, they never finished ...Garrygarson
C
9

One of my personal favorites is Hacker's Delight, because it was as much fun to read as it was educational.

I hope the second edition will be released soon!

Cheerly answered 4/8, 2008 at 23:50 Comment(1)
+1 for "Hacker's Delight" by Henry S. Warren Jr - it's not about hacking in the popular sense but hacking as in low level bit twiddling and other "hacks" in the true and original sense of the word. Not for everyone, but if you are involved in code optimisation, compilers, etc, or are just a general nerd who is interested in low level stuff then this is a great book.Watermark
S
9

Definitively Software Craftsmanship

alt text http://ecx.images-amazon.com/images/I/5186JKTDVWL._SL500_AA240_.jpg

This book explains a lot of things about software engineering, system development. It's also extremly useful to understand the difference between different kind of product developement: web VS shrinkwrap VS IBM framework. What people had in mind when they conceived waterfall model? Read this and all we'll become clear (hopefully)

Stephens answered 4/8, 2008 at 23:50 Comment(4)
This book needs to be rewritten from scratch. The subject is very interesting but the book is quite insane.Enchanting
Chris, I've hard time to understand your comment... Can you explain more? Why 'insane'?Standish
Firstly it's full of typographical errors. The usually top-notch editorial hand of Addison Wesley is strangely absent in this volume.Enchanting
... continuing, and not enough space here, but: 2. it's never clear in the text where the author switches between fact and opinion, anecdote and fundamental principle etc. 3. software craftsmanship is a metaphor and a strategy for dealing with several difficult aspects of software development. It has specific advantages over alternatives and presumably disadvantages. I believe that's the sane approach. It's meaningless to say that software is inherently a craft. Very annoying read, but to be fair it was a while ago and many specifics I've forgotten. My disgust remains, however.Enchanting
U
9

Systemantics: How Systems Work and Especially How They Fail. Get it used cheap. But you might not get the humor until you've worked on a few failed projects.

The beauty of the book is the copyright year.

Probably the most profound takeaway "law" presented in the book:

The Fundamental Failure-Mode Theorem (F.F.T.): Complex systems usually operate in failure mode.

The idea being that there are failing parts in any given piece of software that are masked by failures in other parts or by validations in other parts. See a real-world example at the Therac-25 radiation machine, whose software flaws were masked by hardware failsafes. When the hardware failsafes were removed, the software race condition that had gone undetected all those years resulted in the machine killing 3 people.

Universal answered 4/8, 2008 at 23:50 Comment(1)
Also check out The Systems Bible by the same author (John Gall). It's the third edition of Systemantics, he just changed the title. This is the book you'd steal from school. It's the book that grown adults read under a blanket with a flashlight.Basaltware
T
9

Discrete Mathematics For Computer Scientists http://ecx.images-amazon.com/images/I/51HCJ5R42KL._SL500_BO2,204,203,200_AA219_PIsitb-sticker-dp-arrow,TopRight,-24,-23_SH20_OU02_.jpg

Discrete Mathematics For Computer Scientists by J.K. Truss.

While this doesn't teach you programming, it teaches you fundamental mathematics that every programmer should know. You may remember this stuff from university, but really, doing predicate logic will improve you programming skills, you need to learn Set Theory if you want to program using collections.

There really is a lot of interesting information in here that can get you thinking about problems in different ways. It's handy to have, just to pick up once in a while to learn something new.

Thimbu answered 4/8, 2008 at 23:50 Comment(0)
W
9

Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Peter Norvig

enter image description here

I started reading it because I wanted to learn Common Lisp. When I was halfway, I realized this was the greatest book about programming I had read so far.

Wanyen answered 4/8, 2008 at 23:50 Comment(0)
R
9

K&R

@Juan: I know Juan, I know - but there are some things that can only be learned by actually getting down to the task at hand. Speaking in abstract ideals all day simply makes you into an academic. It's in the application of the abstract that we truly grok the reason for their existence. :P

@Keith: Great mention of "The Inmates are Running the Asylum" by Alan Cooper - an eye opener for certain, any developer that has worked with me since I read that book has heard me mention the ideas it espouses. +1

Renfroe answered 4/8, 2008 at 23:50 Comment(0)
S
8

The Python language was very influential to me, I wish I would have read these book years ago. The beauty and simplicity of the Python language really affected how I wrote code in other languages.

alt text alt text

Stepdaughter answered 4/8, 2008 at 23:50 Comment(3)
I think starting new programmers with Python would reduce the amount of ugly code in the world. I work with someone who randomly indents lines - that person wouldn't do that if they had worked with Python for a few months.Platelet
I think starting new programmers with Python would reduce the amount of other languages.Shields
Are those covers a coincidence?Aqaba
A
8

The Practice of Programming

alt text

and

How to solve it by computer

alt text http://img.infibeam.com/img/7101e0ee/496b1/05/629/P-M-B-9788131705629.jpg?hei=200&wid=160&op_sharpen=1

Acidhead answered 4/8, 2008 at 23:50 Comment(0)
U
8

The New Turing Omnibus http://ecx.images-amazon.com/images/I/51HlYd-%2BRwL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg

Really good book. Has a high-level taste of the most important areas of computer science. Yes, CS != programming, but this is still useful to every programmer.

Uncial answered 4/8, 2008 at 23:50 Comment(0)
M
8

hackers, by Steven Levy.

The personality and way of life must come first. Everything else can be learned.

Monocotyledon answered 4/8, 2008 at 23:50 Comment(0)
S
8

alt text

This last year I took a number of classes. I read

The Innovator's Dilemma (disruptive tech)
The Mythical Man Month (managing software)
Crossing the Chasm (startup)
Database Management Systems, The COW Book
Programming C#, The OSTRICH Book
Beginning iPhone Developmen, The GRAPEFRUIT Book

Each book was amazing but the Innovator's Dilemma by Clayton Christensen (1997!!!) is really a fantastic book, and it got me really thinking about the modern software world. The challenge addressed is disruptive technology, and how disk drive companies and non-technical companies are always disrupted by new, game changing technology. It gives one a new perspective when thinking about Google, probably the biggest 'web' company. Why do they have their hands in EVERYTHING? It's because they don't want to have their position disrupted by something new. The preview on google is plenty to get the idea. Read it!

Sekofski answered 4/8, 2008 at 23:50 Comment(1)
I think this book is quite repetitive. I recommend reading the first 1/4.Burgett
H
8

"The World is Flat" by Thomas Friedman.

Excellence in programming demands an investment of mental energy and a dedication to continued learning comparable to the professions of medicine or law. It pays a fraction of what those professions pay, much less the wages paid to the mathematically savvy who head into the finance sector. And wages for constructing code are eroding because it's a profession that is relatively easy for the intelligent and self-disciplined in most economies to enter.

Programming has already eroded to the point of paying less than, say, plumbing. Plumbing can't be "offshored." You don't need to pay $2395 to attend the Professional Plumber's Conference every other year for the privilege of receiving an entirely new set of plumbing technologies that will take you a year to learn.

If you live in North America or Europe, are young, and are smart, programming is not a rational career choice. Businesses that involve programming, absolutely. Study business, know enough about programming to refine your BS detector: brilliant. But dedicating the lion's share of your mental energy to the mastery of libraries, data structures, and algorithms? That only makes sense if programming is something more to you than an economic choice.

If you love programming and for that reason intend to make it your career, then it behooves you to develop a cold-eyed understanding of the forces that are, and will continue, to make it a harder and harder profession in which to make a living. "The World is Flat" won't teach you what to name your variables, but it will immerse you for 6 or 8 hours in economic realities that have already arrived. If you can read it, and not get scared, then go out and buy "Code Complete."

Hypercriticism answered 4/8, 2008 at 23:50 Comment(1)
That's one heck of a good answer!Reactor
Y
8

@Peter Coulton -- you don't read Knuth, you study it.

For me, and my work... Purely Functional Data Structures is great for thinking and developing with functional languages in mind.

Yeasty answered 4/8, 2008 at 23:50 Comment(0)
S
7

The TCP/IP Guide, by Charles M. Kozierok

Although it is described as an 'encyclopedic reference', it is incredibly readable as a narrative.

This author provides a very , very, very well written, comprehensive, introduction to networking and the infrastructure that underlies the web. Something all programmers ought to know.

For me it is the natural follow-on from Charles Petzold's 'Code'. If "Code" explains to the layman how computers work, 'The TCP/IP Guide' explains how they connect together.

If you gave a 12 year old geek a copy 'Code' and a copy of 'The TCP/IP Guide' - they'd be building the next Google by the age of 17.

In other words, if I could go back in time and tell myself to read a specific book at the beginning of my career as a developer, this (plus Code) is up there in the top of my list.

Shrunk answered 4/8, 2008 at 23:50 Comment(0)
L
7

Kernighan & Plauger's Elements of Programming Style. It illustrates the difference between gimmicky-clever and elegant-clever.

Lands answered 4/8, 2008 at 23:50 Comment(0)
W
7

Here's an excellent book that is not as widely applauded, but is full of deep insight: Agile Software Development: The Cooperative Game, by Alistair Cockburn.

What's so special about it? Well, clearly everyone has heard the term "Agile", and it seems most are believers these days. Whether you believe or not, though, there are some deep principles behind why the Agile movement exists. This book uncovers and articulates these principles in a precise, scientific way. Some of the principles are (btw, these are my words, not Alistair's):

  1. The hardest thing about team software development is getting everyone's brains to have the same understanding. We are building huge, elaborate, complex systems which are invisible in the tangible world. The better you are at getting more peoples' brains to share deeper understanding, the more effective your team will be at software development. This is the underlying reason that pair programming makes sense. Most people dismiss it (and I did too initially), but with this principle in mind I highly recommend that you give it another shot. You wind up with TWO people who deeply understand the subsystem you just built ... there aren't many other ways to get such a deep information transfer so quickly. It is like a Vulcan mind meld.
  2. You don't always need words to communicate deep understanding quickly. And a corollary: too many words, and you exceed the listener/reader's capacity, meaning the understanding transfer you're attempting does not happen. Consider that children learn how to speak language by being "immersed" and "absorbing". Not just language either ... he gives the example of some kids playing with trains on the floor. Along comes another kid who has never even SEEN a train before ... but by watching the other kids, he picks up the gist of the game and plays right along. This happens all the time between humans. This along with the corollary about too many words helps you see how misguided it was in the old "waterfall" days to try to write 700 page detailed requirements specifications.

There is so much more in there too. I'll shut up now, but I HIGHLY recommend this book!

Woodard answered 4/8, 2008 at 23:50 Comment(2)
A unique contribution, and you took the time to clearly explain why it was worth reading. +1 for originality and effort! I shall look forward to reading this soon...Madonnamadora
Good. I do not think you will be disappointed.Woodard
C
7

Masters of doom. As far as motivation and love for your profession go: it won't get any better than what's been described in this book, truthfully inspiring story!

Clitoris answered 4/8, 2008 at 23:50 Comment(1)
+1 for the accurate one line reviewCyperaceous
S
7

alt text http://ecx.images-amazon.com/images/I/61dECNkdnTL._SL500_AA240_.jpg

C++ How to Program It is good for beginner.This is excellent book that full complete with 1500 pages.

Stovepipe answered 4/8, 2008 at 23:50 Comment(1)
I totally agree. Deitel's approach in learning a programming language is amazing. I consider Java How to Program as my programming bible!Elayneelazaro
A
7

Martin Fowler's Refactoring: Improving the Design of Existing Code has already been listed. But I will detail why it has impacted me.

The essence of the whole book is about structuring code so that it is simpler to read and understand by humans. It teaches me strongly that the code that I write is meant for my colleagues and successors to consume and possibly learn something good out of it. It inspires me to consciously program in a manner that leaves people praising my name, and not cursing me to damnation for all eternity.

Adal answered 4/8, 2008 at 23:50 Comment(0)
S
7

Code Craft by Pete Goodliffe is a good read!

Code Craft http://ecx.images-amazon.com/images/I/51WZ9AEC3GL._SL500_BO2,204,203,200_PIsitb-dp-500-arrow,TopRight,45,-64_OU01_AA240_SH20_.jpg

Skulk answered 4/8, 2008 at 23:50 Comment(1)
I had high hopes for this book, but it doesn't do it for me. I think it stating the obvious. It's probably good for those new to programming.Nondisjunction
G
7

While I agree that many of the books above are must-reads (Pragmatic Programmer, Mythical Man-Month, Art of Computer Programming, and SICP come to mind immediately), I'd like to go in a slightly different direction and recommend A Discipline of Programming by Edsger Dijkstra. Even though it's 32 years old, the emphasis on "design for verifiability" is highly relevant (even if "verifiability" means "proof" instead "unit tests").

Georgena answered 4/8, 2008 at 23:50 Comment(0)
M
7

I think that "The Art of Unix Programming" is an excellent book, by an excellent hacker/brilliant mind as Eric S. Raymond, who tries to make us understand a few principles of software design (simplicity mainly). This book is a must for every programming who is about to start a project under Unix platform.

Mickimickie answered 4/8, 2008 at 23:50 Comment(1)
this is a duplicate.Renounce
S
7

The Mythical Man-Month by Fred Brooks http://en.wikipedia.org/wiki/The_Mythical_Man-Month

Stoecker answered 4/8, 2008 at 23:50 Comment(0)
T
6

"The Practice of programming" by Brian W.Kerninghan & Rob Pike.

The language is easy and also the subject matter is interesting.

Tuinal answered 4/8, 2008 at 23:50 Comment(0)
P
6

As I started out developing in Java (and am still doing so to this very day) I'd have to recommend the outstanding work in the field: Mr Bunny's Big Cup o' Java.

From the author's blurb:

There is simply no better way to learn Java than to have the pineal gland of an expert Java programmer surgically implanted in your brain. Sadly, most HMOs refuse to pay for this career saving procedure, deeming Java to be too experimental. At last there is an alternative treatment for those of us who cannot wait for sweeping health care reforms.

Mr. Bunny’s Big Cup O’ Java is recommended by n out of ten doctors, where n is any integer you wish to make up to impress an astoundingly gullible public. The book begins with an overview of the book, and quickly expands into the book itself. Just look at the topics covered:

  • Java

In short, MBBCOJ will teach you all you need to know for a successful career in today’s rabbit development environments.

The insight into pixels alone would have cut years off my software developing life.

Philipson answered 4/8, 2008 at 23:50 Comment(0)
J
6

Rapid Development by McConnell

Jenjena answered 4/8, 2008 at 23:50 Comment(3)
-1 Good book, but dup of #2211 (even if it rambles, it has critical mass)Vinni
+1 At least this one has a link.Cuyler
It may be a dup, but the other answer lists two books when the question is "single most". That's cheating. In addition, the other answer is a dup itself. Finally, mine has a link. :-)Jenjena
U
6

Do users ever touch your code? If you're not doing solely back-end work, I recommend About Face: The Essentials of User Interface Design — now in its third edition (linked). I used to think my users were stupid because they didn't "get" my interfaces. I was, of course, wrong. About Face turned me around.

Ure answered 4/8, 2008 at 23:50 Comment(2)
-1: Good book, but Duplicate, see earlierVinni
-1: dup, and Cooper's "Inmates" is a better start for the subjectComity
G
6

I have a few good books that strongly influenced me that I've not seen on this list so far:

The Psychology of Everyday Things by Donald Norman. The general principles of design for other people. This may seem to be mostly good for UI but if you think about it, it has applications almost anywhere there is an interface that someone besides the original developer has to work with; e. g. an API and designing the interface in such a way that other developers form the correct mental model and get appropriate feedback from the API itself.

The Art of Software Testing by Glen Myers. A good, general introduction to testing software; good for programmers to read to help them think like a tester i. e. think of what may go wrong and prepare for it.

By the way, I realize the question was the "Single Most Influential Book" but the discussion seems to have changed to listing good books for developers to read so I hope I can be forgiven for listing two good books rather than just one.

Grekin answered 4/8, 2008 at 23:50 Comment(0)
P
6

Mr. Bunny's Guide To ActiveX

Pleonasm answered 4/8, 2008 at 23:50 Comment(0)
P
6

In no particular order except how they're arranged on my bookshelf:

  • The Pragmatic Programmer
  • Rafactoring by Fowler
  • Working Effectively with Legacy Code by Feathers. This is practically a companion volume to Refactoring.
  • UML Distilled by Fowler. Among its other virtues is brevity.
  • Debugging the Development Process by Steve Maguire
  • Design Patterns (aka "Gang of Four") by Gamma et al
Pseudaxis answered 4/8, 2008 at 23:50 Comment(0)
C
6

Mastering Regular Expressions

Castano answered 4/8, 2008 at 23:50 Comment(0)
V
6

The Pragmatic Programmer: From Journeyman to Master without a doubt. The advice in it is so well presented, and simple, that it comes across as if it was 'The Common Sense Programmer'. Love it.

Valise answered 4/8, 2008 at 23:50 Comment(0)
N
6

I've been arounda while, so most books that I have found influential don't necessarily apply today. I do believe it is universally important to understand the platform that you are developing for (both hardware and OS). I also think it's important to learn from other peoples mistakes. So two books I would recommend are:

Computing Calamities and In Search of Stupidity: Over Twenty Years of High Tech Marketing Disasters

Nagel answered 4/8, 2008 at 23:50 Comment(1)
Give me a break. Why in the world would you mark this down because I mentioned two books?Nagel
T
5

Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML

An excellent read for those looking to leverage ORM and UML

Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML

Tense answered 4/8, 2008 at 23:50 Comment(0)
S
5

The Back of the Napkin, by Dan Roam.

The Back of the Napkin http://www.coverbrowser.com/image/bestsellers-2008/302-7.jpg

A great book about visual thinking techniques. There is also an expanded edition now. I can't speak to that version, as I do not own it; yet.

Subcortex answered 4/8, 2008 at 23:50 Comment(0)
A
5

Design Concepts in Programming Languages by FA Turbak produces detailed implementations of many programming concepts and is very useful for understanding what's going on underneath the hood.

Ambulance answered 4/8, 2008 at 23:50 Comment(0)
N
5

Perfect Software: And Other Illusions about Testing

TITLE Cover http://ecx.images-amazon.com/images/I/51j3BSRspAL._SL500_AA240_.jpg

Perfect Software: And Other Illusions about Testing by Gerald M. Weinberg

ISBN-10: 0932633692

ISBN-13: 978-0932633699

Northcliffe answered 4/8, 2008 at 23:50 Comment(0)
H
5

Not the most influential, but worth a look is Youth by J.M.Coetzee.

The narrator of Youth, a student in the South Africa of the 1950s, has long been plotting an escape from his native country: from the stifling love of his mother, from a father whose failures haunt him, and from what he is sure is impending revolution. Studying mathematics, reading poetry, saving money, he tries to ensure that when he arrives in the real world, wherever that may be, he will be prepared to experience life to its full intensity, and transform it into art. Arriving at last in London, however, he finds neither poetry nor romance. Instead he succumbs to the monotony of life as a computer programmer, from which random, loveless affairs offer no relief. Devoid of inspiration, he stops writing. An awkward colonial, a constitutional outsider, he begins a dark pilgrimage in which he is continually tested and continually found wanting.

youth cover http://img440.imageshack.us/img440/5140/youthgd4.jpg

Hertford answered 4/8, 2008 at 23:50 Comment(0)
R
5

Facts and Fallacies of Software Engineering by Robert L. Glass http://www.codinghorror.com/blog/images/facts-and-fallacies-of-software-engineering.jpg

Facts and Fallacies of Software Engineering by Robert L. Glass is a really excellent book. I had been a professional hacker for almost 10 years before I read it, and a I still learned a ton of stuff.

Roos answered 4/8, 2008 at 23:50 Comment(0)
S
5

Software Tools by by Brian W. Kernighan and P. J. Plauger

It had a profound influence on how I write software.

Shock answered 4/8, 2008 at 23:50 Comment(0)
R
5

This one isnt really a book for the beginning programmer, but if you're looking for SOA design books, then SOA in Practice: The Art of Distributed System Design is for you.

Regression answered 4/8, 2008 at 23:50 Comment(1)
Too narrow to be the 1 book every programmer should readComity
Q
5

There are a lot of votes for Steve McConnell's Code Complete, but what about his Software Project Survival Guide book? I think they're both required reading but for different reasons.

Quarterage answered 4/8, 2008 at 23:50 Comment(1)
Can you add a pic - right now it scans as if its yet another parroting of the CC recommends that this entire thread seems to be abotutVinni
W
5

Refactoring

Wastebasket answered 4/8, 2008 at 23:50 Comment(0)
S
4

alt text

Mastery: The Keys to Success and Long-Term Fulfillment, by George Leonard

It's about about what mindsets are required to reach mastery in any skill, and why. It's just awesome, and an easy read too.

Salpingitis answered 4/8, 2008 at 23:50 Comment(2)
+1: Love that book. Although... It's certainly not the most influential programming book, considering that most people don't know about it.Kingwood
This was a really great book that is helping me improve in all of my hobbies/passinos.Laid
O
4

My vote is "How to Think Like a Computer Scientist: Learning With Python" It's available both as a book and as a free e-book.

It really helped me to understand the basics of not just Python but programming in general. Although it uses Python to demonstrate concepts, they apply to most, if not all, programming languages. Also: IT'S FREE!

Overdone answered 4/8, 2008 at 23:50 Comment(0)
T
4

How influential a book is often depends on the reader and where they were in their career when they read the book. I have to give a shout-out to Head First Design Patterns. Great book and the very creative way it's written should be used as an example for other tech book writers. I.e. it's written in order to facilitate learning and internalizing the concepts.

Head First Design Patterns http://ecx.images-amazon.com/images/I/51LSqrgoT1L._SS500_.jpg

Theomancy answered 4/8, 2008 at 23:50 Comment(1)
I checked this one out of my local library, and returned it having made it only about 50 pages in. The "Head First" hurl-clip-art-and-sidenotes-on-every-page style may be an effective way of learning for some, but as a person with Attention Deficit Disorder, it made my head explode. I simply could not keep focus on the content. I much prefer the original Gang of Four book for the same information.Tiffany
N
4

Adding to the great ones mentioned above:

Patterns of Enterprise Application Architecture

Enterprise Integration Patterns

Nordau answered 4/8, 2008 at 23:50 Comment(1)
Can you edit this and make it refer to one that isnt already mentioned with higher votes so I can change my -1 for not reading the Q to a +1 for EIP please?Vinni
A
4

Three books come to mind for me.

  • The Art of Unix Programming by Eric S. Raymond.
  • The Wizardry Compiled by Rick Cook.
  • The Art of Computer Programming by Donald Knuth.

I also love the writing of Paul Graham.

Ation answered 4/8, 2008 at 23:50 Comment(0)
L
4

Advanced Programming in the UNIX Environment by W. Richard Stevens.

Lands answered 4/8, 2008 at 23:50 Comment(0)
T
4

Nobody seems to have mentioned Stroustup's The C++ Programming Language which is a great book that every C++ programmer should read.

I also think that Extreme Programming Explained: Embrace Change should be read by every programmer and manager. Many of the ideas in the book are common knowledge now but the book gives an intelligent and inspiring account of the pursuit of quality in software engineering.

I would second the recommendations for Knuth and Gang of Four which are classics.

Ticket answered 4/8, 2008 at 23:50 Comment(0)
O
4

Object-Oriented Software Construction by Bertrand Meyer

Overlie answered 4/8, 2008 at 23:50 Comment(1)
I found this book very useful in my early days - it introduced me to the art and science of of large scale framework design. Whatever happened to Eiffel?Rosalvarosalyn
M
4

Effective C++ and More Effective C++ by Scott Myers.

Minh answered 4/8, 2008 at 23:50 Comment(1)
-1: Good book, but Duplicate, see earlierVinni
I
4

Lean Software Development by Mary and Tom Poppendieck is definitely one for every developers bookshelf

Icon answered 4/8, 2008 at 23:50 Comment(0)
G
4

Programming Perl (O'Reilly)

Grieve answered 4/8, 2008 at 23:50 Comment(0)
S
4

Debugging the Development Process: Practical Strategies for Staying Focused, Hitting Ship Dates, and Building Solid Teams by Steve Maguire.

No-non-sense, down-to-earth, entertaining, profound.

Sagesagebrush answered 4/8, 2008 at 23:50 Comment(0)
S
4

I recently read Dreaming in Code and found it to be an interesting read. Perhaps more so since the day I started reading it Chandler 1.0 was released. Reading about the growing pains and mistakes of a project team of talented people trying to "change the world" gives you a lot to learn from. Also Scott brings up a lot of programmer lore and wisdom in between that's just an entertaining read.

Beautiful Code had one or two things that made me think differently, particularly the chapter on top down operator precedence.

Shirtwaist answered 4/8, 2008 at 23:50 Comment(0)
G
4

Code Complete is the number one choice, but I'd also cite Gang of Four's Design Patterns and Craig Larman's Applying UML and Patterns.

The Timeless Way of Building, by Christopher Alexander, is another great one. Even though it's about archtecture, it's included in the bibliography of many great programming books I have already read.

Another one, from which I'm learning lots of new things, is Data Access Patterns, by Clifton Nock.

Gobert answered 4/8, 2008 at 23:50 Comment(1)
more than one book per anser, and many if not all of these in the first 2 pages.Clinician
W
3

Advanced Programming in the UNIX environment - W. Richard Stevens

Waki answered 4/8, 2008 at 23:50 Comment(0)
C
3

Peter Norton's Assembly Language Book for the IBM PC

alt text

I had spent countless nights in front of the pc (DOS), exploring unknown worlds :-D

Carlton answered 4/8, 2008 at 23:50 Comment(0)
D
3

Since I'm a C# programmer and most generic books already has been mentioned I'd like to recommend Bill Wagner's book "More Effective C#.

I think most people that develop composite WPF-applications also should have a look at Microsoft's Composite Application Guidance (also known as Prism):

Composite Application Guidance

Derina answered 4/8, 2008 at 23:50 Comment(1)
-1: Can we have one non duplicate please?Vinni
L
3

All the Thinking in... books.

Bruce Eckel is THE genious of pedagogy! It's so easy to understand the implementation of polymorphism in C++. It contains all that you should known about C++, basic and advanced concepts. Way better than the Stroustrup's. I learnt Java with him too.

And last but not the least:

The C++ one is free !

http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html

Lo answered 4/8, 2008 at 23:50 Comment(0)
M
3

I read most of the books having an high score on this question - but not all of them (thanks God !) and I added the others one to my Amazon Wish List right away !

(Someone should create a list on Amazon for these books... Maybe a list named : "Stackoverflow best books ever" ? Anyone know how to do that ?)

To me, the best book ever has been Code Complete. It was a revelation. I bought the 2nd edition in english and then in French and I still think it should be a mandatory reading in any computer science school. Data structure is cool but Code complete, no joke, is much more important...

Then, my second best book was Writing Solid Code - having learn how to be understood, it was great to know how to write solid code.

Then a lot of very nice books but no one to mention here. Until 2001, I think : Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries. A jewel ! I read this book many times and it's still on my desk, just beside my LCD, along with Code Complete (really !). I Love the way it has been written (love the comment that has been added here and there - books should all be written like that !)

But well, I forget the very first great books I've read ! The ones who make me love computer science, with passion :

  • Compute! (C64 magazine - Will never forget Jim Butterfly :o)
  • Borland C++ User Guides (the old ones, circa 1991, those who tried to introduce object oriented programming, very nicely written).
  • Most Microsoft Developpement Tools User Guides, circa 1990-1995. Don't know who were writing them, but they was pretty cool ! I remember reading them late in the night, on saturdays...

Well, excellent question :o)

Misstate answered 4/8, 2008 at 23:50 Comment(0)
W
3

For me it was Design Patterns Explained it provided an 'Oh that's how it works' moment for me in regards to design patterns and has been very useful when teaching design patterns to others.

Windbroken answered 4/8, 2008 at 23:50 Comment(0)
J
3

Applying UML and Patterns by Craig Larman.

The title of the book is slightly misleading; it does deal with UML and patterns, but it covers so much more. The subtitle of the book tells you a bit more: An Introduction to Object-Oriented Analysis and Design and Iterative Development.

Jagatai answered 4/8, 2008 at 23:50 Comment(0)
K
3

A Whole New Mind, by Daniel Pink. Interesting take on the future of our industry.

I assume most of the folks reading this will have read the books at the top of the list already. So, i'll offer a book that takes a different look at our industry.

alt text http://www.danpink.com/images/wnm.jpg

Karilynn answered 4/8, 2008 at 23:50 Comment(0)
E
3

I am surprised there is no mention yet of this book: Starting Forth, by Leo Brodie. After all Forth, being a stack-based language, should fit the audience on this site...

Admittedly, Forth is a weird language and not very popular these days. But this book is a joy to read. And it has cartoons! The book, as well as Brodie's other book, Thinking Forth, are both available free on the web.

Errick answered 4/8, 2008 at 23:50 Comment(0)
P
3

Whether you are coding in Smalltalk or not Smalltalk Best Practice Patterns is a great read. Full of small observations that will change the way you code; for the better.

Pomp answered 4/8, 2008 at 23:50 Comment(0)
S
3

The most influential programming book for me was Enough Rope to Shoot Yourself in the Foot by Allen Holub.

Cover of the book http://ecx.images-amazon.com/images/I/71AE90J735L._SL500_AA240_.gif

O, well, how long ago it was.

Sandberg answered 4/8, 2008 at 23:50 Comment(0)
N
3

Coder to Developer, by Mike Gunderloy.

Nautilus answered 4/8, 2008 at 23:50 Comment(0)
H
3

http://ecx.images-amazon.com/images/I/519J3P8ANML._SL500_AA240_.jpg

Took my programing to a whole new level.

Handley answered 4/8, 2008 at 23:50 Comment(0)
O
3

Extreme Programming by Kent Beck

Optometrist answered 4/8, 2008 at 23:50 Comment(0)
R
3

The Unix Programming Environment by Kernighan and Pike.

The Unix Programming Environment

More than any other book, it taught me the benefits in building small, easily-tested tools that can be combined to do big things.

Riendeau answered 4/8, 2008 at 23:50 Comment(0)
L
3

This one started me off into true OOA&D.

Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development - Craig Larman

These would be up there as well:

  • Patterns in Enterprise Application Architecture - Fowler
  • Domain-Driven Design - Eric Evans
Loading answered 4/8, 2008 at 23:50 Comment(1)
One will be fine, hopefully not a dup. Which one?Vinni
B
3

Cocoa Programming for Mac OS X by Aaron Hillegass

Blotch answered 4/8, 2008 at 23:50 Comment(1)
Wonderful book. Runs through all the basics that a beginning Cocoa programmer on the Mac or iPhone/iPad will need to know. Very readable, with lots of examples. A winner!Polston
D
3

I think code complete is going to be a hugely popular one for this question, for me it corrected many of my bad habits and re-affirmed my good practices.

Also for my Perl background I really like Perl Best Practices from Damian Conway. Perl can be a nasty language if you don't use style and best practices, which is what I was seeing in the scripts I was reading ( and sometimes writing ) .

I like the Head First Series, they are quite good and easy to read when your are not in the mood for more serious style books.

Dropsy answered 4/8, 2008 at 23:50 Comment(0)
J
3

It's not strictly a development book and I believe that I've mentioned it in another answer somewhere but it's a book I really believe all developers should read, from php to Java to assembly developers.

Code

It really brings together what's under the hood in a computer, why memory shouldn't be wasted and some of the more interesting parts of the history of computing. It's an introduction to the computer and what it is. It gave me my ultimate passion for low level programming and helped me understand pointers and memory more than any other computer.

June answered 4/8, 2008 at 23:50 Comment(1)
-1: Good book, but Duplicate, see earlierVinni
D
3

to get advanced in prolog i like these two books:

The Art of Prolog

The Craft of Prolog

really opens the mind for logic programming and recursion schemes.

Directed answered 4/8, 2008 at 23:50 Comment(0)
V
3

This isn't a direct answer to the question, because I feel it's already been answered above, however, one of the books that definitely had an impact on how I code is Code Reading, Volume 1: The Open Source Perspective.

alt text http://g.bookpool.com/covers/405/0201799405_140_30O.gif

Veda answered 4/8, 2008 at 23:50 Comment(0)
D
2

In the beginning was the command line. Neal Stephenson.

Dopey answered 4/8, 2008 at 23:50 Comment(2)
amazon.com/Beginning-was-Command-Line-Neal-Stephenson/dp/…Dopey
Or just read it off his website: cryptonomicon.com/beginning.htmlBuyse
C
2

Steve Macguire's Writing Solid Code

Candlewood answered 4/8, 2008 at 23:50 Comment(0)
H
2

97 Things Every Programmer Should Know

alt text http://ecx.images-amazon.com/images/I/51F134Q8TrL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg

This book pools together the collective experiences of some of the world's best programmers. It is a must read.

Hyposthenia answered 4/8, 2008 at 23:50 Comment(0)
R
2

What Every Programmer Should Know About Memory

by Ulrich Drepper - explains the structure of modern memory subsystems and suggests how to utilize them efficiently.

PS: Sorry If I am double posting.

Retract answered 4/8, 2008 at 23:50 Comment(0)
Z
2

What happened to 'Expert C Programming - Deep C Secrets' by Peter Van Der Linden - a classical and enjoyable read. Should have read that immediately after learning C years ago but got it about after 3 years into learning C! A recommended book which answers the most common SO questions on pointers (a favourite subject of mine). Live it, eat it, breathe it! 10/10!

Zucker answered 4/8, 2008 at 23:50 Comment(0)
B
2

Domain Driven Design By Eric Evans is a wonderful book!

Branen answered 4/8, 2008 at 23:50 Comment(0)
D
2

Solid Code Optimizing the Software Development Life Cycle

Although the book is only 300 pages and favors Microsoft technologies it still offers some good language agnostic tidbits.

Dorran answered 4/8, 2008 at 23:50 Comment(1)
-1 Duplicate of higher rated, sorryVinni
G
2

I'm reading now Agile Software Development, Principles, Patterns and Practices. For those interested in XP and Object-Oriented Design, this is a classic reading.

alt text http://ecx.images-amazon.com/images/I/519J3P8ANML._SL500_AA240_.jpg

Gwin answered 4/8, 2008 at 23:50 Comment(1)
I've heard good things about it too, but it's been mentioned earlier, see: #2211 (Vote that up instead - ah, well, when you have the reputation to do it :)Ticklish
A
2

I saw a review of Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools on a blog talking also about XI-Factory, I read it and I must say this book is a must read. Altough not specifically targetted to programmers, it explains very clearly what is happening in the programming world right now with Model-Driven Architecture and so on..

Airspeed answered 4/8, 2008 at 23:50 Comment(1)
Is it still happening? Is it the best MDA boook/info on the planet?Vinni
P
2

I would say that "Beyond Code - Learn to Distinguish Yourself in 9 Simple Steps" is quite a good and motivational book. I doesn't cover technical issues, but it describes ways of working with people, being professional, ... For me, this is a book you can read again and again if you are in need of some pep talk. Besides that, it is cheap and very easy and enjoyable to read in 3 to 4 hours.

There is a little review over at my blog.

Porosity answered 4/8, 2008 at 23:50 Comment(0)
L
2

for low level entertainment i would suggest Michael Abrash's
i) -Zen of Code Optimization- and
ii) -Graphics Programming Black Book-
even if you dont do any graphics programming.

Lacilacie answered 4/8, 2008 at 23:50 Comment(0)
J
2

Advanced MS-DOS by Ray Duncan.

Janycejanyte answered 4/8, 2008 at 23:50 Comment(0)
F
2

Craig Larman's Applying UML and Patterns. While the Gang of Four book Design Patterns is very instructive, I found that I didn't "get" how to use design patterns until I ran across Larman's book in a programming class.

Featherbedding answered 4/8, 2008 at 23:50 Comment(0)
M
2

As so many people have listed Head First Design Patterns, which I agree is a very good book, I would like to see if so many people aware of a title called Design Patterns Explained: A New Perspective on Object-Oriented Design.

This title deals with design patterns excellently. The first half of the book is very accessible and the remaining chapters require only a firm grasp of the content already covered The reason I feel the second half of the book is less accessible is that it covers patterns that I, as a young developer admittedly lacking in experience, have not used much.

This title also introduces the concept behind design patterns, covering Christopher Alexander's initial work in architecture to the GoF first implementing documenting patterns in SmallTalk.

I think that anyone who enjoyed Head First Design Patterns but still finds the GoF very dry, should look into Design Patterns Explained as a much more readable (although not quite as comprehensive) alternative.

Moia answered 4/8, 2008 at 23:50 Comment(0)
P
2

Another book that has not been mentioned yet, and SHOULD be required reading for EVERY programmer, newbies on up to gurus, in ANY programming language, is Michael Howard's Writing Secure Code (2nd Edition) from MSPress.

Pulsimeter answered 4/8, 2008 at 23:50 Comment(0)
M
2

Separately, I'd mention The Third Manifesto by Hugh Darwen and CJ Date. If you're interested in understanding data (which seems uncommon among programmers) this book is a must-read. It will also make you sad when you realize just how badly broken SQL is, but it'll also help you cope with that brokenness. Knowing how a tool is broken lets you design with those deficits in mind.

Marking answered 4/8, 2008 at 23:50 Comment(0)
V
2

This might not count as a "development book" but I have to throw it in anyway: Hackers by Stephen Levy. I found that it spoke to the emotional side of programming.

Vedda answered 4/8, 2008 at 23:50 Comment(0)
W
2

Amiga ROM Kernel Manuals :)

Whelm answered 4/8, 2008 at 23:50 Comment(0)
A
2

Domain Driven Design by Eric Evans

Alli answered 4/8, 2008 at 23:50 Comment(0)
L
2

The question is, "What book really made an impact of how you work as a developer?" Without any doubt, Programming Windows with MFC, by Jeff Prosise, is the book that had the greatest impact on HOW I work as a developer. It did not teach me the fundamentals of "programming" but it opened the world of Windows platform development to me and many thousands of other developers.

I had written a little Windows code previously in the "Petzold style" before MFC was developed. I quickly decided the Windows platform we just not worth the trouble as a developer. When Prosise came out with his MFC book, I realized (along with thousands of other non-Windows programmers) that I could create an easy to use interface that users would not just understand, but actually enjoy using. I devoured the book, making so many notes in it and turning down so many corners, I eventually bought a second copy.

Prosise, Jeff. Programming Windows with MFC 2nd Ed. Microsoft Press 1999 ISBN: 1-57231-695-0

Lade answered 4/8, 2008 at 23:50 Comment(0)
R
2

My high school math teacher lent me a copy of Are Your Lights Figure Problem that I have re-read many times. It has been invaluable, as a developer, and in life generally.

Rania answered 4/8, 2008 at 23:50 Comment(0)
C
2

Expert C Programming: Deep C Secrets by Peter Van Der Linden

Cauterant answered 4/8, 2008 at 23:50 Comment(1)
By far the best book on programming ever written. If only other technical authors could master the ability to present deeply technical information in a way that is conversational but not patronizing.Balthazar
I
2

While not strictly a software development book, I would highly recommend that Don't Make me Think! be considered in this list.

Ic answered 4/8, 2008 at 23:50 Comment(0)
O
2

"The Design and Evolution of C++" by Bjarne Stroustrup

Besides giving much background on C++, it is also a lengthy study on the trade-offs and design concerns involved in a large scale program.

BN.com

Odele answered 4/8, 2008 at 23:50 Comment(0)
B
2

I suppose we could ask the same top rated question every couple of weeks and upmod all those who mention code complete or The Pragmatic Programmer.

Not that there is anythng wrong with it :-)

Bozeman answered 4/8, 2008 at 23:50 Comment(0)
C
2

Win32 Programming by Charles Petzold

Crosscountry answered 4/8, 2008 at 23:50 Comment(0)
J
2

It's a toss up between Head First Design Patterns, for many of the reasons cited above, and Perl Testing: A Developer's Notebook, which should be one of the bibles for any Perl programmer wanting to write maintainable code.

Jecho answered 4/8, 2008 at 23:50 Comment(0)
F
2

Roger S. Pressman - Software Engineering (A Practitioners Approach). It has got a lot of usefull information.

Fantastic answered 4/8, 2008 at 23:50 Comment(0)
D
2

I think I grew up in a different generation than most here....

One of the most influential books I read, was APUE.

Or pretty much anything by W. Richard Stevens.

Dempstor answered 4/8, 2008 at 23:50 Comment(0)
M
2

I found "The art of Prolog" a very good read.

Manamanacle answered 4/8, 2008 at 23:50 Comment(0)
C
2

I'm a big fan of most titles by Robert C. Martin, especially Agile Software Development, Principles, and Practices and Clean Code: A Handbook of Agile Software Craftsmanship.

Chicken answered 4/8, 2008 at 23:50 Comment(0)
N
2

Read Head First Design Patterns for a much more accessible introduction than the GoF book. I remember feeling like I'd leveled up after each chapter.

Kent Beck's Test Driven Development by Example for TDD.

Nkvd answered 4/8, 2008 at 23:50 Comment(0)
T
2

Working Effectively with Legacy Code is a really amazing book that goes into great detail about how to properly unit test your code and what the true benefit of it is. It really opened my eyes.

Tetrad answered 4/8, 2008 at 23:50 Comment(0)
A
2

Pragmatic Programmer

Andaman answered 4/8, 2008 at 23:50 Comment(0)
T
1

OK, so the question is not "what's the best programming book", but "if you could tell yourself what to read in the beginning of your career"...

Probably one of "On Lisp" and SICP, plus one of CLRS or "Algorithms: a creative approach" by Udi Manber.

Introduction to Algorithms by Udi Manber http://vig-fp.prenhall.com/bigcovers/0201120372.jpg

The first two will teach lots of programming techniques, patterns, and really open up one's mind to his/her own creativity; the other two are different. They're more theoretical, but also very important, focusing on design of correct and efficient algorithms (and requiring substantially more math).

I see lots of people recommending the three first books when the subject of "good programming books" pops up, but the last one (by Manber) is a great book, and few people know it. It's a shame! Manber focuses on the incremental development of algorithms through theorem proving using induction.

Toper answered 4/8, 2008 at 23:50 Comment(2)
-1 Pick one, stick in a pic and let people vote on itVinni
@sergio: Agreed about Manber's book. Please do what Ruben says and I'll upvote. Let me know if you decide to do that.Last
S
1

Anything by Edward Tufte: The Visual Display of Quantitative Information; Envisioning Information; Visual Explanations

Scott answered 4/8, 2008 at 23:50 Comment(0)
S
1

recommended for Windows Programmer, Programming Windows

Schubert answered 4/8, 2008 at 23:50 Comment(0)
L
1

I found the The Algorithm Design Manual to be a very beneficial read. I also highly recommend Programming Pearls.

Lutz answered 4/8, 2008 at 23:50 Comment(0)
W
1

Even though I had been programming rofessionally for years, Rocky Lhotka's "Business Objects" series about his CSLA framework was the book that opened my eyes.

His ideas he got me excited about software development patterns and theory again. It set me on the path of a new interest in learning how to be a better developer, and not just learning about the latest gee-whiz control or library. (Don't get me wrong, I still love a good technical book too - you gotta keep up!)

Ween answered 4/8, 2008 at 23:50 Comment(0)
S
1

If you are doing anything in Unix/Linux/MacOS etc, you must read Advanced Programming in the Unix Environment (also known by the acronym APUE), by the late W Richard Stevens. If you don't know how file descriptors work or what sessions are, or all the things you should do when you daemonize yourself (admit it, you don't), then this book will tell you.

You'll feel amatuerish for a bit afterwards, but if you want to consider yourself a professional programmer (in any language) in the Unix environment you need to read this.

Shirlshirlee answered 4/8, 2008 at 23:50 Comment(0)
R
1

The first book that made a real impact on me was Mastering Turbo Assembler by Tom Swan.

Other books that have had an impact was Just For Fun by Linus Torvalds and David Diamond and of course The Pragmatic Programmer by Andrew Hunt and David Thomas.

Rockey answered 4/8, 2008 at 23:50 Comment(0)
T
1

In recent years it has been 'The C++ Standard Library' by 'Nicolai M. Josuttis'. It's my bible.

alt text http://ecx.images-amazon.com/images/I/51BT5SKXTCL._SL500_AA240_.jpg

Turdine answered 4/8, 2008 at 23:50 Comment(0)
S
1

The Pragmatic programmer was pretty good. However one that really made an impact when I was starting out was :

Windows 95 System Programming Secrets"

I know - it sounds and looks a bit cheesy on the outside and has probably dated a bit - but this was an awesome explanation of the internals of Win95 based on the Authors (Matt Pietrek) investigations using his own own tools - the code for which came with the book. Bear in mind this was before the whole open source thing and Microsoft was still pretty cagey about releasing documentation of internals - let alone source. There was some quote in there like "If you are working through some problem and hit some sticking point then you need to stop and really look deeply into that piece and really understand how it works". I've found this to be pretty good advice - particularly these days when you often have the source for a library and can go take a look. Its also inspired me to enjoy diving into the internals of how systems work, something that has proven invaluable over the course of my career.

Oh and I'd also throw in effective .net - great internals explanation of .Net from Don Box.

Schinica answered 4/8, 2008 at 23:50 Comment(0)
T
1

Agile Software Development with Scrum by Ken Schwaber and Mike Beedle.

I used this book as the starting point to understanding Agile development.

Tonsil answered 4/8, 2008 at 23:50 Comment(0)
C
1

How to think like a computer scientist: learning with python

May not be the most advanced book on the world but it made me understand programming concepts that I couldn't, especially object oriented topics.

Contraction answered 4/8, 2008 at 23:50 Comment(0)
L
1

Donald Norman, 'The Design of Everyday Things'

Not about programming, per se, but about how things in the world should work -- kind of the psychology of usability.

It's been invaluable for me in designing both end-user interfaces and APIs.

Lugworm answered 4/8, 2008 at 23:50 Comment(0)
C
1

"Thinking in C++" by Bruce Eckel

Cranial answered 4/8, 2008 at 23:50 Comment(0)
W
1

Object Oriented Analysis and Design - by Grady Booch

Whore answered 4/8, 2008 at 23:50 Comment(0)
K
1

The Productive Programmer by Ford

I'm not quite through this one yet, but I'm already thrilled by some of the tips/tricks I've picked up to become more...well...productive.

Sure, there's plenty of the stuff we all already know (use the keyboard shortcuts, DRY, etc). But there's plenty of new stuff to go with it. And careful readers will quickly start to see how things can be combined for even greater effect.

Kooky answered 4/8, 2008 at 23:50 Comment(0)
S
1

Literate Programming by Donald Knuth, it's a great book on code structure.

San answered 4/8, 2008 at 23:50 Comment(0)
V
1

Inside the C++ Object Model by Stan Lippman. It made C++ finally "click" for me, before it was all "magic". This book gave me a different frame of mind when approaching a new programming language.

Valvate answered 4/8, 2008 at 23:50 Comment(0)
S
1

Software Tools by Brian W. Kernighan and P. J. Plauger by a wide margin had the most effect on me.

Shock answered 4/8, 2008 at 23:50 Comment(0)
A
1

Learning C# 2005, by Jesse Liberty & Brian MacDonald (O'Reilly).

ISBN 10: 0-596-10209-7.

When I first made the jump from ASP classic procedural code to object-oriented C# code in VS2005, this book set me on the right path.

Allusion answered 4/8, 2008 at 23:50 Comment(0)
E
1

Mine is Test Driven Development by Example

Evita answered 4/8, 2008 at 23:50 Comment(0)
F
1

"Object-Oriented Analysis and Design with Applications" by Grady Booch. I read this a long time ago and it showed me that there could be a methodology to developing Object Oriented Software. Since then many other books have had an impact on me but this one got me started.

Furiya answered 4/8, 2008 at 23:50 Comment(0)
T
1

Writing Solid Code by Steve Maguire.

Terebinthine answered 4/8, 2008 at 23:50 Comment(0)
B
1

Modern C++ Design by Andrei Alexandrescu

Bibby answered 4/8, 2008 at 23:50 Comment(0)
I
1

Here are two I haven't seen mentioned:
I wish I had read "Ruminations on C++" by Koenig and Moo much sooner. That was the book that made OO concepts really click for me.
And I recommend Michael Abrash's "Zen of Code Optimization" for anyone else planning on starting a programming career in the mid 90s.

Illuminati answered 4/8, 2008 at 23:50 Comment(1)
Can you narrow it down to one please?Vinni
C
1

Pro Spring is a superb introduction to the world of Inversion of Control and Dependency Injection. If you're not aware of these practices and their implications - the balance of topics and technical detail in Pro Spring is excellent. It builds a great case and consequent personal foundation.

Another book I'd suggest would be Robert Martin's Agile Software Development (ASD). Code smells, agile techniques, test driven dev, principles ... a well-written balance of many different programming facets.

More traditional classics would include the infamous GoF Design Patterns, Bertrand Meyer's Object Oriented Software Construction, Booch's Object Oriented Analysis and Design, Scott Meyer's "Effective C++'" series and a lesser known book I enjoyed by Gunderloy, Coder to Developer.

And while books are nice ... don't forget radio!

... let me add one more thing. If you haven't already discovered safari - take a look. It is more addictive than stack overflow :-) I've found that with my google type habits - I need the more expensive subscription so I can look at any book at any time - but I'd recommend the trial to anyone even remotely interested.

(ah yes, a little obj-C today, cocoa tomorrow, patterns? soa? what was that example in that cookbook? What did Steve say in the second edition? Should I buy this book? ... a subscription like this is great if you'd like some continuity and context to what you're googling ...)

Candelabra answered 4/8, 2008 at 23:50 Comment(1)
+1 for Object Oriented Software Construction - a must read.Grindstone
I
1

Code is Law - you are doing all this writing, editing, and thinking in [language of your choice] but WHY? What does you code MEAN? What will does it actually DO?

(I could have recommended a book on QA, but I didn't...)

Idioplasm answered 4/8, 2008 at 23:50 Comment(0)
Y
1

Deitel and Deitel, "C++: How to Program"

XUnit Test Patterns

Yellowgreen answered 4/8, 2008 at 23:50 Comment(0)
S
1

Implementation Patterns by Kent Beck.

alt text http://ecx.images-amazon.com/images/I/51JHn-6oNwL._SL500_AA240_.jpg

You can learn how to communicate people with programming.

Sumac answered 4/8, 2008 at 23:50 Comment(0)
C
0

Beginning Visual C++

When I first started programming in a OOP languages, I found this book not only to be a comprehensive book about C++ and MFC, it was also has one of the best explanations of Object Oriented concepts I've seen.

When I talk to developers who are just starting out programming in an object oriented language, I tell them to read this book.

Capeskin answered 4/8, 2008 at 23:50 Comment(0)
L
0

Beginning C# 3.0: An Introduction to Object Oriented Programming

This is the book for those who want to understand the whys and hows of OOP using C# 3.0. You don't want to miss it.

Lands answered 4/8, 2008 at 23:50 Comment(0)
R
0

Object-Oriented Programming in Turbo C++. Not super popular, but it was the one that got me started, and was the first book that really helped me grok what an object was. Read this one waaaay back in high school. It sort of brings a tear to my eye...

Reade answered 4/8, 2008 at 23:50 Comment(0)
C
0

The Algorithms book from Robert Sedgewick. A must-read for application developers.

Comes in many flavours (C, C++, Java)

http://www.cs.princeton.edu/~rs/

Condescension answered 4/8, 2008 at 23:50 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.