Code Complete
Steve McConnell's large, research-backed handbook on software construction: designing routines, naming and using variables, control flow, defensive programming, code tuning, debugging, refactoring and collaborative construction. It is not a book to read cover to cover. Keep it nearby and read the chapter that matches whatever you are currently doing badly, using its checklists to review your own code.
2nd edition, 2004
Goodreads · Sept 2026
952
Goodreads · Sept 2026
4.30/5 (9,511 ratings)
Goodreads · Sept 2026
Book
Other
Steve McConnell
Intermediate
around $50
What the book is
Code Complete focuses on construction, the part of software development where design turns into working code. The second edition, published in 2004, runs to about 950 pages. Its central theme is that managing complexity is software's primary technical challenge, and it backs its advice with research and data where it can, which sets it apart from books built on one author's opinions.
It is organised into parts:
- Laying the foundation: metaphors for software development, and prerequisites such as requirements and architecture.
- Creating high-quality code: design in construction, working classes, high-quality routines, defensive programming and the pseudocode programming process.
- Variables: general issues, naming, and fundamental data types.
- Statements: organising straight-line code, conditionals, loops, unusual control structures, table-driven methods and general control issues.
- Code improvements: quality, collaborative construction (reviews and pair programming), developer testing, debugging, refactoring and code tuning.
- System considerations: program size, managing construction, integration and tools.
- Software craftsmanship: layout and style, self-documenting code and personal character.
Most chapters end with a checklist, which is one of the book's most practical features.
What readers say
On Goodreads the second edition averages 4.30 out of 5 from about 9,500 ratings (September 2026). Reviewers consistently praise its thoroughness, the focus on managing complexity, the research behind its advice and the checklists. The common criticisms are its length and wordiness, that experienced developers find much of it familiar, and that parts feel dated compared with agile practice, open source workflows and continuous integration.
How to use it
- Read by need. If your functions sprawl, read the chapter on high-quality routines. If your variable names are unclear, read the naming chapter. If debugging takes forever, read the debugging chapter.
- Use the checklists as a self-review before submitting code or opening a pull request.
- Read these chapters in full early in your career: high-quality routines, the power of variable names, defensive programming, debugging and developer testing.
- Skip or skim sections about project management and tooling that have aged.
Is it worth buying today?
Yes, for developers in their first few years who want a reference on writing solid code at the line and function level. It complements rather than replaces Clean Code and A Philosophy of Software Design: it is broader, more measured and more evidence-based, but also much longer. If you want something short, start with those and come to Code Complete as a reference.
Common questions
First or second edition? The second (2004). Its examples cover several languages, including Java, C++ and Visual Basic.
Is it too old? The principles about naming, routines, control flow and debugging have not aged. The tooling and process sections have.
Best for: junior and mid-level developers who want a reference for writing clear, correct code, and anyone who likes advice backed by evidence.
Ready to start?
Opens on Steve McConnell in a new tab.
Stuck on something specific?
Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.
Follow along
New writing, resources and project ideas land here first.