Back to the bookshelf

Typographic jacket · original cover not fetched

FROM THE SHARED SHELF · 2006–2026 SAMPLE

Code Complete

Steve McConnell

61 readers recommend it across 40 discussions

Topics are model-inferred labels.

Keep it on your reading list

THE WORD OF MOUTH

What made it worth passing on?

Original Hacker News comments, in the readers’ own words.

optymizer
I would split the books into two categories: those that improve the way you structure your code and deliver a software solution, and those that improve your technical understanding of the software platform and the computer you're using. The first are books like Pragmatic Programmer, Mythical Man Month, Code Complete, Design Patterns, talks by Alan Kay on software systems and OOP, even Game Engine Architecture etc. A lot of the content there is distilled experience which is much faster to learn from a book than gain the hard way on the job. The other books are practical deep dives. Here I would recommend a variety of books like Inside the Machine by Stokes, Computer Architecture by Hennessy, 21st Century C by Klemens, Crafting Interpreters by Nystrom, Compilers by Aho, Effective Java, Nature of Code by Shiffman, Ray Tracing Challenge by Buck, Hands on Hacking by Hickey, and others, depending on your interest and area of focus.
neversaydie
In software: Could plausibly have read, but also likely to blindly recommend without having read them (I've done that myself, only ever skimmed either): The Mythical Man Month, Code Complete. Very unlikely to have read: Knuth's Art of Computer Programming. (I'm moderately sure Donald Knuth has read these, but beyond that, dubious. Personally I've read their titles on a shelf three times now.)

Also recommended in this reply

kqr
I think anything that makes you take a new perspective on (software) product development and reflect on your experiences and pay attention to patterns of outcomes is going to make you a better developer. Even if the book would be hopelessly outdated, that's usually informative too. It tells you which specific parts of the industry change slowly and which evolve rapidly. That will help you figure out where we are headed and what you can count on will be roughly the same for the next 25 years of your career. It's very hard to rank books precisely, because how much people get out of them also depends on past experiences. If you already have the book or can get free access to it -- why not try? Even just the preview on Amazon is usually good to give a sense of what it is like. Read a few chapters and see if it's something you think you want to continue with. But what's important is not that you pick The Right Book now, it's that you pick up another book when you are finished with this one.
radicalbyte
It's in the same group as Pragmatic Programmer, Refactoring, Patterns of Application Architecture and the Gang-of-Four book for me. Still recommended for junior programmers as they're all teaching the core of good design. However seeing as the better frameworks/languages/IDEs have internalised a lot of the learnings and that the specific conventions may be outdated - so just follow the recommendations for your platform/framework.
blowski
I think "anti-feminist" implies it expressses some opinion about the feminist movement, which it doesn't, to my recollection. That said, it is somewhat sexist in its assumption that all programmers are men, which is not a surprise given when it was published. That lack of gender inclusivity is right there in the title. But it doesn't really take away from the value of the writing unless you're trying to be offended.
soheil
There are many books, articles, and other resources that can help you to become a better software engineer. Some popular choices include "Clean Code" by Robert C. Martin, "The Pragmatic Programmer" by Andrew Hunt and David Thomas, and "Code Complete" by Steve McConnell. These books provide practical advice and guidance on a range of topics, including design, testing, debugging, and refactoring.

Also recommended in this reply

mooreds
Hiya, I'd consider these books/articles/podcasts: * Secrets of Consulting by Gerald Weinberg: http://geraldmweinberg.com/Site/Consulting_Secrets.html Every problem is a people problem. * Refactoring by Martin Fowler et. al: https://martinfowler.com/books/refactoring.html talks about how and why to refactor, as well as providing a nomenclature for the process. * Code Complete by Steve McConnell. https://stevemcconnell.com/books/ A bit dated (the last version I could find was from 2004) but a great overview of the entire software process, from requirements to maintenance. * The Mythical Man-Month by Fred Brookes: https://www.oreilly.com/library/view/mythical-man-month-the/... (https://www.oreilly.com/library/view/mythical-man-month-the/0201835959/) best practices about software development, written about a project from the 1960 and 1970s. * The Joel On Software Strategy Letters: https://www.joelonsoftware.com/2000/05/12/strategy-letter-i-... (https://www.joelonsoftware.com/2000/05/12/strategy-letter-i-ben-and-jerrys-vs-amazon/) is the first one. All of them (I think there are five) are great.…
Ologn
Code Complete has chapters on classes, functions, then several chapters on statements and several on variables. McConnell also refers to studies throughout - for example, he says studies show it is not necessarily that long functions are bad in and of themselves, but that the longer a function is, the more odds it will introduce more variables, and using too many variables in one function is bad. Somewhat dry, academic, great detail about the topics I mentioned with references to studies. I also like Clean Code by Bob Martin. It covers similar ground to Code Complete but it is more opinionated, and was an easy read for me and has a narrative drive. As opposed to the more academic Code Complete which covers things thoroughly, and with references to studies. Both are good books, covering similar ground, I like them both.

Also recommended in this reply

DanHulton
Code Complete (https://en.wikipedia.org/wiki/Code_Complete). I hear that it's probably not as relevant these days, since it's been nearly 20 years since the 2nd edition was released, but the attitude towards professionalism it instilled in me was invaluable, and the fact that all the recommendations were backed up by studies made it so that I could back up my decisions with facts.
mitchelldeacon9
The following is a list of my favorite books on software engineering, cyber-security, and the history of IT business development. Bowden, Mark (2011) Worm: The First Digital World War Brooks, Frederick (1995) Mythical Man-Month, 2nd ed. Christensen, Clayton (1997) Innovator's Dilemma: When New Technologies Cause Great Firms to Fail Hafner, Katie and Matthew Lyon (1996) Where Wizards Stay Up Late: Origins of the Internet Hunt, Andrew and David Thomas (1999) Pragmatic Programmer MacCormick, John (2012) Nine Algorithms that Changed the Future McConnell, Steve (2004) Code Complete, 2nd ed. Mitnick, Kevin and William Simon (2002) Art of Deception Poulsen, Kevin (2011) Kingpin: How One Hacker Took Over the Billion-Dollar Cyber-Crime Underworld Raymond, Eric (2003) Art of Unix Programming Stone, Brad (2013) The Everything Store: Jeff Bezos and the Age of Amazon Torvalds, Linus and David Diamond (2001) Just for Fun: Story of an Accidental Revolutionary Wallace, James and Jim Erickson (1992) Hard Drive: Bill Gates and Making of the Microsoft Empire Williams, Sam (2002) Free as in Freedom: Richard Stallman's Crusade for Free Software…
ozim
You start career. If you already have been programming like in high school or something and finished CS university don't focus much on technical books. Learn how to work with people not computers and listen. I assume you know objects, ifs, for loops. It is enough for technical start. I don't expect more from junior. "The pragmatic programmer" is quite good start on it. If you lack technical background and have problems with structure because you have not worked through university/school in structured way then "Code complete", "Clean code". Pick also something in depth for your specific area you are going to start, for C# good would be "C# in depth" to get really details of tech you will be working on. Get details in one programming language really well then you can pick up some other tech.

Also recommended in this reply

yingw787
I read through Code Complete 2 cover to cover my first year and I agree with parent it's more useful early on than later. There's a lot of discussion around best practices; I think there's an entire chapter on strategic whitespace. All the stuff in there makes sense, but it cements why it's important. Definitely check out "The Pragmatic Programmer"! There's definitely some good nuggets in there that helped me. Distinguishing full-blown prototypes vs. prototypical kernels that can be productionized, a.k.a. tracer bullet prototyping, is one.

Also recommended in this reply

wilsonnb
Our field is so varied that there is no good answer to this question unless you specify what you want to focus on. Some people are inevitably going to recommend The Art of Computer Programming, which hardly anyone has read and isn't that relevant to the work that 99% of us are doing. Someone will probably recommend The C Programming Language, also called K&R after the authors, but again it's not very useful unless you're going to be using a lot of C and even then I personally don't think it provides anything you can't get from guides on the internet. (I have actually read this one, but it's been a while) There are other classic textbooks that will probably be mentioned that are only useful to those in that domain. Many of us can get by without a deep understanding of algorithms and data structures, most people don't need to read a compiler book, etc, etc.…
chollida1
Three boks I'll recommend you read as soon as possible. 1) The Mythical Man month 3) The Pragmatic Programmer 3) Code Complete. The thing about these books, well atleast 1 and 3 is that when they were written they broke new ground. Or if that phrase bother you, they were the first mainstream publications that brought their core ideas to developers. Reading these books early in your career will help cement these best practices. Reading these books after you've been a practicing programmer means,IMHO, that the return you get from reading them goes way way down. You'll find that you've already learned all/most? of what they are trying to teach. You'll find yourself getting frustrated that they are preaching what you already know as common sense and first principles. Or put another way, I'm not sure there is much that someone who has programmed for 5-10 years can get out of those books that they haven't picked up somewhere else already or learned the hard way.
xstartup
McConnell, Steve. Code Complete. Redmond, WA: Microsoft Press, 1993. McConnell, Steve. Software Project Survival Guide. Redmond, WA: Microsoft Press, 1998. Maguire, Steve. Writing Solid Code. Redmond, WA: Microsoft Press, 1993. Ranade and Nash. The Elements of C Programming Style. New York: McGraw-Hill, 1992. Kernighan and Plauger. The Elements of Programming Style. New York: McGraw-Hill, 1982. Caner, Cem, et al. Testing Computer Software, Second Edition. New York: Wiley Computer Publishing, 1999. Hunt, Andrew, et al. The Pragmatic Programmer. Reading, MA: Addison-Wesley, 2000. Holub, Allen. Enough Rope to Shoot Yourself in the Foot: Rules for C and C++ Programming. New York: McGraw-Hill, 1995.
btilly
I'm nearing 50 so I'm hardly a youth. http://www.perlmonks.org/?node_id=133399 does a very good job of explaining why Design Patterns is a book to be careful with. By contrast Code Complete won't steer people wrong. See https://steve-yegge.blogspot.com/2006/03/execution-in-kingdo... (https://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html) for a cautionary tale about how a pursuit of OO purity can result in great verbosity, hiding intent behind a barrage of patterns. Resulting in code that I, for one, would rather not work with.
sideshowb
Are Design Patterns really so out of fashion with the youth of today that nobody here mentions Design Patterns as their answer? Because it is mine, for better or worse. It took me from understanding OO to understanding how to build large systems with OO, writing maintainable code and using proper encapsulation. A much deeper work than Code Complete (though the latter is worth reading too). I have used functional languages as well (ML, Lisp; not Haskell yet though I think I get what monads are; plus I write a lot of Python, C++, JS in functional style) but I have yet to use them for any project as big. I hope I get the chance to one day. But for now Design Patterns gets my vote.
pjmlp
A few ones: "Algorithms and Data Structures" from Niklaus Wirth. "Introduction to Algorithms, 3rd Edition" from Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. "The Garbage Collection Handbook: The Art of Automatic Memory Management" from Richard Jones and Antony Hosking "Code Complete" from Steve McConnell "From Mathematics to Generic Programming" from Alexander Stepanov and Daniel Rose
Insanity
In addition to those already mentioned here, I enjoyed the book 'Algorithms' by Robert Sedgewick & Kevin Wayne. The algorithms are explained, and demonstrated (in java). But with the knowledge of how the algorithm works you should be able to use them in another language. (And even though henrik_w already mentioned it, Code Complete2 is a really good book to read!)

Also recommended in this reply

dredmorbius
From a recent HN comment, a list, some authors, and some guidelines, largely based on books which radically changed my thinking. Currently: Vaclav Smil, Energy in World History (1994), and Manfred Weissenbacher, Sources of Power (2009). Both detail the role and impact of energy through world history. The latter draws strongly on the first, both are exceedingly well documented. TL;DR: coal changed much, oil changed everything. http://www.worldcat.org/title/energy-in-world-history/oclc/3... (http://www.worldcat.org/title/energy-in-world-history/oclc/30398523&referer=brief_results) http://www.worldcat.org/title/before-oil-the-ages-of-foragin... (http://www.worldcat.org/title/before-oil-the-ages-of-foraging-agriculture-and-coal/oclc/837625798&referer=brief_results) http://www.worldcat.org/title/oil-age-and-beyond/oclc/837625... (http://www.worldcat.org/title/oil-age-and-beyond/oclc/837625970&referer=brief_results) James Burke's books Connections and The Day the Universe Changed, and their accompanying television series, were a profound introduction to the history of technology, science, ideas, and philosophy. Though 30+ years old, they remain highly current and relevant.…
scottlilly
"The Goal" - Started my interest in Lean principles, along with how to apply them to programming - imagining my programs as little data "factories", that need to be made efficient and efficiently. "How I Found Freedom in an Unfree World" - Taught me I don't need to follow the standard path that "everyone else does", and to focus on how I can actively change my world - instead of waiting for someone else to to change it for me. "Code Complete" - Get it. Read it. Live it.
Ping_2_Ur_Pong
Below list are some of my favorite books overall that I didn't see mentioned. ---Non-software related How to win friends and influence people -Dale Carnegie (The definitive guide to helping you work better with people, truly great book, should be required reading) Blink- Malcolm Gladwell Godel Escher, Bach - (Recursion, but not from a software perspective. Its a glorious book that will change the way you think about recursion.) Hitch Hiker's guide to the galaxy, - Douglas Adams (Glorious book that is a fun read, when you need a break pick this up and laugh hard) Foundation Series - Assimov (Great stories from one of the best sci-fi writers ever) -------------------Software related Code Complete Concrete Mathematics The Art of Computer Programming The Design of the Unix Operating System Introduction to Algorithms -Cormen Design Patterns Elements of Resusable OO Design -Gang of Four
autokad
let me know if you guys find better replacements, but this is what I got on my list: O'Reilly - Scott Murray - Interactive Data Visualization for the Web Data Visualization with D3.js Cookbook A First Course in Probability Rails AntiPatterns - Best Practice Ruby on Rails Refactoring Bayesian Data Analysis Andrew Gelma The Pragmatic Programmer Code Complete Bishop - Pattern Recognition and Machine Learning O'Reilly Mining The Social Web
nstart
This book when combined with "The Clean Coder", and "Refactoring: Improving the design of existing code" completely changed how I thought about programming. It "levelled me up" so to speak. Even though I'm as far from being good as it gets, I still know I improved significantly from reading these three books.
abcd_f
This is the most disappointing programming book I have ever had a misfortune to buy. If you ever read any UML / Rational Software books - this is right up there in terms of sucking all joy out of programming, putting a blue collar and tie on you and then strangling you to death with soul-less trivialization of the software creation process. Horrible, horrible book. If you like K&R books, stay the hell away from Code Complete. But make sure to read it though if you think programming is a career.
vram22
Can't really single out one book as the best I've read. But many come close: - Code Complete - 1st Edition. I have both Editions 1 and 2. Edition 1 is very good and has a lot of stuff worth reading and practicing. Kernighan and Pike's The Unix Programming Environment. Kernighan and Ritchie's The C Programming Language. Would have to think of other good ones, though there are sure to be some.
a3n
They're both good. I'd definitely read Pragmatic before Complete, and I wouldn't feel bad for not finishing Complete. Outside the box, I'd recommend Heinlein's Time Enough For Love, for the attitude. Be as self reliant as possible, be as skillful as possible, be as useful to your team as possible. Find or grow an excellent team.

Also recommended in this reply

ramgp
Software development related reads with a strong focus on proven practices that enhance software quality in terms of readability and maintainability (and other software ~ilities) to ease the process of changing the software later on. The Art of Readable Code by Dustin Boswell & Trevor Foucher Don't Make Me Think 2ed by Steve Krug Remote: Office not Required by Jason Fried & DHH The Art of Unit Testing by Roy Osherove Code Complete 2 by Steve McConnell Refactoring: Improving the Design of Existing Code by Martin Fowler The Practice of Programming by Brian Kernighan & Rob Pike JavaScript: The Good Parts by Douglas Crockford Code Simplicity by Max Kanat-Alexander An Introduction to Programming in Go by Caleb Doxsey at http://www.golang-book.com/ Also read: How To Be Black by Baratunde Thurston
jerf
I would recommend a classic that you haven't read that isn't directly about a specific programming language, since it would seem to me that the virtue of reading a book about a specific language when you aren't in front of a computer is dubious. (Note I didn't say it had no virtue, I just find it dubious. YMWV.) Already mentioned is Code Complete and The Pragmatic Programmer. I'd add The Mythical Man Month, still a classic, but note that's a relatively short book and may not last long enough. (A depressing read in some ways; decades have passed and what's in the book is arguably common wisdom, yet I still encounter the errors outlined in that book every year.) Godel, Escher, Bach (mentioned by caffeine) is a love it or hate it book; check out a couple of summaries and see what you think. Personally, I don't recommend the SICP unless you're actually working through the exercises to some extent, and without a computer it's too easy to think you understand it when you don't. If you have already read all those, well, I'd suggest replying and saying so. :)
abesapien
Code Complete 2nd edition is a good and interesting book about programming in general. I also recommend these two because they are much lighter reads, and maybe better for a vacation: "The Passionate Programmer" and also "Masterminds of Programming: Conversations with the Creators of Major Programming Languages". Another thing you could do is find some great piece of software by a well know Python hacker and read his code lol. You could put that code in some readable format on your Kindle, PDA, or Smartphone.

Also recommended in this reply

ericb
How to Win Friends and Influence People by Dale Carnegie. It is arguably the most useful book I've ever read, albeit with the most embarassing title. As inklesspen mentioned, Elements of Style is a must. Code Complete and the Mythical Man Month by Fred Brooks. Timeless coding wisdom. For a laugh, Catch-22 by Joseph Heller, or Hitchhiker's Guide. Body Language, Julius Fast. Kitschy but fascinating insights into body language. Fabric of the Cosmos, Brian Greene. Brian is a fluke of nature--a physicist who can explain things realy well! Anything by Phillip K. Dick. Sci-fi stories that make you think.