Ultimate List of Programming Books

The number of solid programming books out there probably numbers in thousands. Still, to make this list semi-digestible it was narrowed down to the top 101 programming books.

If you truly want to excel as a programmer, then you have to continue to learn and grow your craft. The books below offer a great jumping off point for a variety of programming disciplines, skills, perspectives, and languages.

Foundational Programming Books

The books in this first section are highly regarded as some of the books you need to read if you truly want to master your craft as a programmers. As you'll see they go well beyond the code you write.

1. The Art of Computer Programming by Donald E Knuth

The Art of Computer Programming is a foundational four-book series that will help you become an incredible programmer. Knuth's work has been praised by scientists and programmers alike, including Bill Gates.

The four book series is extremely difficult to get through but will help you view programming in a new light while improving your skills at the same time. You'll find plenty of in-depth analysis, as well as plenty of problems to solve.

2. Mythical Man Month by Fred Brooks

This book was written not the premise that even though computers and technology changes, people don't. This book is a true classic that breaks down the human elements of software engineering. This classic book was first published in 1975 and has managed to stand the test of time. It's been over 30 years since it's original publication, which is living proof that the basic tenet the book was founded upon was correct.

Mythical Man Month is a great book if you're a programmer or want to become a project manager. It will help you better understand what can go wrong in software development, and offers practical approaches to team management.

3. Code Complete: A Practical Handbook of Software Construction by Steve McConnell

Code Complete is the go-to encyclopedia for practical coding knowledge. Plus, as a massive 900-page book, it's easy to understand and read through. The core focus of this book is to improve your everyday programming knowledge and help you construct code that's readable, clean, and easy to manage.

No matter your current level of programming knowledge, this book will help you. Even if you don't read the book straight through there are at least a few sections that will help you grow your knowledge.

4. Coders at Work: Reflections on the Craft of Programming by Peter Seibel

Coders at Work is a book that goes beyond the tangible skills of programming and instead dives into the lives of famous programmers. This book is packed with interviews from 15 different accomplished programmers, the projects they worked on, and the stories behind those famous projects. If you're looking for inspiration and a behind-the-scenes look at how different programmers think and work, then this is a book worth picking up.

5. The Pragmatic Programmer: From Journeyman to Master by Hunt and Thomas

This is another classic book that stands the test of time. If you're looking for a book that'll help you make the transition from a programmer to something much more, then you should read this book.

This book offers a collection of 70 different programming tips, lessons, and recommendations for software developers, that are spiced up with engaging analogies to truly help the concepts sink in. Think of this as an incredible reference guide to further your programming career.

6. Clean Code: A Handbook of Agile Software Craftsmanship by Robert C Martin

Sure, even bad code can function. But, poorly written code can bring the project to its knees. This is why having clean code is the utmost importance. In Clean Code, Robert Martin has teamed up with his colleagues from Object Mentor to share the best tips and examples to help you become a better programmer.

This book covers the principles and best practices surrounding clean code, along with plenty of case studies and examples so you can determine what's right and wrong about the code. Although most examples are given in Java, the lessons are applicable to every programming language.

7. Programming Pearls by Jon Bently

Programming Pearls is another classic programming book that will help you understand the basics of problem-solving. This book focuses on problems that irritate most programmers and offers helpful ways to work through them.

If you're looking to grow your understanding of algorithms, algorithm design, and prep your mind with innovative approaches to common problems, then this is a must read.

8. Code: The Hidden Language of Computer Hardware and Software by Charles Petzold

Code isn't explicitly a programming book, but it's all about how computers work on the lowest level. Remember, it's important to build an overarching perspective surrounding the work you're doing.

This book will help you understand the tangible effects of the code you're writing on the actual CPU. It's a fascinating read in its entirety.

9. Working Effectively with Legacy Code by Michael Feathers

Unless you're only working on development projects that start at ground zero, you'll probably run into lots of legacy code throughout your career. If you're working with existing code that's over 5 years old, then you'll find value in this book.

This book will help you better understand your legacy code and how to get the most from it, so it's not a drain on money and time.

10. The Clean Coder: A Code of Conduct for Professional Programmers by Robert C Martin

This book written by legendary software expert Robert C Martin will help to guide you through your career as a professional developer. It introduces techniques, tools, disciplines, and practices to become a true software craftsman.

It illuminates much more than technique and goes into approaching software development with honor, self-respect, and pride. If you're looking for a guidebook to help you throughout your programming career, then this is worth a read.

