Should I read books as a software developer ?
This is the question I hear a lot. My strong opinion is that this should be a must. Even though developer can learn a lot from different kind of tutorials or examples, nothing can replace a good book. You can read about different hot tools/frameworks, but they could easily disappear in a year or so. A book, and especially a good one, will give you good overview in a certain field, and guide you in authors angle from start to end of a subject. This will help you develop strongly as a software engineer. If book include examples, as it is very often, then you have it all in one place.
I tend to read about 20-30 books per year (when possible), and here I talk only about tech books. In the one of the following posts I will talk more about some best practices how to read a book.
Here I will wrote some of the great books from different areas, which every developer should read.
Fundaments
- Code Complete: A Practical Handbook of Software Construction, Second Edition.
- Clean Code: A Handbook of Agile Software Craftsmanship.
- Structure and Interpretation of Computer Programs.
- Design Patterns: Elements of Reusable Object-Oriented Software.
- Head First Design Patterns.
- Refactoring: Improving the Design of Existing Code.
- Working Effectively With Legacy Code.
- The Art of Computer Programming, Volume 1: Fundamental Algorithms.
Professional development
- The Pragmatic Programmer: From Journeyman to Master.
- The Clean Coder: A Code of Conduct for Professional Programmers.
- The Passionate Programmer: Creating a Remarkable Career in Software Development.
- The Mythical Man Month.
Cloud
- Designing Distributed Systems.
- Azure for Architects.
- Building Cloud Apps with Microsoft Azure.
- Amazon Web Services in Action.
Architecture
- Domain-Driven Design: Tackling Complexity in the Heart of Software.
- Patterns of Enterprise Application Architecture.
- Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions.
- Refactoring to Patterns.
- Software Architecture in Practice.
- Building Evolutionary Architectures: Support Constant Change.
- 97 Things Every Software Architect Should Know: Collective Wisdom from the Experts.
- Building Microservices.
- Microsoft .NET - Architecting Applications for the Enterprise (2nd Edition).
- Microservices in .NET Core.
- .NET Microservices: Architecture for Containerized .NET Applications.
- Software Architecture for Developers.
Agile
- Agile Software Development, Principles, Patterns and Practices.
- Agile Estimating and Planning.
- User Stories Applied: For Agile Software Development.
- Extreme Programming Explained.
- Software Estimation: Demystifying the Black Art.
- Management 3.0: Leading Agile Developers, Developing Agile Leaders.
- The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win.
- Agile Principles, Patterns, and Practices in C#.
Alghoritms
- Programming Pearls.
- Cracking the Coding Interview: 150 Programming Questions and Solutions.
- Introduction to Algorithms.
- Alghoritms.
Programming languages
- JavaScript the Good Parts.
- Thinking in Java.
- Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14.
- Effective Java.
- C# In Depth.
- Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (Pragmatic Programmers).
- Core Java Volume I.
- Core Java Volume II.
- Mastering C# and .NET Framework.
- CLR via C#.
- Essential C# 6.0 (5th Edition).
- Code-First Development with Entity Framework.
- Modern Compiler Design.
- Eloquent JavaScript: A Modern Introduction to Programming.
- Learning JavaScript Design Patterns.
OOA/D
- Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development.
- UML Distilled: A Brief Guide to the Standard Object Modeling Language.
- Object-Oriented Analysis and Design with Applications.
Testing
- The Art of Unit Testing.
- Testing Computer Software.
- Ship it! A Practical Guide to Successful Software Projects.
- Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation.
- Agile Testing: A Practical Guide for Testers and Agile Teams.
- Growing Object-Oriented Software, Guided by Tests.
- The RSpec Book.
- xUnit Test Patterns: Refactoring Test Code.
- Test Driven Development: By Example.
- Testing Angular Applications.
Machine learning
- Pattern Recognition and Machine Learning.
- The Elements of Statistical Learning.
- Understanding Machine Learning: From Theory to Algorithms.
- Deep Learning.
- Foundations of Data Science.
Databases
- Refactoring Databases: Evolutionary Database Design.
- Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement.
- NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence.
- Fundamentals of Database Systems.
Other
- REST in Practice.
- Soft Skills: The Software Developer’s Life Manual.
- How to Win Friends and Influence People.
- Code: The Hidden Language of Computer Hardware and Software.
- Gödel, Escher, Bach: An Eternal Golden Braid.
- The War of Art.
- Stakeholder Theory: The State of the Art.
- The Lean Startup.
- Trillion Dollar Coach: The Leadership Playbook of Silicon Valley’s Bill Campbell.
- The Leprechauns of Software Engineering.
- Strive: How Doing The Things Most Uncomfortable Leads to Success.
- How to Build a Billion Dollar App.
- Impact Mapping.
- The Product Book: How to Become a Great Product Manager.
- It Doesn’t Have to Be Crazy at Work.
- Managing the Unmanageable: Rules, Tools, and Insights for Managing Software People and Teams.
- Peopleware: Productive Projects and Teams.
- Modern Web Development: Understanding domains, technologies, and user experience.
- Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries.
- Machines, Code, People: 50 things Zühlke engineers are passionate about.
If you know any other book not in this list, and want to contribute, do not hesitate to contact me.