2020’s Definitive Reading List For Developers – Check Out The Books That Made The Cut
Disclosure: Your support helps keep the site running! We earn a referral fee for some of the services we recommend on this page. Learn more
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
The books in this section will help you become a better web developer from the ground up.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
The books profiled in the section below are solid recommendations if you're looking to grow your skills in a specific programming language.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
The books below have been chosen to help expand your mind and perspective throughout your development career.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.