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 Java programmer, you will definitely find the top 5 worth reading.
They 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.
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.
One 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.
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 Java programmer, you will definitely find the top 5 worth reading.
6 Books to become Expert in Programming and Coding
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.They 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.
One 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.
Uncle Bob Martin doesn't need any introduction, he has authored a series of agile software development books, some of them from myself are
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.
It 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.
This is a must-read book for any Programmer. Though examples are given in Java, which makes it, even more, valuable for Java programmers, it is also equally useful for other programmers like C, C++, Python, JavaScript, or any other OO practitioner.
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.
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.
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, e.g. 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.
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.
And now, here is the Infographic, I am talking about.
Source: www.perceptionsystem.com
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. If you already know coding then also you can read a couple of books in this list to improve your coding and programming skill as well.
Other Programming Articles You May Like to Explore
P. S. - Make books your friend, listen to the podcast, watch clean code talks and most importantly write code and refactor it until you can say it's clean. If you are hungry to become a better developer, make sure to read my 10 tips to become an expert Programmer.
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.
It 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.
This is a must-read book for any Programmer. Though examples are given in Java, which makes it, even more, valuable for Java programmers, it is also equally useful for other programmers like C, C++, Python, JavaScript, or any other OO practitioner.
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.
5. Leading Lean Software Developer
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, e.g. 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.
And now, here is the Infographic, I am talking about.
Source: www.perceptionsystem.com
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. If you already know coding then also you can read a couple of books in this list to improve your coding and programming skill as well.
Other Programming Articles You May Like to Explore
- 10 Things Java and Web Developer Should Learn
- 21 Books Java Developer Can Read
- 10 Testing Tools Java Developers Should Know
- 10 Advanced Core Java Courses for Programmers
- 5 Frameworks Java Developers Should Learn
- Top 5 Courses to become full-stack Java developer
- 10 Reasons to Learn Python Programming language
- Top 10 Courses to learn Java for Beginners
- Top 10 Algorithm Books Every Programmer Should Read
- 20 libraries every Java developer should learn
- 10 Tools Java Developers uses in their day-to-day work
- 7 Best Courses to learn Design Patterns in Java
- 10 Books Every Java Programmer Should Read
- 10 Free Courses to learn Data Structure and Algorithms in Depth
- Top 10 Programming Language to start Learning to Code
P. S. - Make books your friend, listen to the podcast, watch clean code talks and most importantly write code and refactor it until you can say it's clean. If you are hungry to become a better developer, make sure to read my 10 tips to become an expert Programmer.
Nice collection dude...
ReplyDeletewhat podcasts do you recommend ?
ReplyDeleteany links to clean code talks ?
@Anonymous, Clean code talks from TheGoogleTechTalks is very good resource. I personally like this, Conditionals and Polymorphism talks a lot. You will enjoy this if you have not seen it already https://www.youtube.com/watch?v=4F72VULWFvc
ReplyDeleteThank you very much for writing this post....I'm really tempted to begin learning how to program...but is frustrating because I haven't really seen any attempt from a professional programmer with much experience in the industry to write a guide that gets you from knowing nothing to an intermediate level programmer, taking the Tim Ferriss approach on shortening learning time...I know that to become an advanced world class programmer you would need 10-15 years of experience but to go from zero to intermediate while focusing on good programing habits I still think it's doable in 3-6 months...but to do this you need real experts that know HOW and WHAT to teach to a novice to shorten the learning curve, while not forgetting about the good programing habits.From my short research it's clear that if you want to become a great programmer you need to understand the underlying concepts of how code works..but sadly many people that seem to interview for coding projects have many many gaps because they're so focused on syntax and don't understand the concepts,principles and can't map in their minds how everything works together and how to solve problems.Any recommendations from you and your readers would be awesome! thank you in advance! Sorry for my English it's not my native language.
ReplyDeleteList is incomplete, unless Effective Java is added :)
ReplyDeleteI missed "The Art of UNIX Programming" in this list...
ReplyDeleteWhat role should the software developer play in making software perform to expectations?
ReplyDeleteHow much treatment does this get in these books? Seems like very little.
@Prakash Dubey, Yes, I also missed Effective Java in this list, one of the best book I have ever read. must for any Java programmer who is serious aobut his skills.
ReplyDeleteGood Collection of books . The pragmatic programmer could be another good book to be added in the list.
ReplyDeleteIn a transparent bid of self-promotion, I'm going to tout my own book, Think Like a Programmer. (https://www.nostarch.com/thinklikeaprogrammer). In all seriousness, if someone is already at the point where a book about design patterns can be fully digested, they probably don't need my book, but for people trying to learn to program who are stuck at the stage where they know the syntax but don't feel like they "get" programming, my book can help. Or check out the videos (https://www.youtube.com/user/vantonspraul).
ReplyDeleteNice list, couple of books I would like to add in this list
ReplyDelete- working with legacy code, must read for any programmer
- writing secure code from Microsoft press, security is most important if you are in real business.
Here is one more list of 10 free Java Programming books, worth looking too. Cheers ...
ReplyDeleteIf you seriously want to become a better programmer , you must improve your data structure and algorithm skill. You can read these books to learn Algorithms. You should be good at algorithm and data structure to write good code. Once you done, that you can look at these books to improve coding skill .
ReplyDeleteyaar! seedha seedha hai......just do it! and things will happen automatically...mind set is very important.
ReplyDelete