1. Clean Code
One of the best book to learn the principles of object-oriented programming e.g. SOLID principles. This is the book which taught me how to write professional code i.e. code which can be read and maintained by a fellow programmer. One of the must-read books for coders of all level. If you haven't read it yet, this should be the first book you read in 2018.
2. Code Complete
Another classic book on coding by Steve McConnell. This book is similar to above book but it's mainly for C and C++ developer while Clean Code is for Java developer. There was a time when startups give this book on every new hire and that was probably the best thing I have seen in my career while working for startups.
3. Pragmatic Programmer
There is a saying that if you learn from your own experience then you can only learn a few things and you have to pay a higher cost but if you learn from other's mistakes you can learn a lot without paying a heavy price. This book will teach you what it takes to become a professional programmer, basically, it will turn you from amateur coder to professional developer.
4. Refactoring: Improving the Design of Existing Code
Another classic book on improving your coding skill. Refactoring is probably the single most important practice of improving the code quality of the existing project and Martin Fowler has given so many good techniques to make your existing code better without breaking it. Even though most of the practices are already adopted by major IDEs like Eclipse and IntelliJ IDEA, it's still a great book to learn Refactoring.
5. Working Effectively with Legacy Code
Every programmer has to work with legacy code at some point in their career and that would probably be the most difficult time as well. The legacy code is those which are running in production but you don't know much about them. There is no documentation and over-engineered code makes it hard to change the system. They have dependency all around and whenever you add a new feature or tweak a setting it breaks in production. This book gives you practical tips to deal with such code and find your way around.
6. The Art of Readable Code
This is a great book to learn simple and practical techniques for writing better code. Some of you might ask me what is the better code mean here?
Well, a better code is something which is easy to change and understand i.e. its much more readable than some cryptic code which does the same job.
Remember, you don't just write code for the compiler you write it for a fellow programmer or teammate which has to maintain it, hence readability is utmost important.
7. Code Simplicity
One of the popular principles of software development is KISS, yup Keep it Simple Stupid. Why? because something which is simple is easier to understand and change and there is only one constant in the software development, change.
A code which is not simple is hard to understand and change and much more error-prone.
This book teaches you practical techniques to keep your code simple.
8. Beautiful Code
Another great book on coding style and process. This books explains what goes on programmer's mind while writing code and gives you some tips and tricks to keep your mind in right shape while writing code e.g. Don't write code at 3 AM in the morning, Don't write code on Saturday or Christmas week. These are the code you end up fixing whole year.
9. Test Driven
The journey of good code starts with unit testing, which is also a primary trait of a good programmer. A code with unit tests is much better than the code without it because you can always refactor and change the code with confidence. Those unit test will ensure that existing functionality doesn't break, but unit testing is hard. Just knowing JUnit is not enough, this is where Test Driven help. It teaches you practical techniques of unit testing your code.
10. Dreaming in Code
The full title of this book is "Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software". The title itself says about this book. If you want to learn from other coders experience than this is the book to read.
That's all about some of the best book covers of all levels should read. These books will not only help you to improve your coding skill but also help you to develop that coding sense which tells you something is wrong when you are writing code. Books are good but if you need more help I suggest you check out the Clean Code: Writing Code for Humans course by Cory House from Pluralsight. It's free for 10-days as Pluarlsight offer 10-day free trial and effectively compliments whatever you learn from reading this book. Btw, the most important advice to improve coding is to code, just code every day.