There are a few books out there that have stood the test of time in the software development world. They helped shape our industry years ago, and they continue to remain true to this day. They are well worth the time.
1. "Clean Code" By Robert C. “Uncle Bob” Martin
This book profoundly changed how I approach coding. If Professionalism is your aim then “Clean Code” should be a must-read. After reading this book you’ll understand:
- How to tell the difference between good and bad code
- How to write good code and how to transform bad code into good code
- How to create good names, good functions, good objects, and good classes
- How to format code for maximum readability
- How to implement complete error handling without obscuring code logic
- How to unit test and practice test-driven development
Overall this is a great book that I recommend to programmers at all levels. You will learn something new (even though it’s an “older” book).
2. "Clean Architecture" By Robert C. “Uncle Bob” Martin
The already standard SOLID principles had been with us for decades, serving software discipline with full success. Uncle Bob presents the universal rules of software architecture that will help dramatically improve developer productivity throughout the life of any software system. After reading this book you’ll:
- Learn what software architects need to achieve–and core disciplines and practices for achieving it
- Master essential software design principles for addressing function, component separation, and data management
- See how programming paradigms impose discipline by restricting what developers can do
- Understand what’s critically important and what’s merely a “detail”
- Implement optimal, high-level structures for web, database, thick-client, console, and embedded applications
- Define appropriate boundaries and layers, and organize components and services
- See why designs and architectures go wrong, and how to prevent (or fix) these failures
This book has important concepts developers should know. It can be written in 100 pages without the fluff. This book is full of fluff and repetition.
3. "Effective Java" By Joshua Bloch
When it comes to Java best practices, nobody quite succeeds as eloquently as Joshua Bloch.
After reading this book you’ll learn the best practices of:
- Creating and Destroying Objects
- Methods Common to All Objects (equals, hashcode, toString, clone, compareTo)
- Designing and Implementing Classes and Interfaces
- Enums and Annotations
- Lambda and Streams
- Implementing Methods
- General Programming
- Dealing with Exceptions
- Working with Concurrency
This book is not for beginners, it’s for who already known java to a good extent. Book is nice and provided in-depth concepts for middle/senior level programmers but will not work who want to start/learn the first time with straight forward descriptions with simple explanations and examples.
4. "Refactoring Improving The Design of Existing Code" By Martin Fowler
Refactoring is a systematic process of improving code without creating new functionality that can transform the mess into clean code and simple design. The main purpose of refactoring is to fight technical debt. It transforms a mess into a clean code and simple design. After reading this book you’ll:
- Understand the process and general principles of refactoring
- Quickly apply useful refactorings to make a program easier to comprehend and change
- Recognize “bad smells” in code that signal opportunities to refactor
- Explore the refactorings, each with explanations, motivation, mechanics, and simple examples
- Build solid tests for your refactorings
- Recognize tradeoffs and obstacles to refactoring
Good book, great topics. The material in this book is crucial to building an efficient, clean, readable, testable code.
5. "Head-First Design Patterns" By Eric Freeman
If the Gang of Four book is “too academic”, this book might be for you. It walks you through most of the GoF patterns in a Mentor/Apprentice in “real world” applications (not really, but the apps are quite simple and to-the-point).
Not only does it walk you through examples of when you would use this pattern, it compares and contrasts them to each other in quite ingenious ways. Also, it has exercises that let you utilize different areas of your brain to help you learn, utilizing the different ways people learn (e.g. visual, mechanical, etc.).
Even if you aren’t a big reader (which you should be), they will serve as reminders to their enclosed principles — and sometimes, a reminder is all you need to stay on track.
Thank you for reading, see you the next time!