11. The Passionate Programmer: Creating a Remarkable Career in Software Development by Chad Fowler

This book is filled with all kinds of wisdom related to creating a lifelong career in software development. It shows you how to increase your skillset, maximize your time, and continue to push your career forward.

If you're serious about a lifelong career in programming, then you'll want this book to help you guide you towards a career that's both challenging and meaningful.

12. Writing Solid Code by Steve Maguire

With the increasing complexity of software, it's becoming more important to produce bug-free code as early in the development cycle as possible. This book, written by a former senior level Microsoft developer, examines all kinds of typical development mistakes and how to avoid them.

This book will help you to unlock the answer to writing bug-free code, an indispensable skill in today's development environment.

13. Software Craftsmanship: The New Imperative by Pete McBreen

Software Craftsmanship offers an approach to software to development that focuses on the developer's relationship with users and customers. It also guides you through the process of going from software apprentice to journeyman to potentially master craftsman.

A solid guide to growing your career as a software developer.

14. Understanding the Professional Programmer by Gerald M Weinberg

In this easy to read book, you'll gain valuable insight into how you can become a better programmer while improving your on the job performance. It's a great little book that focuses on the intangible skills you must possess if you want to have a long and rewarding development career.

15. Beautiful Code: Leading Programmers Explain How They Think by Oram and Olsen

If you're wondering how experts and high-level programmers craft the kind of solutions they do, then check out this book. This book offers case studies from leading programmers about how they came to the carefully designed solutions they did.

Far from just another book about the right and wrong ways to approach code this book gives you an over-the-shoulder perspective as they work through the respective problems.

16. Structure and Interpretation of Computer Programs by Abelson, Sussman, and Sussman

This is a foundational book that deals with functional programming. The book was written for a famous introductory programming course at MIT and has since been updated to reflect the latest programming standards. It is a difficult book to work through, but as you read through the book and work on the problems presented you'll find yourself a much better programmer by the end of it.

17. Refactoring to Patterns by Joshua Kerievsky

Reading about design patterns is one thing, but implementing them is another thing entirely. In this book, you'll learn how to move existing code into patterns, and even move it out of patterns, all from scratch.

The real-world code examples will help bring the principles you learn to life and show you how to implement patterns in the simplest manner possible.

18. The Relational Model for Database Management by EF Codd

This book was written by the originator of the relational model and covers all of the practical elements regarding designing relational databases. In order for a database to be truly relational, it needs to follow the twelve principles outlined in this book.

If you're looking to learn about and gain a deeper understanding of relational databases, then this book is a must read.

19. Introduction to Algorithms by Cormen, et al

This book is widely considered one of the best books on learning algorithms. If you're interested in understanding and writing algorithms, then this is an incredible starter book. It manages to go in-depth, while at the same time remaining accessible to all types of readers.

The first edition of this book has been widely used in university courses, while later editions of this book have continued to update learning algorithms in the modern day.

20. Compilers: Principles, Techniques, and Tools by Aho, et al

This book should be read based upon the cover alone and has been affectionally named "The Dragon Book." But, if that doesn't hook you, then get ready to dive into the awesome world of compilers. In this edition, the author's will teach you everything you need to know about compilers, from both a theoretical and practical perspective.

Even with the breadth of information covered, you'll find this book very approachable.

21. Algorithms + Data Structures = Programs by Niklaus Wirth

This classic book is a great primer on algorithms and data structures. It's also a short read, so it isn't filled with endless theorizing but is a practical guide you can reference again and again.

If you're looking for a better understanding of the logic of standard libraries that operate behind the scenes of most modern programming languages, then this is a book worth reading. Plus, it's also a great introduction to Pascal programming.

22. Algorithms by Sedgewick and Wayne

This book is the leading textbook on algorithms. It offers a survey of the most important algorithms currently in use and provides incredible foundational knowledge.

Currently, on its 4th edition, it's an indispensable source of wisdom for programmers of all levels looking to grow their knowledge about algorithms.

23. Foundations of Security: What Every Programmer Needs to Know by Kern, et al

Security should be a core focus as you're writing new programs and apps. This book offers developers a clear guide on best secure coding practices.

It lays out the most common threats you'll see and how you can best defend against them. Don't wait until it's too late, craft secure code from the start.

24. How to Design Programs: An Introduction to Programming and Computing by Felleisen, et al

This introductory book focuses on the process of program design. It's written for programmers and non-programmers alike, so it's very accessible to all readers.

