Coding is an integral part of Programming, and we all somehow learned to code by following examples here and there. Yes, I am talking about both self-taught programmer and Computer Science Graduates.
You can learn Coding easily if you are dedicated, but what is more difficult is to write good code. You can easily find programmers in Java, C++, Ruby, or Python, but finding programmers, who are also a good coder is very difficult. Some universities have a good curriculum and practical classes to teach coding better than others, but most of these great coders are self-taught Programmers, who learned by reading books, joining online courses, and doing things on their own.
The point is self-learning is VERY important in the field of Programming and Coding, you just cannot rely on your college and university to make you an expert programmer, you have to make that extra effort to distinguish yourself from the group and what could be better than by learning coding and wisdom of programming from those who have gone through the same path?
Uncle Bob is a big advocate of clean code and object-oriented design, and as much I have learned about coding and programming from his series of books, I have not learned anywhere. Martin Fowler is another great name in software design, development, and testing, and his book on Refactoring is a must-read for any serious programmer.
Recently I come across an infographic about 10 Books That Make You Expert in Programming. Though I don’t agree with all the books they have there, I definitely agree with the top 6 and the last book, which is an all-time classic on design patterns.
I thought to share that with you guys, If you are more inclined to web programming, you will also find the rest of the books more valuable, but If you are a server-side or full-stack Java programmer, you will definitely find the top 5 worth reading.
One more thing which helped me a lot while writing better code is knowledge of SOLID design principles, they are a small set of guidelines which if followed result in better cohesion and loose coupling.
If you are not familiar with them, I suggest you go through the SOLID Principles of Object-Oriented Design and Architecture course on Udemy to learn them. They are completely worthy of your time and money.
Here is the list of books that will make you an expert in coding and programming. If you follow and practical advice given in these books, you will surely learn a lot about the craft of coding and programming.
These are not the book that tells you how to write a for loop or how to check for a condition on if block because that can be learned from any book. They will teach you how to use these tools to solve a real-world problem.
1. Refactoring, Improving the design of existing code
This book is written in Java as it’s the principal language, but the concept and idea are applicable to any Object-oriented language, like C++ or C#. This book will teach you how to convert a mediocre code into a great code that can stand production load and real-world software development nightmare, the CHANGE.
The great part is that Martin literally walks you the steps by taking a code you often see and then step by step converting into more flexible, more usable code. You will learn the true definition of clean code by going through his examples.
Refactoring is also an attribute of experienced Programmers, as your job area now includes improving code but also your fellow developer’s code.
2. Clean Code
This is my favorite book, and time and again, I have recommended it to my fellow programmers, readers, colleagues, and students. If you ask me what the best book on coding, software development, and programming in general is, THIS is it.
Uncle Bob Martin doesn’t need any introduction, he has authored a series of agile software development books, some of them from myself are
- Clean Code,
- Clean Coder,
- Agile Software Development: Principles, Patterns, and Practices,
- UML for Java Programmers
- Clean Architecture,
- And, Extreme Programming in Practice.
Though most of his books are a decade old, they are still valuable, and I am sure they will remain for another 20 years or at least till the object-oriented programming is in business. Clean code not only teaches you WHAT TO DO but also WHAT NOT TO DO.
Clean Code book has chapters of code smell, which is a great collection of common mistakes made by all kinds of programmers. It also has chapters on how you correct them like how to convert a long switch statement into a much better model based upon the open-close design principle and leveraging the power of Inheritance and Polymorphism.
It also has chapters on explaining about SOLID Principles of Object-Oriented Design, which are key to writing Clean Code. In fact, I first heard about them in this book, and ever since they have helped me a lot in writing better code.
3. Code Complete
This is I guess most read a book on coding practices. At 10000 ft, It looked to me as the counterpart of the Clean Code for C++ developers. Though I have gone through this book even before reading Clean Code. Long back one of my friends told me that In his small company, every new developer who joins the firm receives a brand new copy of Code Complete.
That was an awesome practice on the part of that small company, but later I come to know that even Microsoft distributes copies of this books to their employee, I don’t know how much truth in this, but the book certainly makes me believe it.
It’s a must-read for any programmer, but even more, MUST read for a C, C++ programmer. Just like I recommend Java developer to read Clean Code first before reading Code Complete, I also recommend C++ developer to read this book before touching Clean Code.
Though they both have a lot of overlap in terms of best practices and common mistakes to avoid, both are worth trying. In the end, you will find one of the books close to your heart than others.
Given my Java background and writing style of Uncle Bob, I find it reading Clean Code more often than Code Complete. As the infographic says, “Code complete helps the developer to write better software with the highest quality code.”
Btw, if you are passionate about writing Clean Code, you can also check out the Clean Code: Writing Code for Humans By Cory House on Pluralsight. It’s a rare online course which not only talks about writing Clean Code but also walks through the example.
4. The Art of Unit Testing
If there is one thing I would like to improve on projects, as well as programmers, are their ability to unit test. After so many years or recognition that Unit testing is must have practiced for a professional developer, you will hardly find developers who are a good verse of Unit testing and follows TDD.
Though I am not hard on following TDD, at a bare minimum, you must write the Unit test for the code you wrote and also for the code you maintain. Projects are also not different, apart from open source projects, many commercial in-house enterprise projects suffer from the lack of Unit test.
If you are a project manager, team lead, or tech lead, create a proper software development process that includes Code Review, Unit testing, JIRA, Coding standards, SVN Commit policy, and deployment practices. It’s your job not only to create those process but also make sure that developers not just follow but also learns from that.
Even if you invest a small amount in helping the developer to learn and adopt this practice, you will gain big time on code quality, bug fixing, maintenance, and training. A project with unit tests is much easier to maintain and change.
Developers also find learning a new code-base with unit tests easier than those monolithic pieces of code which require Database, MQ, and Enterprise Server setup. The art of Unit testing addresses this concern.
This book tells you the difference between a failed project and a successful one, and the difference between a maintainable code base and a code-base when you are testing database and other technologies.
This book has examples in the.NET but not difficult for any programmer. By the way, for Java developers, I have also shared a couple of good JUnit books and a couple of free courses to learn JUnit, the most important tool for writing unit tests in Java.
And, if you just want to do one thing, start with Learn Java Unit Testing with Junit & Mockito in the 30 Steps Course on Udemy. It’s a great course to learn unit testing in Java.
5. Implementing Lean Software Development: From Concept to Cash
This book tells you how to drive high-value change throughout a software organization, and make it stick. It shows you how to make lean work in real projects, environments, and companies. Tom and Mary Poppendieck (poppendieck.com) teaches and consults worldwide on Lean principles for software.
Her approach identifies a real business value and enables product teams to realize that value and her new book “Leading Lean Software Development” is written for all kinds of leaders, like Project leaders, Program Managers, C-level management, and others.
I come to know about this book a little late, but it’s a great addition to your book self, particularly more if you are aspiring to become a technical leader or doing that job already.
6. Design Patterns, Elements of Reusable Object-Oriented Software
If not read already, I am sure you must have heard about this book. This is the classic GOF (Gang of Four) design pattern books. We should be thankful to Gang of Four; Eric Gamma, Richard Helm, Ralph Johnson, and John Vlissides for their excellent word of creating, consolidating, and bring it to mainstream software development.
This book has a catalog of simple and succinct solutions to commonly occurring design problems. It contains 23 Object-Oriented design patterns to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.
You can further enhance your learning by joining the Design Pattern Library course on Pluralsight which will not only teach these 23+ patterns but also other important Software Design Patterns which are key for building long-lived, well factor software that can withstand the test of time.
Btw, you would need a Pluralsight membership to access this course, which costs around $29 per month or $299 per year. This may seem a bit expensive at first but this was the best investment I have made last year.
It gives you access to more than 5000+ online courses on Pluralsight on the latest technology which is key for upgrading your skill as a Professional Programmer. Even if you don’t have a membership, you can still access this course for free by taking their 10-day FREE Pass which allows 200 minutes to watch time for any of their course.
That’s all on this list of top six books to learn coding and programming. I know reading and learning something is hard, but this is the challenge you take when you become a programmer. This is the field where the ability to learn and adapt makes the difference between a good and great developer.