The Ultimate Reading List for Developers
The version of the browser you are using is no longer supported. Please upgrade to a supported browser.Dismiss

View only
16Code Complete: A Practical Handbook of Software ConstructionAnd this is it! The number one book (IMHO) to read if you are going to be a great software engineer.
Do yourself a favor. Make this the first book you read, and the first book you recommend to your fellow developers.
The encyclopedia of good programming practice, Code Complete focuses on individual craftsmanship -- all the things that add up to what we instinctively call "writing clean code."
This book is one of the most transformative books I’ve ever read. Immediately after reading this book, the way I wrote my code and the way I thought about writing code completely changed.
The book provides information on how to write high quality code, use variables and statements. It helps to improve software craftsmanship of a programmer as well.
Tackles every facet of programming, with tons of examples.
No matter what level you’re at, Code Compete will undoubtedly change the way you think about and write code.
You can gain many a years worth of experience just by reading this book.
I usually recommend this book whenever someone wants to grow in their development abilities specifically related to writing code.
Read it a few times and use it as a reference manual in debates with your colleagues.
I think this book is a great read, and developers of all levels can learn a lot from it. I haven’t stopped learning from this book, and every time I read some parts I happen to find new interesting stuff.
Several years ago, when I was just getting started as a software developer, I read Steve McConnell's Code Complete all the way through, cover to cover. Then I went back and read several sections again. There is no question in my mind that as a result I immediately became a far better developer than I was at that time-not only that, my entire mindset was changed.
While this book will keep you occupied for many days, nights and weekends with it’s 900 pages, every page it contains is packed with information on how to become a better programmer. 900 pages you won’t regret.
15The Pragmatic Programmer: From Journeyman to MasterIn The Pragmatic Programmer, Andrew Hunt and David Thomas codify many of the truths they’ve discovered during their respective careers as designers of software and writers of code.
Instead of worrying about code, the authors boiled down all the practical approaches that they've found to work in the real world into this one book.
This is a great book for programmers who have learned the mechanics of programming, maybe in college, but don't quite feel secure deciding what to do.
There is some extremely pragmatic advice in this book that will bestow upon you lessons that otherwise would take years or even decades to learn.
It provides guidelines to use tools and test codes effectively. Moreover, it provides many concepts to develop high quality code, and uses the pragmatic approach towards programming.
Concentrates on nitty-gritty real-world approaches to solving problems through code.
The tips alone might seem obvious, but they contain some surprising dimensions that will help strengthen your programming career and hone your craft!
How groundbreaking is this book? Groundbreaking enough that it launched an entire publishing company. It's a big deal, if you've somehow managed not to read it yet, go do so.
Not only will this book change your coding habits, it will also change your personality as a programmer. It is filled with practical advice on getting the best of both you and your code.
What makes one programmer an artist who can seemingly turn code into magic and another a simple coder who does acceptable but uninspired work? This book helps explain the difference.
I think all Programmers should read this book. It will certainly influence you in someway or another, and although there’s a lot of philosophical discussion about programming, it does also contain very practical advice. A must have.
What I particularly like about this book is that it is representative of a growing movement of people, including myself, who are promoting the idea of software development as a craft, de-emphasizing the engineering metaphor, and stressing personal responsibility and pride of workmanship.
Very informative, humorous and educational book, and gives a great deal of practical advise. This book will make you think instead of just following the rules.
14The Mythical Man-MonthThis book is a classic, but recently revised and corrected. The amazing thing is how relevant the book still is to software product development. If you are involved in software, this book is a must-read.
Arguably the only classic book in our field. If you haven't read it, shame on you.
Understanding this book is a prerequisite for thinking correctly about managing software teams.
All those problems you thought were unique to your project, well I’ve got news for you, they aren’t. They are inside this book. If you want a very practical programming book about complex software development projects, this is it.
The book by Frederick P. Brooks provides information into the various developments in software tools and environment for the last 21 years.
A management classic in the finest tradition. While not a programming book, a must-read for every developer.
If you’re aspiring to become a project manager, this book will help you understand things that can go wrong in software development and will give you practical advice or working with, organizing and managing teams.
It is unfortunate that we are making the same mistakes in software development year after year. A must read for every project manager and developer.
The fact that this book remains high on many programming bestseller lists and is still used in college courses says a lot.
This book is a classic about software management. It’s quite dated, but you would be surprised to see that software management problems have not changed that much through time.
If you have some time in your reading schedule, The Mythical Man-Month is definitely worthy of that time.
13Refactoring: Improving the Design of Existing CodeThere is also a catalog of more than 40 proven refactorings with details as to when and why to use the refactoring, step by step instructions for implementing it, and an example illustrating how it works.
The trick to reading this book is to carefully read through every single refactoring pattern and then try to apply it on your code base (you don’t have to commit if it doesn’t fix things).
This book covers just about all of the major refactorings that all software developers should know how to execute in any code base. Learning how to refactor your code allows you to breathe new life into it and to have it improve over time as it is maintained, rather than rot.
It is a good book on UML, COM related technology, and provides different approaches for software development. The book explains numerous refactoring methods to eliminate smell (code).
Shows you how to rebend a programming pretzel, taking poorly designed code and turning it into something even humans can understand.
Refactoring is so important that, depending on what language you work with, you may not even think you have to actually read it: your IDE probably supports many of the operations it describes out of the box. Nonetheless, it is a critical read, as it puts the reader in the mindset to understand the two hats they must wear as a coder, and how to intentionally change from "coding" to "refactoring".
A must read book on anyone on how to improve your existing code.
Readers of the book will come away with a more mature, more long-term perspective about what constitutes good design. It is an easy read and can serve as a reference book even after the first reading.
This book is essential reading for anyone involved in the construction of software using object oriented languages. Fowler and his fellow contributors do an incredible job of simultaneously introducing and formalizing a code improvement technique called "refactoring."
It pays to read this one straight through
12Clean Code: A Handbook of Agile Software CraftsmanshipThe result is a knowledge base that describes the way we think when we write, read, and clean code.
If you are going to read one book on programming in your professional career, it should be this one.
This is another one of those books that completely changed the way I wrote code. I can neatly divide my programming career into pre-Code Complete, pre-Clean Code and after.
The code examples explained in the books are mostly in Java but the guidelines have also been explained in other languages. It is a great book for object orientated coding.
Emphasizes the importance of building code that can be digested, working through lots of real-world examples.
Poorly written code can bring a project to its knees, which is why developing great code is so important! In Clean Code, “Uncle Bob” Martin shares tips and examples on how to create better code.
Clean Code is about how you communicate with your co-workers (fellow programmers) through code itself
An epic book on software craftsmanship. The book not only tells you how to write good code, but also an effective way to develop and approach software development. It is sure to change your outlook on work.
This is a great book, it covers a lot of information according to the author personal experience and opinions.
This book focusses a lot on style, commenting, and good program organisation and will guide you step by step into a becoming a master programmer!
11Introduction to AlgorithmsThis has to be the single best book for understanding and using algorithms (which you will be doing a lot of in software development).
An insanely dense but very worthwhile book.
It is a solid programming book for anyone interested in increasing their ability to write and understand algorithms, which is the core of writing code.
The lessons on introduction to algorithm provide programming courses designed specifically for college students learning programming courses.
Gives fast ways to solve complex problems, using the right data structures. Comprehensive and quintessentially useful.
Considered to be the “bible of algorithms.”
The explanation of algorithms is rigorous so that you can understand precisely why an algorithm works in a certain manner.
This book is my favorite reference on algorithms. Whenever I want to consult or recall how certain algorithm worked/performed I like to grab this book.
Not a programming book, but a book to read nonetheless. While the book is called ‘Introduction’, don’t underestimate it’s level because it will hurt your brain for sure!
10Patterns of Enterprise Application ArchitectureI like this book because it's a single information resource on pretty much all the design problems an architect or a developer runs into when working on a typical software development project.
You won’t necessarily implement most of these patterns yourself, but it’s an invaluable resource to understanding the differences in architectures and why framework work the way they do.
What I found most useful though, was the many patterns contained in the book that are often seen in enterprise applications. This is a book I referenced all the time when I was building large enterprise applications for my job.
This book describes a set of patterns that work with a certain kind of application, business apps, but that are applicable to more than one platform.
Helps corporate developers recognize common patterns in real-world problems, and digs into solution details for each pattern.
It does a very good job, however, of managing to still provide ample context, describing when you'd want to use (or avoid) a particular pattern. I can't tell you how many times I've referenced this book.
For senior developers, this book presents ideas and concepts behind the design of enterprise applications. For anyone venturing into the murkier waters of complex system and real life/large scale business applications, these are important concepts to understand.
Patterns of Enterprise Application Architecture does exactly what it sets out to do: provide the reader with a catalog of proven enterprise level patterns and the knowledge to use them.
While its title suggests that it’s extremely dry, I’ve found it to be a very useful collection of patterns. It reads as practically a cookbook for a framework like Ruby on Rails, so much so that I wouldn’t be surprised if DHH read this book before setting out to write Rails.
8Peopleware: Productive Projects and TeamsPeopleware teaches readers how to run successful projects and teams through six main sections: Managing humans, managing the work environment, finding the right people, growing your team, building a solid culture, and how to make work fun.
If you have any legitimate aspirations to be a "Team Leader" in practice instead of in name only, you need to pick up a copy of this book.
This book was one of the most influential books I've ever read. The best way to describe it would be as an Anti-Dilbert Manifesto.
I have to say it was one of the most influential books I've ever read.
Emphasizes the human element in software development and how to put together a project that actually gets work done.
If you are a manager who wants quality and not only quantity, read this book now! The authors explain how managers can enable their software teams to realize their potential in a sustainable manner.
This book is about people—managing teams and creating applications that use the skills of the people who create them to delight users.
8Working Effectively with Legacy CodeI love this book because almost every software developer, at some point in their career, has to support and work with a legacy system.
If you are working on a large code base more than 5 years old, this book might be your new bible. Read it and take it to heart.
There is more emphasis on old code that nobody understands, mainly because it is messier and harder to work with. Working with legacy code isn't fun, but this book helps make it as painless as possible.
It's organized extremely well, indexed largely by actual complaints you might have about an inherited codebase. If I'd read this book earlier, my first job experience would have been much less stressful, and much more rewarding.
If I have to summarise the essence of the book in a line, it would be "Write unit tests, refactor code, make sure tests are passing."
This book helps developers interact with older code to produce better applications.
This is awesome reading about modern software development, its pitfalls, and typical failures. Most of the code we're working on now is legacy (a.k.a. open source). I read this book as a novel.
8Design Patterns: Elements of Reusable Object-Oriented SoftwareAs time has gone on though I've come to appreciate the ideas more and more and I still regularly refer to it when I'm stuck with a piece of design work. Highly recommended.
This classical book is critical reading to really understand what design patterns are and become familiar with the most common design patterns you are likely to encounter in your career.
As you probably already realized, this book is one of the seminal books on patterns in software development. If you are a professional software developer, you must read this.
I'm surprised to see this on a list of "beginning of your career" books because it's much more suitable for people with a lot of OOP under their belts.
Another classic, which contains a huge collection of programming patterns.
Seeing the path from problem to solution has helps you come up with creative solutions to your own problems.
7Code: The Hidden Language of Computer Hardware and SoftwareMany chapters are about hardware concepts and five chapters are devoted for software and explain about the operating system, floating point arithmetic and GUIs.
This book is explicitly NOT for programmers, it's for all those non-programmers who either want to become programmers, or want to understand what programmers do, or just want to explore the weird world of bits and bytes.
After reading this book, you’ll understand what the code you are writing is actually doing and how a CPU actually executes your code. This is both a fun and fascinating read.
The book “CODE: The Hidden Language of Computer Hardware and Software” by Charles Petzold deals with a number of programming concepts starting from number systems - decimal, octal, binary to high level languages
Should be on the short list of everyone who's involved in the computer industry, developer or not.
Many modern programmers don’t fully understand the link between the code they write and the underlying hardware. This book is designed to demystify the connection.
7Domain-Driven Design: Tackling Complexity in the Heart of SoftwareAfter reading this book I started applying the DDD principles in my projects wherever applicable and I have been successful in eliminating anemic domain models and handling business logic in a more OO way.
This is probably the least readable book of the bunch. It’s a slug to work through, but the ideas are worth it. It’s a great primer on how to turn a problem space into a beautiful OO domain model.
This book will help you learn how to create a maintainable architecture that is based on domain modeling. Once you learn what is in this book, you can’t go back. You won’t think about software development architecture in the same way again.
In short, this book is excellent and completely changed how I think about and model domain objects at work.
In the real world, you (as the developer) are ultimately responsibilty for clearly expressing the abilities and limitations of the software, and this book shows what those conversations can and should look like.
6Head First Design PatternsThis is a great book for anyone trying to understand the advantage of well constructed object oriented software and the book is a pleasure to read. Highly recommend!
Read the classic first, then read this one, then go back and read the classic one with a renewed understanding. This book makes design patterns much easier to understand. It’s also a useful book for learning how to teach complex topics and make them interesting.
While reading the Gang of Four book I found it very complicated to memorize the pattern. After reading this book it will be easy to memorize, reproduce and implement the patterns effectively.
I believe everything presented in GoF is presented better in Head First Design Patterns. I know that not everyone is crazy about the Head First series, and even I find the structure and layout of the book grating at times, but I think the diagrams and visuals are light years better than those of GoF.
It will help you create functional, elegant, reusable, and flexible software. The trade-off for each patterns have been clearly pointed out. Most books on design pattern talk about how to implement the pattern, but the authors of this book also explain the why and the how.
This is a great introductory design patterns book that is very easy to read due to its fun and engaging style. The fact that it is a fun book to read is a major plus!
6Structure and Interpretation of Computer ProgramsWith an analytical and rigorous approach to problem solving and programming techniques, this book is oriented toward engineering.
It isn't a particularly easy book and if you're after quick drop-in solutions for a problem then this isn't the book you are looking for. It is, however, rewarding, dense reading and it has probably had more impact on my coding then anything else I've read.
I debated putting this one on the list. Is it really foundational? It depends on how solid of a foundation you want to have. If you want to have a really solid foundation, then the answer is a resounding “yes.”
This provides answers to many difficult questions of programming. Additionally, the book provides simple solutions to complex programming. The book further explains the four trends of programming languages – imperative, object-oriented, logic based and applicative programming.
Concentrates on breaking big problems down into little ones, and ensuring the pieces come back to build the whole.
6Programming PearlsAlthough it contains good and sometimes quite novel ideas, the aim of the book is not to teach something new but to help you become a better problem solver.
Programming Pearls is the next best thing to working side by side with a master programmer for a year or so. It is the collective wisdom of many journeyman coders distilled into succinct, digestible columns.
The classic book of programming problems. Read this book and actually do all the exercises.
This is a classic book for newbies that teaches the basics of solving problems. If you work through the problems on your own (without looking ahead) you’ll learn a lot and be a much stronger programmer with a deeper understanding of algorithms and algorithm design.
After reading this book, you’ll be a better coder, guaranteed!
6Coders at Work: Reflections on the Craft of ProgrammingThe whole concept is based on the series of 15 interviews which is written with an introduction in the format of transcripts.
Takes case histories -- which is to say, influential developers' real-life stories -- and weaves them into a powerful view of how 15 of the industry's best and brightest kicked some serious technical butt.
Coders at Work gives a peek into what makes some of the greatest programmers tick and how they think. Definitely a must read!
In day-to-day work, we are overwhelmed by books and tutorials about the mechanics of programming or best practices; this book gives developers a great opportunity to connect at a deeper level with the craft, history and inspiration of development.
Learn from other programmers in a book packed with interesting interviews. A really good starting point if you are curious about life as a programmer.
5The C Programming LanguageBut if you can make it through this book by yourself, you've got what it takes to be a top gun programmer, and you've got a terrific foundation for everything else you're going to learn.
The book by Kernighan and Ritchie provide classic programming structures for core C programmers, which includes- the use of data types, if/else, for, printf, while, functions, arrays, variables etc. It even touches upon good programming methods and code reuse.
Not only offers the definitive guide to C, but shows you how to program in general. My personal choice for the most important first book.
5The Art of Computer ProgrammingThe book begins with basic programming concepts and techniques, then focuses more particularly on information structures–the representation of information inside a computer, the structural relationships between data elements and how to deal with them efficiently.
The book is written by Donald Knuth and it provides chapters on fundamental algorithm, sorting & searching, semi-numerical algorithm, syntactic algorithms, combinatorial algorithm, compilers and the theory of context free languages.
For anyone with a mathematical predilection, Volumes 1 and 3 ("Sorting and Searching") stand out as true bibles of the industry.
This huge set of books (one volume couldn’t contain all the information) is an encyclopedic coverage of the topic.
5Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment AutomationA programming book I highly recommend if you want to automate your entire deployment process—and trust me, you do!
Continuous Delivery describes, with real-world practical examples, how to version control all configuration, how to test integration points, how to handle branching and branch content, how to safely rollback, how to deploy with no downtime, how to do continuous testing, and how to automate everything from checkin to release.
It's definitely a must-read for anyone who is serious about software engineering.
4Rapid Development: Taming Wild Software SchedulesAt least have some idea of what works and what doesn't before you start – in McConnell's words, "read the instructions on the paint can before painting." Sure, it sounds obvious enough until you read this book and realize how rarely that actually happens in our field.
Steve McConnell captures a lot of the development management ideas that Microsoft figured out in their first decade or so of developing software on a large scale.
This book talks about a rapid software development strategy that can be applied to build high quality software in short time. It has listed many best practices that can be effectively applied on your projects.
4Agile Software Development, Principles, Patterns, and PracticesThis book takes you through all the core tenants of Agile development without all the fluff. Not only that but it introduces the SOLID design principles which are fundamental to understanding how to write clean, maintainable code. This book was the book that convinced me to actually start doing pair programming.
This book has dozens of practical but concise examples illustrating everything from relatively simple object-oriented design concepts such as Meyer's Open/Closed Principle to subtle and complex issues with class and package dependencies.
This book will stretch and expand the mind of any reader and the practice of the principles contained in the book will lead to cleaner, more beautiful code.
4The Design of Everyday Things: Revised and Expanded EditionThis book will give you a new appreciation of the "devil in the details." If designing a door isn't the no-brainer we thought it was, maybe it's time to give ourselves a break for not being able to design software perfectly, either.
Donald Norman's classic The Design of Everyday Things is one of the best books on "UI design", even though it talks more about doors and and refrigerators than computers.
While this is not specifically a computer-oriented book, it is nonetheless a must-read for anyone who designs and develops computer software.
4Don't Make Me Think, Revisited: A Common Sense Approach to Web UsabilityIf you choose to read only one book on usability, choose this one. It's chock full of great information, and it's presented in a concise, approachable format. It's suitable for any audience: technical, non-technical, user, developer, manager, you name it.
Finally, a book that tries to understand the principles of good UI design, not just the mundane rules (like "don't change the colors of links").
The book is loaded with helpful information that’s presented in a clear and concise way that could be understood by both technical and non-technical audiences alike.
A commons sense approach to web and mobile design, with many interesting insight in colors, pageflows and professional web design, all in an easy to read cover. Opening this book will make you want to finish it non-stop!
4Effective JavaMany of the principles are also applicable to other programming languages, as a lot of the principles of good software design are universal ones. I found that, after reading this book, I looked at the code that I wrote in a different light - it became easier to read, there were less lines of code overall, and it was easier to fix bugs when I came back into it later.
Some of the recommendations are dated by the changes to the language, but overall this is still a really good book.
I almost never work with pure Java anymore, instead largely using other JVM-compatible languages, but the Java I wrote before reading Effective Java looks very different than the Java I wrote afterwards, and I definitely prefer the latter.
This book is packed with tips on how to write better code, be it concurrency, serialization or other patterns to make your Java programs shine.
4Gödel, Escher, Bach: An Eternal Golden BraidMy primary criterion for choosing courses was to cover topics that were raised in this magnificant, panoramic, and brilliantly interesting book: AI, cognitive science, computer science, philosophy, psychology, music, and art are woven together magically.
This is a huge book that is one of the most pleasurable books I have ever read. I didn’t ever want to put this book down and I was extremely sad when I reached the end.
4The Clean Coder: A Code of Conduct for Professional ProgrammersA lot of developers won’t like this programming book, because the advice is sometimes difficult to swallow. But swallow it if you can, because Bob Martin, the author of the book, is a veteran in the industry and has managed to stay relevant decade after decade of pumping out code. I really found this book helpful in shaping my career and making tough decisions.
The Clean Coder had a profound impact on me. It drastically altered how I talk to bosses, product owners, project managers, marketers, salespeople, and other non-programmers.
You may not always agree with the author but it provides good food for thought. It might be not what you expect, but may just be what you need.
3User Stories Applied: For Agile Software DevelopmentAnother great Agile book that helps with a major trouble area: user stories. I’ve worked with some pretty crappy user stories when working on Agile teams, simply because no one knew how to make good ones or what user stories were actually supposed to look like. This book solves that problem.
Every chapter contains a set of questions which are answered in the stories given and the explanation is highly sensible and carefully explained.
3Enterprise Integration Patterns: Designing, Building, and Deploying Messaging SolutionsThis has been one of my favorite books since 2004 when I first read the book. The authors have nicely organized and described several asynchronous design patterns useful in every day enterprise applications, especially those involving multi-system integration.
Don’t let the name of the book fool you, this book is all about message buses and all of the patterns used to implement them correctly. If you are doing any kind of integration between applications or services using a bus, you will absolutely love this book.
It's worth reading and re-reading if you're working with systems integration projects or writing integration software yourself.
3Release It!: Design and Deploy Production-Ready SoftwareThe book is filled with war stories showing where large-scale systems fail, and Michael uses his vast experience to extract some common anti-patterns, problems that occur again and again in naive designs.
The patterns sections alone are worth the price of admission here, and the fact that the book is chock full of even more useful content beyond them is kind of stunning
3The Passionate Programmer: Creating a Remarkable Career in Software DevelopmentI highly recommend reading this book if you want to move beyond programming as just a job.
It's pretty high level, but full of extraordinarily important advice to ensure you find yourself at companies that fit you and that you fit into well.
2About Face: The Essentials of Interaction DesignI've owned a few versions of this book now (this is version four), and it is the rare book which is getting better and better as it is revised, and more authors are added for different perspectives.
A classic of UI design, this is a great bible of GUI design from the inventor of Visual Basic.
2Designing Web UsabillityDesigning Web Usability is of course a full-on web usability primer, so it's a bit different than the GUI-oriented Cooper books.
If you're doing any kind of web design, you need to know the principles in this book. If you're doing non-web design, think of this is an excellent case study in usability engineering.
2A Pattern Language: Towns, Buildings, Construction (Center for Environmental Structure)I bought it because I'm interested in architecture. Then I noticed something: almost everything in the book can be applied to the work we do as software designers.
I bought it because I'm interested in architecture. Then I noticed something: almost everything in the book can be applied to the work we do as software designers.
2The Visual Display of Quantitative Information
2Extreme Programming Explained: Embrace ChangeExtreme Programming Explained (Kent Beck) is a good intro to XP, and even if you don't subscribe to the everything-agile approach, it makes a good read. Probably not a reference tome though.
This programming book is an extremely prescriptive description of how to implement extreme programming, but the ideas in this book can be applied to many different kinds of Agile environments.
2Smalltalk Best Practice PatternsIncredibly practical advice for what constitutes good OO code. It’s done in Smalltalk, but the principles are mostly universal. Probably my favorite nuts’n’bolts of programming design book. Very granular.
2Software Systems Architecture: Working With Stakeholders Using Viewpoints and PerspectivesThis software architecture book is a must read for beginners. This book focuses on many common mistakes people make during beginning of the software architect job. This book can certainly help you do your job more efficiently.
2Refactoring to PatternsThis is a programming book that teaches you—scratch that—shows you how to move existing code into patterns and how to even move it out of patterns. Should be on every architect’s bookshelf.
This book does an excellent job of bringing patterns into coding, rather than relegating them just to design discussions. This includes twenty-seven pattern-directed refactorings with real-world code examples.
2Agile Estimating and PlanningHighly recommended for anyone working in an Agile environment.
his book is my second favorite and surely one of the best agile books. The book provides pragmatic approach to explain Agile Development, bringing the multiple planning approaches at several levels for measuring the software feature implementation, completion and acceptance.
2Zen and the Art of Motorcycle Maintenance: An Inquiry Into ValuesThis book goes a long way towards relating engineering and philosophy.
2Cracking the Coding Interview: 189 Programming Questions and SolutionsThe book is full of great interview advice and real programming problems that will not only help you pass a coding interview, but make you a better programmer overall. If you can master the exercises in this book, it will be very difficult to stump you in a programming interview.
Definitely one of the best programming interview books out there
2Apprenticeship Patterns: Guidance for the Aspiring Software CraftsmanApprenticeship Patterns is the best book on Software Craftsmanship I've read, and I've read quite a few.
2Pragmatic Thinking and Learning: Refactor Your Wetware It contains many ways to help improve learning, working etc., for one by using the Dreyfus learning model.
Learn more about your brain than you ever realized you needed to know.
2The Art of Agile DevelopmentEach article in the book explains a practice or a component of Agile Development. Thus, the book provides practical value to businesses, customers, testers, analysts and developers.
The Art of Agile Development was easily the most influential book on how I like to work. This one is pretty subjective, as I'm pretty sure any good XP book would have had the same effect, but this was the one that did it for me, so I had to include it here.
2Soft Skills: The software developer's life manualThis book covers everything-else-apart-from-coding ranging from career, to personal branding, blogging, learning, teaching, finances, and even fitness and relationships.
You will be a much more satisfied and happier person if you follow the suggestions in this book, not just as a programmer, but as your whole self.
2Succeeding with Agile: Software Development Using ScrumIt provides an insight into Agile Development and compares some of the real ideas with stories, also offers examples of Agile Development which will appeal to a number of readers. Moreover, it provides tips to adopt new improved Agile Development procedures.
This is a classic for anyone transitioning to Agile. I initially read it to get a comprehensive overview of Agile and help our organization determine which strategies would be best suited to our environment.
2Growing Object-Oriented Software, Guided by TestsYou definitely should read it, just to know what's going on, but it won't help you write good tests. Read this one instead, and read it many times.
2Java Concurrency in PracticeThis book is critical. You shouldn’t let even senior developers touch your code base if they haven’t read this book and understood the concepts within. It is old, but it’s still relevant.
This is a very practical book about Java multi-threading, and at the same time, it provides a lot of theoretical knowledge about concurrency in general. I highly recommend you read it at least once.
2Software Estimation: Demystifying the Black Art (Developer Best Practices)This one's an interesting read about software engineering and its most tricky part—estimations. At the least, read it to be aware of the problem and possible solutions.
2Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14This books are totally crucial for any serious C++ developer out there. They cover a lot of useful techniques about improving your C++ skills and understanding the true power that the language offers.
If you understand most of them, your Java/Ruby/Python/Scala coding skills will improve significantly.
2Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (Pragmatic Programmers)I love this book, because it stretches you and makes you a more open-minded programmer. This book helped me to see how similar so many programming languages are, appreciate their differences and see just how fast I could learn.
2Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware ProblemsAll new developers on my team are asked to read this book. This book is a quick and fun read with interesting examples that anyone can understand.
2ReworkThis book is for project leads and managers who want to learn from what has made others successful in writing software. You don't have to agree with everything they have to share in order to come away with new thoughts and ideas.
1A Random Walk down Wall Street: The Time-tested Strategy for Successful InvestingWhat if I told you that you could read one book and know everything you are going to need to know about managing your investments? And I mean, everything. Well, it's true. And this is the book.
1Agile Testing: A Practical Guide for Testers and Agile Teams
1Beautiful Evidence
1Designing Interfaces
1Envisioning Information
1Essential Scrum: A Practical Guide to the Most Popular Agile Process
1Foundations of Security: What Every Programmer Needs to Know
1Growing a BusinessPeople regularly email me and say, "gosh, I love your theory about starting a company the Ben and Jerry's way, but, how do I get started?" This is the book you want to read.
1Helplessness: On Depression, Development, and DeathWhat does this have to do with a book on depression? Well, it turns out that people literally become clinically depressed when they feel like they can't control their lives and their environment.
1How to Win Friends and Influence PeopleYour success relies on other people’s cooperation, collaboration, and ideas more than ever before. How to Win Friends and Influence People will help you navigate these personal waters better than any other resource I know of.
1Influence: The Psychology of PersuasionCialdini's excellent book discusses the psychological theories behind the science and practice of influencing the behavior of other people. Read it before they do!
1Leading Lean Software Development: Results Are not the Point
1MicroserfsNothing quite captures the feeling of being a young programmer at a big software company as well as Microserfs.
1Object Design: Roles, Responsibilities, and Collaborations
1Regular Expressions CookbookOnce you delve into the world of regular expressions, you may become drunk with the amazing power and potential they have, which results in things like Perl. Remember, absolute power corrupts absolutely. But it also rocks absolutely.
1The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the SanityThere's nothing magical here; as always, it boils down to knowing who your users are and what they really do – and the personas technique is a great way to get there.
1The Lean Startup: How Today's Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses
1The Non-Designer's Design BookThis excellent, thin book will give you a grasp of the principles behind page layout, fonts, etc. The good news is, you can read it in the bath before the water gets cold, and the next day, your dialog boxes and powerpoints and web pages will start looking better.
1User Interface Design for ProgrammersThe most common reaction I've heard from readers is "after reading your book, I found three things I just HAVE to change in my program."
1Visual Explanations: Images and Quantities, Evidence and Narrative
1Troubled IT Projects : Prevention and Turnaround...probably one you've not come across before, but actually explains a number of things that can go wrong in managing a project.
1Collaboration Explained: Facilitation Skills for Software Project LeadersIf you hate meetings and/or believe they should improve, you must read this book - whether you are involved in an agile project or not!
1Agile Software Development: The Cooperative GamePossibly the most interesting book I've ever read about agile software development.
1The Wisdom of Teams: Creating the High-Performance OrganizationBy the end of the book you will discover that "Nothing can guarantee the creation of high performance teams. The best you can do is put in place the conditions that will help them form."
1Inside the Machine: An Illustrated Introduction to Microprocessors and Computer Architecturenowing how instruction fusion helps improve reorder buffer efficiency is great for water cooler discussions - but knowing how memory hierarchy and cache behavior impacts performance on modern CPUs might just help you optimize yourself out of a tight corner.
1The Algorithm Design Manual
1Hot Text: Web Writing that Works
1Notes on the Synthesis of Form
1The Process of Creating Life: Nature of Order
1The Innovator's Dilemma: The Revolutionary Book That Will Change the Way You Do Business
1Are Your Lights On?: How to Figure Out What the Problem Really IsThis isn’t technically a programming book, but it deals with the biggest problem facing developers none the less. Nothing has increased my programming productivity more than being able to restate hard problems as simple ones.
1The Elements of Style
1On Writing Well: The Classic Guide to Writing Nonfiction
1Thinking in JavaI don’t think I’ve ever encountered a better book on learning a programming language than this book. Even if you have no interest in Java, I recommend reading it.
1Testing Computer SoftwareAfter reading this book, I was able to communicate with QA better, write more testable code and avoid defects by learning how to test my own code before throwing it over the wall.
1Ship it! A Practical Guide to Successful Software ProjectsIt’s a great book to read and then to give to your manager to highlight the value of some best practices like: continuous integration, automated testing, scaled back planning, etc.
1How to Win Friends & Influence PeopleAs a software developer, you will deal with people during your entire career. If you learn how to deal with them effectively, you’ll have a much better go of it. So, I highly recommend reading this book. This book changed my life and set me on the path I am on now.
1The War of Art: Break Through the Blocks and Win Your Inner Creative BattlesThis book is the reason why I can sit down and spend 4 hours writing this blog post. It’s an excellent book that will inspire you to be your best, and finally beat procrastination.
1Agile!: The Good, the Hype and the UglyIn the field of applied Agile, this is by a wide margin the most insightful, thought-provoking, well-written book.
1Build an Awesome PC, 2014 Edition: Easy Steps to Construct the Machine You NeedFor those who actively (or secretly) hanker to build their own systems, this book is definitely the right guide — a great help, and a lot of fun.
1The CERT C Coding Standard, Second Edition: 98 Rules for Developing Safe, Reliable, and Secure SystemsFew developers, especially in regulated industries, would disagree that programmers need to learn to code automatically using secure techniques and hardened functions — most especially in C. This volume, which at 512 pages provides all the necessary detail, is bound to get them across the river Jordan to that happy, secure place. Definitely recommended.
1When Computing Got Personal: A history of the desktop computerFor readers who were programming in that era or who, like me, caught the tail end of it, there will be the rediscovery of lived history with the unique clarity that research can bring to memories made less sharp by time. The book will also fill in history and context that might not have been obvious.
1Penetration Testing: A Hands-On Introduction to HackingThe book is clear, easy-to-read, and filled with numerous illustrations. Many processes are explained via step-by-step directions. While it might breed a new generation of script kiddies, it's likely to also breed software developers who give such attackers much less to exploit.
1Pattern Hatching: Design Patterns AppliedChapter 2 of this book is a must read where John develops a file system application. This book talks in great detail about which patterns suit best the needs of the application and which do not.
1Beyond Software Architecture: Creating and Sustaining Winning SolutionsThis book delivers on its promise to discuss the larger business realities of creating software products. If you're a software architect, or dream of being one, this is a must read book.
Ultimate Reading List
Main menu