It will guide you through the process of analyzing a problem statement, formulating goals, outlining the solution, finishing your program, and finally testing it. The text is very engaging and will help you grasp the basics of program design.

25. Software Requirements by Wiegers and Beatty

This book is the classic guide to software requirements and is now in its third edition. It offers an up-to-date set of practices, which cover a full range of software development requirements for a wide range of projects.

Software Requirements goes into extreme depth and provides countless techniques, case studies, best practices, and insights from decades in the field.

26. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions by Hohpe and Woolf

Enterprise Integration Patterns is an invaluable catalog of sixty-five different patterns, which help to understand and design effective messaging solutions. Let this book help you design effective messaging systems for your enterprise.

It also covers a variety of integration solutions, like, MSMQ, JMS, Microsoft BizTalk, SOAP, and XSL.

27. Patterns of Enterprise Application Architecture by Martin Fowler

In this book, Martin Fowler guides you through building and designing an enterprise application from start to finish. If you're building a large-scale application, then you'll surely come across some of the patterns presented in this book. This book will help you avoid common enterprise application failures by illuminating lessons that experienced object developers have learned.

If you're doing any kind of enterprise application development, then you'll find this book indispensable.

Professional Development and Leadership

If you're looking to grow your career in the direction that involves managing teams of programmers, then the books below will help you cultivate the skills and mindset to help you get there.

28. Peopleware: Productive Projects and Teams by DeMarco and Lister

Peopleware was written for programmers who are aspiring to be team leaders. The insights it offers into leadership and team management will not only help you manage people better but help you deploy better software.

Treating people like humans, not just numbers or skills, can help you advance your career in new ways. This book will show you how to do it effectively.

29. Software Estimation: Demystifying the Black Art by Steve McConnell

Software estimation is often referred to as the "black art" because of its uncertainty and complexity. This book helps to illuminate the process of software estimation and offers a straightforward approach.

With this book, you'll learn how to estimate time and cost, avoid common estimation mistakes, and develop your own custom-tailored estimation approach for you and your team.

30. Collaboration Explained: Facilitation Skills for Software Project Leaders by Jean Tabaka

This book will help agile leaders better understand and manage their teams. For agile development to succeed you need outstanding collaboration amongst all of its stakeholders. And it's not magic either, it takes careful planning and execution. Which is what this book is all about.

You'll learn effective methods from start to finish about how to maintain effective collaboration in an agile development environment.

31. Rework by Freid and Hansson

Rework is a business book from the team 37 Signals. This book helps to elucidate the surprising principles behind the success of their company.

The ideas in this book will help you rethink how you do business and how you approach your work. It's very straightforward and will surely provide you with the dose of inspiration you need.

32. Leading Lean Software Development: Results Are Not the Point by Poppendieck and Poppendieck

This book helps to show you how you can make lean software development work in any project, environment, or organization. Drawing from decades of experience, this book is built around the mental models that share our perspectives and behaviors.

If you're looking for ways to increase your competency as a leader, then this is a must read.

33. Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives by Rozanski and Woods

This book helps to guide you through the process of both designing and implementing architecture for information systems. It can help to refine your direction for your own, and your organization's approach to software systems architecture.

Whether you're an aspiring software architect, or currently work in the field you'll find yourself constantly referring back to this useful and practical guide.

Agile Methods and Development

Agile software development is an essential element of team software development.

34. Agile Software Development, Principles, Patterns, and Practices by Robert C Martin

This book guides you through the core tenets of agile development philosophy, without the usual fluff. You'll learn how to develop an object-oriented application, from the very beginning stages through low-level design and implementation.

If you're just getting started with agile development, then you'll want to start with this book. You'll come away with a solid foundation of agile software development, and how to write clean, easy to maintain code.

35. Practices of an Agile Developer by Subramaniam and Hunt

This book offers a collection of ideas, habits, and approaches to agile software development in an easy-to-read manner. Think of this as a guidebook to getting better results with agile development.

This book is all practical wisdom and zero fluff, follow this book and you'll become a better developer.

36. Agile Estimating and Planning by Mike Cohn

When you're working in an agile development environment estimating and planning are two things you'll want to get right. Traditional approaches to planning don't really translate well over to today's dynamic and change-driven environments.

Mike Cohn's book gives you a philosophy, along with guidelines, tools, and principles for excelling in planning and scheduling for uncertain projects.

37. User Stories Applied: For Agile Software Development by Mike Cohn

