**14 Habits of Highly Productive Developers** Zeno Rocha
You can learn the most popular frameworks, use the best programming languages, and work at the biggest tech companies, but if you cultivate bad habits, it will be hard for you to become a top developer.
This book doesn't offer a straight path or pre-defined formula of success. This book is a result of a quest. A quest to uncover what habits can be cultivated to become a better software engineer.
Each chapter has a Q&A with advice from highly efficient software engineers like of Addy Osmani of Google, senior engineers at Amazon, Microsoft, Shopify, GitHub and other companies with good engineering cultures.
A great book to share especially with your junior- to mid-level team mates.
Clean Code: A Handbook of Agile Software Craftsmanship Robert C. Martin aka 'Uncle Bob'
Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn’t have to be that way. Noted software expert Robert C. Martin presents a revolutionary paradigm with Clean Code. Martin has teamed up with his colleagues from Object Mentor to distill their best agile practice of cleaning code “on the fly” into a book that will instill within you the values of a software craftsman and make you a better programmer—but only if you work at it.
What kind of work will you be doing? You’ll be reading code—lots of code. And you will be challenged to think about what’s right about that code, and what’s wrong with it. More importantly, you will be challenged to reassess your professional values and your commitment to your craft.
An absolute classic that should be in every engineer's library.
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems Martin Kleppmann
Data is at the center of many challenges in system design today. Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability. In addition, we have an overwhelming variety of tools, including relational databases, NoSQL datastores, stream or batch processors, and message brokers. What are the right choices for your application? How do you make sense of all these buzzwords?
In this practical and comprehensive guide, author Martin Kleppmann helps you navigate this diverse landscape by examining the pros and cons of various technologies for processing and storing data. Software keeps changing, but the fundamental principles remain the same. With this book, software engineers and architects will learn how to apply those ideas in practice, and how to make full use of data in modern applications.
Refactoring: Improving the Design of Existing Code Martin Fowler
A modern classic. Must read for every software engineer.
Like the original, this edition explains what refactoring is; why you should refactor; how to recognize code that needs refactoring; and how to actually do it successfully, no matter what language you use.
„Whenever you read Refactoring, it’s time to read it again. And if you haven’t read it yet, please do before writing another line of code.” — David Heinemeier Hansson, Creator of Ruby on Rails, Founder & CTO at Basecamp
Great book for younger engineers. If you consider yourself a senior engineer, feel free to skip this book as many of the patterns will feel rather obvious to you.