Books are a great source of knowledge and wisdom. But unfortunately, there are very few people reading books today. A programmer reading books is an even rarer occurrence, most often relying on the internet search results to find answers.
Technology is moving forward at a pace faster than anytime in the history of mankind. There are new programming languages and tools every few months, aspiring to be the silver bullet for all shortcoming of existing languages, tools and methodologies.
The truth is that many a great minds of the yester years have already encountered the very same problems and have figured out the best ways to solve them. The tactics to approach and solve the problems have been captured in some wonderful books.
Here's a select subset of these great books that developer in the industry should read.
The Pragmatic Programmer
A gem of a book! This is not your regular programming book with code, code and more code. In fact this is not about any particular programming language at all: the wisdom in this book applies to all programming languages.
The insights in this book span across a number of interesting areas such as "tracer bullets," a variety of exploratory programming, writing code that writes code, separating views from models, expensive tools do not produce better designs, developing a great team, managing expectations, avoiding duplicate knowledge etc.
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.
Also included is a pamphlet that summarizes the tips and checklists.
The Mythical Man-month: Essays on Software Engineering
Ever heard these before. It all came from this book!
"All programmers are optimists: All will go well."
"Adding manpower to a late software project makes it later."
"Bearing of a child takes nine months, no matter how many women are assigned."
"An omelette, promised in two minutes, when not ready in two minutes, the customer has two choices - wait or eat it half-cooked. Software customers also have the same choices."
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.
As the title says, it is a collection of essays. A damn good one at that. The only downside of the book is the references to 25-year-old technologies. But that takes nothing away from the meat of the book.
Clean Code: A Handbook of Agile Software Craftsmanship
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.
The book describes the principles, patterns, and practices of writing clean code. Several case studies of cleaning up code are valuable lessons to any developer.
Note that all examples in this book are in Java, although the learnings can be applied to any programming language.
Among the books listed in this post, this is a fairly new entrant and may resonate more with the younger developers.
The Clean Coder: A Code of Conduct for Professional Programmers
The book explores topics that programmers often ignore.
- What does being professional programmer mean?
- How to carry yourself as a true software craftsman
- Dealing with conflict and tight schedules
- How to manage your time? How can you expand your skills?
- When to say “No”
- Avoiding burnout
- ..and more.
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.
Refactoring: Improving the Design of Existing Code
The book starts with general principles of refactoring: why and when to refactor, how to approach management about refactoring etc. The book then takes you through a tour of how make the improvements happen.
- What are the indicator of bad smells in the code?
- How to structure classes, methods and other logical pieces?
- Unit tests for your code
- How to move features from one object to another?
- Refactoring tools
- ..and more
A must read book on anyone on how to improve your existing code. Note that all code examples are in Java, but it shouldn't prevent you from grabbing a copy today!
Working Effectively With Legacy Code
How to modify legacy code? How to identify parts of the code to refactor? How to break dependencies between code you want to refactor? How to make sure the new code is doing what is expected? How do you take small steps at a time to refactor legacy code?
They are just some of the key questions answered in this brilliant book. 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."
Legacy code is not a myth, it is a living legend! Nothing in the software industry has survived the test of times better than Legacy code - Deepak Karanth
Code Complete: A Practical Handbook of Software Construction
A mammoth piece of work, a must read for anyone who wants to read all about programming constructs and best practices. Truly an encyclopaedic book - 960 pages in its most recent revision! Don't let the length of the book deter you, you can consume it at your own pace. In the end, you will be thankful you read the book.
Every aspect of software development is explained in the book. Practical advice on everything ranging from code structure, code formatting, variable. method and class naming, all the way up to managing a team.
A wealth of references and additional materials covering specific topics in are provided and they are worth a read as well.
Only a small percentage of software developers would have read this book, so you surely have an advantage if you read this one. You can gain many a years worth of experience just by reading this book.
Head First Design Patterns
The most non-technical looking book on programming! Each page contains doodles, pictures and other eye-catching stuff. That might give the impression that it is a light read, but that fact is that it is discussing quite a core topic about programming - Design patterns - and does a great job in covering the subject.
The book does not try to cover all the patterns that exist in the world, rather it covers every pattern that you might need to solve real world problems. 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.
The latest edition of the book now includes updates for Java 8 - mainly the Lambda.
Peopleware: Productive Projects and Teams
A stunning piece of work. This is not a book about programming. This is a book about managing and motivating programmers. It should be read by developers too. Many a times, developers, especially inexperienced ones don't understand the thought process of management.
Software development is a creative process. But most managers treat it as assembly line process. Developers are seen as interchangeable cogs in the machine. Managers generally see giving tight deadlines as the only way to increase motivation. They do not take interest in the work developers do and sadly, not try to understand the developers or their craft.
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.
Soft Skills: The Software Developer's Life Manual
A great book on managing "other" aspects of developers life. It's about everything there could be in your life - It’s about your career, life, body, mind, and believe it or not - soul as well.
The author himself has followed these techniques and is quite successful at that. His website says that he was able to quit his day job in his early 30's. The author has culminated his life's experiences in neatly divided short chapters on Career, Marketing yourself, Learning, Productivity, Finances, Fitness and Spirit. Each chapter is short enough to be read on a coffee break, that makes it a fairly light read.
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.