One big trouble spot when it comes to Agile development is user stories. User stories offer a great approach to both writing user stories and integrating them into your development lifecycle.

You'll learn the difference between good and bad user stories, along with practical ways to gather user stories, even when interaction with your users isn't possible. This book helps you solve the problem of low-quality user stories.

38. Agile Documentation: A Pattern Guide to Producing Lightweight Documents for Software Projects by Andreas Ruping

Software documentation provides a set foundation for all communication regarding your software project. This book offers practical advice on how to create documentation that is not only useful but lightweight.

Guidance should be easy to digest, be cross-referenced, and have a pattern form. This book shows you how to do this while providing solutions to the most common documentation problems.

39. Succeeding with Agile: Software Development Using Scrum by Mike Cohn

The book is the definitive guide to speedy development with Scrum and agile. This book combines insightful tips, recommendations, and real-world case studies to help you implement a Scrum and agile environment that works over the long haul.

Scrum brings its own unique set of challenges and this book seeks to remedy them in the most practical way possible.

40. Agile Testing: A Practical Guide for Testers and Agile Teams by Crispin and Gregory

Agile Testing will help to illuminate the role of testing in agile environments and provide real-world examples to put it to use. You'll learn how testing quadrants can help show you what kind of testing is needed, who should do it, and the tools you should use.

It's a unique book that looks at the agile environment from the role of tester and is a must-have in your agile collection.

41. Agile!: The Good, the Hype and the Ugly by Bertrand Meyer

This book offers a great primer on agile development. You'll pick up a great overview of the agile process, an overview of agile principles, and which techniques are the most effective.

You'll also learn which agile ideas are the most effective and what can be downright harmful to your projects. Before you dive into agile do yourself a favor and read this book.

Soft Skills

Becoming an incredible programmer takes much more than just mastering your craft. The books below will help you pick up additional skills to help you grow as a programmer throughout your career.

42. Cracking the Coding Interview: 150 Programming Questions and Solutions by Gayle McDowell

Coding interviews are no joke. If you're looking to land your dream job, then you'll need to impress during your interview. This book offers 150 of the most common programming interview questions and answers, as well as more valuable behind the scenes advice.

Landing a top programming job requires more than just programming skills, and this book will help to illuminate any potential weaknesses or blind spots before your interview.

43. Soft Skills: The Software Developer's Life Manual by John Sonmez

As much as you'd hate to admit it there is life outside of programming. For most developers, coding is the fun part. The hard part involves dealing with clients and colleagues, keeping productive, staying healthy, and managing your finances. In Soft Skills, John Sonmez shows you how to have a satisfying life as a professional software developer.

If you're looking to grow your life outside of the code you write, then this is a must read book.

44. The Practice of Programming by Kernighan and Pike

Programming takes a lot more than just writing code. As a programmer, you must also choose among various design alternatives, assess tradeoffs, debug and test, and maintain existing code. This book is full of practical programming advice and real-world examples.

Improve your craft and start to look at programming as a lifelong practice with this book.

45. Pragmatic Thinking and Learning: Refactor Your Wetware by Andy Hunt

Before you even begin writing code, software development happens inside your own head. This book teaches you how to utilize your own brain more effectively, so you can think better and faster, then apply that to your work.

Mastering and understanding your own brain is absolutely crucial if you want a long and successful career, let this book help you get there.

46. Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Hoover and Oshineye

To succeed today as a software developer you need to be constantly growing and refining your skills and techniques, which is exactly what this book is all about.

This book has cataloged and analyzed dozens of different behavior patterns, so you can hone and perfect your craft. It is an indispensable book along your path as a programmer.

47. Writing Effective Use Cases by Alistair Cockburn

Use cases are a very effective method of software planning. This book provides you with in-depth tutorials on how to write effective use cases that actually aid you in development. It's perfect for all levels of developers and goes into beginner, intermediate, and advanced concepts surrounding use cases.

Web Coding

The books in this section will help you become a better web developer from the ground up.

48. Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability by Steve Krug

This is a great and easy-to-read book that's loaded with loads of information on approaching web usability. If you're a developer who's looking to create anything online — mobile apps, websites, or online tools — then this book will help you build things that are intuitive and easy to use.

It's written for beginners, so you can expect a book that's approachable, clear, and concise.

49. HTML and CSS: Design and Build Websites by Jon Duckett

This book is quite the enjoyable read and will provide you with the foundations of HTML and CSS. It can be thought of as an easy and foundational book for understanding the basics of both designing and building a website.

