10 ms·
What is the single most influential book every programmer should read?
- wonderhamster 15y agoFree Culture by Lawrence Lessig http://www.free-culture.cc/ http://www.free-culture.cc/
- jlao 15y agoI've seen so many lists like this and they always list the same books... Code Complete, Prag Prog, SICP, Design Patterns, Refactoring, etc...
- kls 15y agoThe funny part is the first page is all development books, my recommendation would be one on the business of software development or on usability design. Developers are naturally going to run across the information in those books if they are interested. Understanding business or users is one of the things that separates a good programmer from a great developer. Unless you are going into some pretty hardcore space, read about the parts of software development that you don't like, because the stuff that should be in a CS classroom will be picked up along the way if you like what you do. Read a book on QA or SCM, you will be the better for it.
- simonsarris 15y agoI'm a little surprised by the results. Why would a tome on C be the most influential book that every programmer should read? I would think that before any of these books I would prefer that someone I was working with or hiring had read something like "How to Win Friends and Influence People" or a book on writing effectively, instead of any of the books on the first two pages. My reasoning is that the most common problem I find with other programmers is not their programming skills, but their communication of interpersonal skills. Edit: Aha! "How to Win Friends and Influence People" is on page 5 with 74 points!
- Turing_Machine 15y agoIt's not just a great C book, it's a great book. The writing is extremely clear and concise, and packs an incredible amount of information into a few short pages (short by comparison with the "doorstop" books that seem to be in vogue). People associated with writing technical documentation of any kind could learn a lot from it. You won't find many programming books from 1988 that are still relevant and on the market -- the only exception that comes to mind is SICP, which also has a very high rank.
- tryitnow 15y agoThat's a good point. Interestingly, it also shows the weakness of the English language as a technique for expressing an idea. I think there's an unwritten condition in the question: "What is the single most influential [explicitly programming related] book every programmer should read?" My guess is that is how most people interpreted the question. Of course, there's no explicit reason to interpret it this way. This just highlights the weakness of human language (that is on a standalone basis, using context human language is probably very powerful).
- droithomme 15y ago"Without Conscience: The Disturbing World of the Psychopaths Among Us" by Robert Hare. If only I understood more about how many corporate executives and venture capitalists think about things and regard others earlier in my career, it would have saved a lot of grief. Now that I understand this disorder and how it works, I am able to avoid distasteful and frustrating scenarios and get much more done.
- bluekeybox 15y agoWhile I agree that some degree of emotional detachment is necessary to succeed, this is a bit too harsh of a judgement...
- aantix 15y agoWhat sort of situations have you encountered?
- _THE_PLAGUE 15y agoLike others, I wish I had read "The C Programming Language" earlier than when I did (probably did not get to it until my mid-20's or so). However, I am really glad I read "The Road Ahead" by Bill Gates while still in high school. That gave me a "vision for the future". So in terms of "what influenced me the most" starting out, it was definitely that.
- hmottestad 15y agoThe Mythical Man-Month As always. Considering we are making great software, but a lot of projects still seem to go over the estimated time....then I guess learning about that is what will bring us ahead. Also this talk by Greg Wilson: http://vimeo.com/9270320 http://vimeo.com/9270320
- v21 15y agoI remember hearing about it while I was at uni, and checking it out of my uni library. I read through it, and it was a dusty old tome full of references to long dead systems. And it was good, while not saying anything I was hugely shocked by, but making clear and sensible points. And now a few years down the line, I'm out of uni and working, and I find myself toying with buying it for my boss...
- bjg 15y agoDo it, I bought Peopleware for a previous boss as a kind of thanks present when I left that project. He really enjoyed it I think.
- malbs 15y agoWow there were a lot of bad suggestions in that thread. I was just waiting for 'C Programming for Dummies' to pop up posted by E. Trollguy. If you work in an object oriented language, I think one of the most useful books you could read would be Kent Beck's Smalltalk Best Practise Patterns. The reason being that the lessons and tricks Kent discusses in his book can be applied to Ruby, Python, Java, C#, C++, Delphi, and any other language that I insultingly forgot, where you are working with objects and polymorphism. But it certainly wouldn't be useful for _every_ programmer to read. Those would be much more abstract like the already listed ones (mythical man month, sicp, code complete, gof, pragmatic programmer)
- sneak 15y agoHey, I know it's a laugh, but "C for Dummies" was my very first introduction to C when I was 13 (I didn't know about K&R yet) and is responsible for teaching this hacker about pointers and math thereupon. While I still don't usually write C, having that base knowledge before jumping into high-level stuff like Perl and PHP in my middle teens was invaluable.
- bergie 15y agoInnovator's Dilemma would be a pretty good option for those who want to get into business with the software they make.
- jasonlotito 15y agoRecently, I've come to know "Code: The Hidden Language of Computer Hardware and Software"[1], and I really enjoyed it. I don't think it's necessarily the first book every programmer should read, but I do think it's a book every programmer should read. It's an easy read, it's fun, and really does provide what it promises. Highly recommended. 1. http://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319/ref=sr_1_1?s=books&ie=UTF8&qid=1323207252&sr=1-1 http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
- famousactress 15y agoI really enjoyed it. Being self-taught, it provided a really handy primer and computer-architecture fundamentals, logic gates, etc. that I imagine I'd have otherwise gotten in school.
- famousactress 15y agoMan, still Code Complete? I dunno. Wasn't that big a fan, honestly. I think I got more out of the first three chapters than the sum of the rest of the book. If we're talking about technical books, Refactoring is easily the most beneficial read I can remember having. I was pleased to see it (barely) trump Design Patterns... a book that I think (through no real fault of it's own) has spoiled more developer-years than it's benefitted.
- lawnchair_larry 15y agoHaha, I clicked the HN headline thinking "I am going to see the top answer as Code Complete and then be annoyed again". Softies are overrepresented on stackoverflow. Edit: Oh, no wonder. This is a very old repost.
- phillmv 15y agoGoing through the list: Code Complete: First ed 1993 Prag Prog: 1999 SICP: 80s? K&R C: ditto CLRS: 1990 Refactoring: 1999? GoF DP: 1994 Mythical Man Month: late 70s, 80s? TAOCP: Decades ago, and not a serious suggestion Dragon book: 1986 GEB: 80s was it? Programming Pearls: 1999 CODE: 1999 Off the top items in that list, only two have them have been published in the last TWELVE years, which in our industry is at least two full generations. I don't know about you guys but that makes me a little sad. I think somethings have changed a lot in the last 20 years. I refuse to believe that Brooks had the last word on project management several generations ago. I accept the notion that "the more things change, the more they stay the same" but I can't help but think this Greatest Hits List couldn't be improved somewhat.
- riffraff 15y agoit is somewhat reasonable that older books have more people who read them and learned from them, the effect of a book written more recently may yet be small but will be important later. (Cue van gogh related factoids)
- neilk 15y agoGiven that JavaScript and Python are very mainstream now, we need some sort of text that covers functional techniques for the average programmer in scripting languages. SICP is dated and doesn't really match what modern languages can do. Mark-Jason Dominus' "Higher-Order Perl" is fantastic, but unfortunately specific to a language that's most programmers are not choosing in 2011. There was an attempt at a JavaScript port. Maybe someone should take that up again.
- Balauru 15y agoClean Code wins hands down for me http://stackoverflow.com/a/317750/261363 http://stackoverflow.com/a/317750/261363
- rpledge 15y agoI though this was a great book too. It covers a lot of the stuff thats in Code Complete but without being a massive tome.
- pefavre 15y agoI'm not much of a butt-licker, but Hackers and Painters: Big Ideas from the Computer Age from PG is a classic. http://www.amazon.com/Hackers-Painters-Big-Ideas-Computer/dp/1449389554/ref=ntt_at_ep_dpt_1 http://www.amazon.com/Hackers-Painters-Big-Ideas-Computer/dp...
- feral 15y agoI'm not sure that all those people on Stackexchange have read the question properly. The question is "What is the single most influential book every programmer should read?" I.e. given the set of books that every programmer should read, which one is the single most influential? As a programmer, lets consider the answer to the question, as parsed logically (regardless of intent). Typing 'most influential books' into Google brings me to this list: http://en.wikipedia.org/wiki/The_100_Most_Influential_Books_Ever_Written_(book) http://en.wikipedia.org/wiki/The_100_Most_Influential_Books_... It turns out its just one persons opinion - but pageranked to the top for 'most influential books'; and notable enough for wikipedia - thats good enough crowd-vetting for my purposes. If I knew which books all programmers should read, it'd now be a simple matter of finding the highest ranked; but here, I have to use my judgement. So I suggest: Number 13, Euclid's Elements Number 32, Machiavelli's The Prince Number 93, Orwell's Nineteen Eighty-Four I'm not sure every programmer should read Elements - maybe, but its a little abstract these days. I think The Prince would be good reading for the softer skills of the programming profession - and genuinely has really influenced management thinking; its short, so probably worth everyone's time. Finally, I believe without a doubt, 1984 should certainly be required reading for all programmers - a single read is worth a great many 'ethics for technologists' courses. There are other candidates on that list too, but I don't think there's anything that I'm as certain all programmers should read as 1984. Any differing opinions?
- brc 15y agoNot sure of the reason for you downvotes (perhaps it's because you're talking non-technical books), but I think everyone should read 1984 regardless of their profession. The problem being, of course, is that people take it too literally as a story and not enough as a social commentary designed to make people think twice about turning themselves over to micro-regulation.
- radicalbyte 15y agoIf we're assuming an America-centric question and your abstract definition then you can summarize it with just one book: 1. The Bible. Closely followed by whatever the first book that people in stackoverflow's demographic read whilst learning to read.
- shaggyfrog 15y agoNo love for Edward Yourdon's Death March? I think a copy should be given to every CS student upon graduation.
- brooksbp 15y agoHaven't heard of Edward Yourdon, so Google'd. Since you are familiar, can you comment on this: http://sunsite.uakom.sk/sunworldonline/swol-07-1997/swol-07-bookshelf.html http://sunsite.uakom.sk/sunworldonline/swol-07-1997/swol-07-...
- russell 15y agoIt's a good read, but it's nearly 15 years old and there may not be enough context to where Yourdon was coming from. Almost as much time has passed since this essay was written as there was in Yourdon' career up to Death March. Much has happened since then. No one uses heavyweight methodologies, like UML. Processes are light and agile. Languages like Java, Python, and Ruby are way better, as are the associated tools. I consider the 1-week release cycle the biggest contributor to productivity. It's ancient history. Lessons have been learned.
- watmough 15y agoMaybe at the leading edge, but I joined a death-march project in 2004, then left another one in 2008. And I believe that many young programmers are still being thrown onto late projects. I'd really love to believe that UML is dead, but can it really be true? cite?
- shaggyfrog 15y agoThe biggest takeaway from Death March for me was that politics can dominate everything else in a project. Learning the skills to identify political nonsense, understanding how it got that way and what options you have (and sometimes that meansno options at all) is something programmers should learn as soon as possible. To be honest, I had forgotten the book contained anything about heavyweight process methodology. I'll have to grab it out of the shelf when I get home.
- CJefferson 15y agoJust to be contraversal, I'm going to suggest 'The Old New Thing', by Raymond Chen. Not so much for the details of windows (although those are interesting), but it is the only book I have ever seen that attempts to show how a large software project evolves over a long period of time.
- tjr 15y agoThe Hacker's Dictionary (or Jargon File, if you prefer) introduced me to a wealth of tidbits about the programming field. Either directly or indirectly, it prompted me to learn Emacs, TeX, and Lisp; to study Knuth; to volunteer for the GNU Project... but this was years ago, at a time when much of the contents of the book were somewhat historical, but still relevant. It's more out of date now, and perhaps wouldn't be as useful to novice programmers as it was for me.
- radicalbyte 15y agoPatterns of Enterprise Application Architecture is one of my all time favourites, though it hasn't been as influential as it should have been. It's sitting proudly behind me next to The Mythical Man Month, the GOF book, the Dragon book, Refactoring, Code Complete and The Visual Display of Quantitative Information.
- timr 15y agoThe ranking of this list is extremely suspect. Code Complete is a fine book. The Pragmatic Programmer is okay. But neither book holds a candle to Introduction to Algorithms for career-long usefulness. For that matter, neither one holds a candle to Design Patterns for the ability to expand your mind and improve your ability to think about code (I read both at the same time, and Design Patterns is the only one whose lessons I remember distinctly, years later). I think the main problem here is that the easy, mechanical reads get more votes than books that are harder, but more valuable. It's the technical equivalent of a lolcat photo.
- apurvamehta 15y agoI agree. I would place Dijkstra's 'A Discipline of Programming' and Feijen and van Gasteren's 'A method of multi-programming' right up there with 'Introduction to Algorithms'. What sets these books apart is that they try to tackle the problem of _how_ to design elegant algorithms. In the process they introduce crucial concepts like invariants which, once you understand them, become indispensable tools in reasoning and designing algorithms. More generally, their stress on elegant proofs develops a taste for mathematical elegance which would serve all programmers well as they design new systems. These books are much too under-appreciated, in my opinion.
- jamesbritt 15y agoDesign Patterns needs to be read with the understanding that the patterns are for specific types of languages and are not universally applicable. Also, it should have a short appendix explaining that you do not get geek brownie points simply by using as many patterns as you can think of. I realize these are not problems with the book per se, and it's worth reading, but some developers seem to get the wrong message from it.
- azylman 15y agoI read Design Patterns and was unimpressed. Maybe it's because I'm used to large codebases that are already well designed, but all I got out of Design Patterns was formal names for patterns that I already used in my code because they're intuitively the correct thing to do.
- lclarkmichalek 15y agoA Mathematician's Apology is a good read on why the most abstract of subjects is worthy of study. It is a justification of pure mathematics, without resorting to applied mathematics. Though not directly related to computing, it has some lovely insights, and is a thought provoking read. In computing we talk a lot of "elegant" code, without ever defining what elegance is, and in A Mathematician's Apology, Hardy talks of how the most beautiful mathematics is that which has not applicable to the outside world. It is odd in a way that the foreword to the book (a biography of Hardy, written by his friend C.P. Snow) is by a mathematician who is remembered for his contribution to physics; mathematics that seems to be the opposite of Hardy's definition of beauty.
- konstruktor 15y agoMany of those books are great, and I have read shockingly many of them. However, I find all "... every x should know/have done/have read" lists very disturbing, since they seduce my ego into wasting time. Right now, my priority is reduce todo-lists, focus on less stuff that actually gets done, and use lean/just in time in as many areas as possible.
- luriel 15y agoThe Elements of Style by Strunk&White. If it has to be a programming book, then The Unix Programming Environment by Rob Pike and Brian Kernighan.
- Radim 15y agoAh, good old karma whoring times on StackOverflow, with inane questions that make people feel warm and fuzzy (and press the plus).
- Corvus 15y agoPlease note this question was asked in 2008, when StackOverflow was considerably more tolerant of subjective questions, and it was locked to prevent any more votes. The notice on the question says "This question exists because it has historical significance, but it is not considered a good, on-topic question for this site".
- super_mario 15y agoH. Abelson and J. Sussman "Structure and Interpretation of Computer Programs" aka SICP if I had to chose only one, but Cormen, Leiserson, Rivest, Stein: "Introduction to Algorithms" and Sipser: "Introduction To The Theory Of Computation" are other must read ones. Seriously, asking for one book to read is silly in a profession that is all about lifelong learning and disruption of established assumptions and paradigms. If you want something timeless, then you need to go way low level to the mathematical fundamentals of this profession.
- pom 15y agoI think that if you had to select just one book, none of the obvious, literal programming or technical books would seem enough... so I would suggest "Fictions" by Borges as a real mind opener.
- BadassFractal 15y agoNobody mentioned Programming Language Pragmatics? It's a pretty great text about how programming languages work, knowledge that's imho a prerequisite for any decent programmer.
- phzbOx 15y agoGreat programmers won't learn a lot of things from 'Code complete' but since the question says 'every programmers', I guess it makes sense to have it rank #1. But talking for me, the most influential book I read is SICP. But before that, the book that really opened my mind about 'professional programming' was effective C++. I wonder if Scott Meyers read HN.. and what's happening with him. For some reasons, I even remember the name of his dog (Persephone) which one of his book was dedicated!
- pacomerh 15y agothe answer to this is "It depends on what matters to you". Or maybe the question was asked wrong and it should be "list the most influential books for a programmer".
- goodweeds 15y agoHow To Win Friends & Influence People by Dale Carnegie, because software development is about a lot more than writing code.
- rohan80 15y agothere is comprehensive list at http://www.goodbookson.com/index.php/category/programming/ http://www.goodbookson.com/index.php/category/programming/
- mi_mee 15y agoI just think that it will be more helpful if there is a list of books which programmers don't need to read.
- chegra 15y agoDeitel and Deitel Turbo Pascal, my first programming book.
- billpatrianakos 15y agoThe one that helps you most. I hate questions like this because there's really no answer. If the question were which books would you recommend to me that had a big impact on you then I'd feel differently but as it stands I hate this question. What's the best widget to help me get a random task done? Let the "definitive" answers be spewed.
- tete 15y agoDon't waste your time reading books. Read code from good programmers and program yourself. You will get way more from this.
- Pedrom 15y ago>Don't waste your time reading books I strongly disagree. A lot of algorithms have to be introduced in order to be properly learnt. For instance, I don't think you would understand properly a neural network just by reading an implementation of it. And if you haven't read SICP you should at least to see an example of what a good book can give you than just code can't. At some extend, I agree that you would learn good habits by reading clever code and that would replace a lot of "teach yourself" books.
- buro9 15y agoFor me it's not even a programming book... which is what I felt the people who have answered have artificially limited themselves to. For me, it's: http://www.amazon.co.uk/dp/0195019199 http://www.amazon.co.uk/dp/0195019199 Pattern Language It's about architecture, buildings, towns. How to make them work, to serve all the needs of them, and how to allow them to grow. What is important to me and influenced me heavily is the thinking behind it. All parts of a large system in harmony, well-separated concerns, and working together to achieve a common goal. In architecture (computer as well as construction), there is also politics. We pour ourselves into these systems, our beliefs come out in their design and implementation. There was a lot that I learned from that book, and a lot that I still go back and refer to. GOF took their inspiration here, it's obvious from the structure... perhaps you should see why?
- yvdriess 15y agoWhat is this sudden feeling? It is like a thousand HN readers cringed simultaneously.