By the time you've finished the book you'll have a fully deployed website.

50. CSS: The Definitive Guide by Eric Meyer

This book provides you with a comprehensive guide and solid introduction to CSS. However, even with the latest edition the book is still out of date and doesn't cover CSS3 at all. If you're just getting started with CSS, then this book will provide you with solid working knowledge. But, just know that if you want to upgrade your knowledge to the latest standards, then you'll need to continue your education elsewhere.

51. Beginning HTML5 and CSS3: The Web Evolved by Murphy, et al

Once you've mastered the basics of HTML and CSS you'll probably want to take this a step further. This book provides a solid introduction to the leaner, cleaner, and more efficient code you get by using HTML5 and CSS3.

This is the perfect book for forward-looking developers who want to embrace and utilize the latest web standards.

52. Design for Hackers: Reverse Engineering Beauty by David Kadavy

This book takes a unique approach to designing websites. The core of the book focuses on using the hacker methodology in the web design arena. It deconstructs examples of famous design, so you can see each element in its own right.

If you're looking for a fresh approach to web design in the modern day, then this is a book worth picking up.

53. HTML5 Pocket Reference: Quick, Comprehensive, Indispensable by Jennifer Robbins

This book is a great desk mate for those who need HTML5 information on the fly. This reference book has been updated the reflect the latest HTML5 web standards and provides an organized approach to help you find whatever you need.

This handy book really is indispensable for web developers who are currently building sites in HTML5.

54. Even Faster Websites: Performance Best Practices for Web Developers by Steve Souders

Website performance is something that needs to be at the top of every developer's mind. This book provides you with a series of valuable techniques to help you optimize the performance of your website.

Souders brings on eight other expert developers to share their wisdom and practical experience on how to optimize site performance to the highest levels possible.

55. PHP Solutions: Dynamic Web Design Made Easy by David Powers

This book offers a great introduction to using PHP to add flexible and dynamic elements to your website. It's been recently updated to reflect the latest technology changes. This book provides a steady supply of code examples, so you can understand the why and how behind the code.

The approach in the book builds from the ground up, so you don't have to be an expert to get started.

56. Beginning ASP.NET 3.5: In C# and VB by Imjar Spaanjaars

This is a great book, for those interested in building a website on the Microsoft platform. With this book you'll be able to create a wide array of various websites, ranging from hobby site all the way up to commercial websites.

This book's step by step format will take you through ASP.NET from the very beginning stages, all the way up to website deployment.

Shipping and Testing

If you're looking to expand your knowledge surrounding software testing and deployment, then you'll enjoy the books featured below.

57. Testing Computer Software by Kaner, et al

Every developer should have a solid understanding of QA testing. This is an easy to read, yet very comprehensive, book that covers the ins and outs of testing.

By the end of this book, you'll be able to write more testable code and have the ability to avoid common code problems.

58. Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems by David Agans

Debugging was written to provide you with the rules of engagement for fixing software and hardware bugs. When the pressure is on, you'll be happy to have this guide by your side.

This book will help to change the way you think about debugging and help you fix problems in a more efficient manner.

59. Growing Object-Oriented Software, Guided by Tests by Freeman and Pryce

This is one of the best books to read concerning test-driven software development, an established technique to help you develop better software faster. But, this idea takes skill and know-how to execute effectively, which is exactly what this book will teach you to do.

This practical guide blends theory and practical education, so you can create an execute an effective test-driven software environment.

60. Ship it! A Practical Guide to Successful Software Projects by Richardson and Gwaltney

This book can help you take your software development shop to new heights. Inside you'll find a collection of tips and tricks that highly successful software teams have used, and how you can incorporate them into your own projects.

This book is aimed at intermediate-level programmers and offers you timeless principles, instead of relying on current trends and the latest hype.

61. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation by Humble and Farley

Releasing software to users is often a painful and time-consuming process. However, this groundbreaking books shows you there is another way. You'll learn how you can build a system that will help you build and deploy tested code into the production process.

If you want to speed up and automate your deployment process, then this book will show you how.

62. Rapid Deployment: Taming Wild Software Schedules by Steve McConnell

In this book, you'll learn how to stay on top of a high-pressure development schedule. It covers best practices, valuable tips, and high-level strategies you can employ to keep projects moving.

Along with practical advice, you'll find case studies that illuminate common problems, along with candid discussions that showcase both positive and negative development practices. If you manage or work within a high-pressure deployment environment then let this book help you tame the beast.

63. Release it! Design and Deploy Production-Ready Software by Michael Nygard

Releasing your application is only half the battle. For a truly successful release, you want to deploy production-ready software that isn't filled with bugs. In this book, you'll learn how you can design your application for maximum uptime, performance, and ROI.

You'll learn about the biggest problems that face deploying new software and how you can remedy them before you launch.

64. Essential Scrum: A Practical Guide to the Most Popular Agile Process by Kenneth Rubin

If you've been wanting to learn about Scrum or implement its methods, then this book is a great starting point. This book illuminates the principles, values, and practices of Scrum and shows how you can implement these in the most effective manner possible.

Whether you're brand new to Scrum or have been using it for years, this book will help to deepen and refine your approach.

65. Zero Bugs and Program Faster by Kate Thompson

Kate Thompson spent two years researching every bug avoidance technique she could find and compiled it all into a single book. Zero Bugs and Program Faster offers plenty of useful programming tips, techniques to help you ensure your programming speed while writing bug-free code.

Plus, it's written with plenty of metaphors and examples, so it's actually an enjoyable read too.

66. The Art of Software Testing by Myers, et al

This is the classic book on software testing. It's been nearly three decades since the work was originally published, but its principles and analysis have stood the test of time.

A lot of books on testing provide tips and techniques, which can make them dated. This book focuses on underlying approaches that carry over no matter the language or technology.

Language Specific

The books profiled in the section below are solid recommendations if you're looking to grow your skills in a specific programming language.

67. Regular Expressions Cookbook by Goyvaerts and Levithan

This isn't your average cookbook. This book helps take the guesswork out of using regular expressions by providing you with over 140 practical recipes to common real-world problems.

This book can be a huge time saver and help teach you new programming tricks no matter what level of developer you currently are.

68. The Joy of PHP: A Beginner's Guide to Programming Interactive Web Applications with PHP and MySQL by Alan Forbes

This book will teach you how to program with PHP and MySQL even if you've never programmed before. A solid beginner's guide that will teach you the basics of PHP from the ground up.

If you're looking to lay the groundwork for a continuing education in PHP, then this is the book to start.

69. The C Programming Language by Kernighan and Ritchie

This book is a concise and easy read. But, if you're curious about C, or want to learn more about this foundational programming language, then it's worth a read.

The C Programming Language will help you master the C programming language, teach you how to think like a programmer, and finally understand the low-level computational model.

70. Designing Web Usability by Jakob Nielsen

This book is the definitive guide to web usability. In this book, Jakob Nielsen shares the entirety of his wisdom and experience. From content, to page design, to designing for users with disabilities, and much more, this book is the cornerstone for web usability knowledge.

It's just as relevant today as when it was first printed. Even though technologies continue to evolve and change, the principles that guide a usable website have stayed the same.

71. Thinking in Java by Bruce Eckel

This book will help you to start programming in Java, while at the same time show you how to teach a programming language. This book is praised for its clarity, organization, and direct examples that truly teach you the language in the easiest manner possible.

From the Java fundamentals to its most advanced features, this book from Bruce Eckel covers it all.

72. Effective C++ by Scott Meyers

This book provides you with an effective shortcut to learning C++. This practical approach to learning C++ describes the guidelines that experts use to produce sealer, correct, and efficient code.

It's packed with practical knowledge and working examples so you can learn C++ while writing the cleanest code possible. Everyone from beginners to seasoned C++ veterans will find something of value in this book.

73. The Art of Unix Programming by Eric Raymond

The development of Unix is one of the greatest engineering accomplishments of the last half of the twentieth century. This book brings to life over 30 years of software engineering and highlights it's philosophy, tools, culture, design patterns, and traditions that have made it some of the world's most innovative software.

You'll learn how to apply this wisdom to build more elegant, reusable, and longer-lived software.

74. HTML & XHTML: The Definitive Guide by Musciano and Kennedy

This in-depth guide puts everything you need to know about HTML and XHTML at your fingertips. This unique book combines tutorials with comprehensive reference sections that you'll want to keep close by.

The book hasn't been updated in several years, so it doesn't contain any references to recent developments like HTML5. But, it still remains a solid reference and great book to provide you with foundational working knowledge.

75. Effective Java by Joshua Bloch

At the core, Effective Java will teach you how to write code in Java. However, a lot of the concepts introduced are applicable across multiple programming languages.

This book offers working, best-practice solutions for common problems developers will face on a daily basis. This authoritative guide will help you write better, more efficient, programs.

76. Smalltalk Best Practice Patterns by Kent Beck

This classic book is the ultimate guide for better Smalltalk programming. The core of this book teaches you patterns that organize all informal experience, which once you understand will help you write much more effective code.

Even if you don't program in Smalltalk you'll learn something that can apply to whatever language you program in.

77. XML in a Nutshell by Harold and Means

XML is continuously evolving and this is a book you'll want to have by your side. This book is clear, concise, and provides a valuable reference.

Whether you're looking for information on how a piece of technology works or looking for a very precise piece of syntax, XML in a Nutshell, gives you the information you need.

78. High Performance MySQL: Optimization, Backups, and Replication by Schwartz, et al

If you're looking to unlock the true power of MySQL, then this is a must read. This book covers every advanced concept of MySQL that you'll want to master. Plus, it provides examples of not only how it works, but why it works as well.

By the end of this book, you'll know how to think in MySQL.

79. SQL in 10 Minutes, Says Teach Yourself by Ben Forta

Having a solid working knowledge of SQL is a prerequisite to working with databases. This book provides you with a straightforward approach to learning SQL in the shortest amount of time possible. It will walk you through a systematic sequence of 22 concise lessons that will have you working from the basics up towards more advanced concepts and applications.

80. Seven Languages in Seven Weeks by Bruce Tate

Common programming wisdom states that you should learn a new language every year, but seven languages in seven weeks? Is that even possible? In this book, you'll come to grasp how it's possible to learn a language quickly, how to better learn from scratch, and might even come to learn a new language you've been wanting to pick up.

This book focuses on Haskell, Scala, Prolog, Clojure, Erlang, and Ruby.

Programming and Design Patterns

The books highlighted in the following section will help you grow your understanding of design preferences, and overall programming system design.

81. Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, et al

This classic book covers what design patterns are and the most common design patterns you'll run across throughout your career. It teaches you how to investigate requirements, create solutions, and then translate those solutions into code. It's a bit difficult to get through, but if you have a grasp of UML, then the book will be that much easier to follow. You can always start with, Head First Design Patterns, highlighted below to give you a working foundation.

82. Head First Design Patterns by Freeman, et al

This classic book is the go-to guide on helping your understand design patterns and how they influence programs. This book shows you the tried and tested methods that developers use to create functional, elegant, and flexible software.

Plus, this book was written in a way to help you easily learn and understand design patterns, based on the latest cognitive research.

83. Refactoring: Improving the Design of Existing Code by Fowler, et al

Although a lot of recent developments have automated some of the refactoring solutions highlighted, the concepts offered in this book are still incredibly valuable — especially in today's agile development environments.

Mastering refactoring allows you to breathe new life into lower code and create a maintainable codebase that improves with time. This book dives into all refactoring principles and covers everything you need to know about the topic.

84. Domain-Driven Design: Taking Complexity in the Heart of Software by Eric Evans

This book will help you create a maintainable architecture that's based on domain modeling. It's a hard book to grasp but will shake your existing paradigm surrounding software architecture. If you're looking to master object-oriented programming and software architecture, then this book is a must-read, no matter how many times you have to read through it.

85. About Face: The Essentials of Interaction Design by Cooper, et al

This book will help to open your eyes about development from the end point of user interactions. Great software is about more than just software architecture, it's about helping your users reach their goals in the most seamless manner possible.

Understanding current and future interaction design preferences will help you think about how software can work seamlessly with your design.

86. Object Design: Roles, Responsibilities, and Collaborations by Wirfs-Brock and McKean

Object Design focuses on the practice of designing objects, where each object has a specific role and responsibility. It's a great introduction to responsibility-driven design where every single element has its place in the larger whole.

This book includes practices and techniques to help you develop modern object-based applications.

87. The Non-Designer's Design Book by Robin Williams

As a programmer knowing the principles of good design will only help you become a stronger developer. This book will help you understand design, even if you have no previous experience.

The clearly explained concepts and colorful prose will help you establish solid working knowledge of good design principles.

88. User Interface Design for Programmers by Avram Spolsky

A lot of programmers shy away from UI programming, because of its close relationship to UI design. However, this book shows that linear and logical thinking can apply to UI design too.

This book brings out the core concept that the programming model can also be applied to the design model. By the end of this book, you'll have a solid grasp on how to design interfaces with the user in mind.

Thought Provoking

The books below have been chosen to help expand your mind and perspective throughout your development career.

89. Object Thinking (Developer Reference) by David West

This great book dives into the history, politics, and philosophy of object-oriented programming. West covers how the best programmers rely on conceptualization and analysis, rather than processes and methods to come up with elegant solutions.

This book helps you understand object-oriented programming from some of the field's most revolutionary minds.

90. Godel, Escher, Bach by Douglas Hofstadter

This book is a truly fascinating read. It's not directly related to programming but helps to illuminate problems programmers face every day, like boolean algebra, verifiability, proof, and recursion. This book was written to address the nature of "maps", or links between formal systems.

If you make it through this book, then you can expect to think about the meaning of your work in a whole new light.

91. Inside the Machine: An Illustrated Guide to Microprocessors and Computer Architecture by Jon Stokes

As a programmer it's a good idea to have foundational knowledge about the machine you're working on. Regardless of the machine you're using they all behave in similar manners.

This book will help you better understand the technology that forms the basis of modern computing and should be essential reading for anyone who works with technology for a living.

92. Extreme Programming Explained: Embrace Change by Beck and Andes

Extreme programming is like SCRUM on steroids. The first edition of this book laid out what XP (Extreme Programming) was, while the second edition has updated that with five years of experience, growth, and change revolving around XP.

This book shows you how to improve your entire development process by integrating extreme programming principles of accountability, transparency, and responsibility.

93. The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity by Alan Cooper

This book by Alan Cooper makes an interesting case for the prevalence of bad software. Our technology products are becoming a part of our daily lives, so the need for technology to work the way people think is becoming a pressing need.

This book suggests there's a happy medium between products that are both user and bottom-line friendly, and show how we can find that medium quickly. It's a thought-provoking read on the present and future of software development.

94. Envisioning Information by Edward Tufte

This book will help you both visualize and explain complex information. A valuable skill in any developer's arsenal. It's very practical and easy to read and does away with any unnecessary fluff.

If you're ever called upon to deliver a highly complex graph or chart, then you'll need this book to help you produce something both clean and meaningful.

95. The Best Software Writing I by Avram Spolsky

This book is a collection of 29 different essays that relate to software development. The writing is incredibly good and speaks to both the humorous and technical sides of software. It's both an entertaining and educational read, and a great way to get inside the heads of over two dozen top programmers.

96. The Visual Display of Quantitative Information by Edward Tufte

If you're looking to improve your ability to both analyze and display information, then this book is a great place to start. Understanding how to better display quantitative information won't only help with presentations, but will give you a leg up in understanding how your application can handle large amounts of data, and how it will interplay with your overall design.

A solid book that draws on classic examples to make a point in the modern day.

97. Computer Systems: A Programmer's Perspective by Bryant and O'Hallaran

This book will help every programmer to build solid foundational knowledge about computer systems. It's important to understand the basic elements of computer systems and how they influence the programs you write.

Being a well-rounded programmer means having a solid grasp on hardware and computer architecture, operating systems, and systems software, and this book will help you get there.

98. The Timeless Way of Building by Christopher Alexander

This book by Christopher Alexander helps to illuminate the central reasons why some software just feels "right," and others don't. This is the original book about patterns and architecture. Although the book is based on architecture principles it translates nicely to software development.

It exposes the ancient ideas of architecture and will get you thinking about how you can apply these ideas to your next project.

99. Facts and Fallacies of Software Engineering by Robert Glass

In the history of software engineering, certain facts and fallacies have come to light. This book addresses those facts and fallacies, so you can better separate the noise from the truth.

This book is controversial, but it'll have you thinking about software engineering in an entirely new light and may even help you write better code over the long-term.

100. The Design of Everyday Things: Revised and Expanded Edition by Don Norman

This book shows you that good, usable design is possible in all circumstances. This book won't teach you about the programming craft specifically, but it will help you think about the software you're writing from a usability perspective.

If you're dedicated to shipping software that satisfies your customers, while being easy to use, then this is one worth reading.

101. The Annotated Turing by Charles Petzold

In an age before computers, Alan Turing invented an imaginary computer and created the field of computational theory in the process. This book guides you through Turing's original paper and makes it accessible to programmers of today.

The Annotated Turing cuts to the core of computer science and is both a valuable and intriguing read for all levels of programmers.

Summary

I hope the list above provides you with enough educational references to grow your career as a programmer. Please bookmark this list as a reference and come back when you require more programing book inspiration.