Coding is an integral part of programming and we all somehow learn coding by following examples here and there. 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 good coder is very difficult. Some universities has good curriculum and practical classes to teach coding better than others, but most of these great codes are self-taught. Point is self learning is VERY important in 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. What could be best by learning coding and wisdom of programming form those who have gone through the same path. Uncle Bob is big advocate of clean coding and object oriented design, and as much I have learn 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 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 rest of the books more valuable, but If you are server side Java programmer, you will definitely find 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 practice advice given in these books, you will surely learn a lot about craft of coding and programming. They are not the book which tells you how to write 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 design of existing code
This book is written in Java as it's principle language, but the concept and idea is applicable to any Object oriented language e.g. C++ or C#.This book will teach you how to convert a mediocre code into a great code which can stand production load and real world software development nightmare, the CHANGE. 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 developers code.
2) Clean Code
This is my favourite book, and time and again I have recommended it to my fellow programmers, readers, colleagues and students. If you ask me what is the best book on coding, software development and programming in general, 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 my self are Clean Code, Clean Coder, Agile Software Development: Principles, Patterns, and Practices, UML for Java Programmers and Extreme Programming in Practice. Though most of his books are a decade old but they are still valuable and I am sure they will remain for another 20 years or at-lest 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 great collection of common mistakes made by all kinds of programmers. It has chapters on how you correct them e.g. how to convert a long switch statement into much better model based upon open close design principle and leveraging power of Inheritance and Polymorphism. This is serious a must read book for any Programmer. Though examples are given in Java, which makes it even more valuable for Java programmer, but it is also equally useful for other programmers e.g. C, C++ or any other OO practitioner.
3) Code Complete
This is I guess most read book on coding practices. At 10000 ft, It looked to me as counterpart of Clean Code for C++ developers. Though I have gone through this book even before reading Clean Code. Long back one of my friend 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 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 lot of overlap in terms of best practices and common mistake to avoid, both are worth trying. In the end, you will find one of the book more closer to your heart than other. 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 developer to write better software with the highest quality code".
4) The Art of Unit Testing
If there is one thing I would like to improve on projects as well as programmers is their ability to unit test. After so many years or recognition that Unit testing is must have practice for professional developer, you will hardly find developers who are well verse of Unit testing and follows TDD. Though I am not hard on following TDD, but at bare minimum you must write Unit test for the code you wrote and also for code you maintain. Projects are also not different, apart from open source projects, many commercial in-house enterprise project suffer from lack of Unit test. If you are a project manager, team lead or Tech lead, create proper software development process which 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 small amount on helping 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 are much easier to maintain and change. Developers also find learning a new code-base with unit tests more easy than those monolithic piece of code which requires Database, MQ and Enterprise Server setup. The art of Unit testing address this concern. This book tells you difference between a failed project and a successful one, and difference between a maintainable code base and a code-base when you are testing database and other technologies. This book has examples in .NET but not difficult for any programmer. By the way, for Java developers, I have also shared couple of good JUnit books here.
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 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 little late, but it's a great addition in your book self, particularly more if you are aspiring to become 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 Vissides for their excellent word of creating, consolidating and bring it to mainstream software development. This book has catalogue 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.
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 programmer. This is the field where ability to learn and adopt makes difference between a good and great developer. Make books your friend, listen podcast, watch clean code talks and most importantly write code and re-factor 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 expert programmer.
wow this post is amazing .. thanks for sharing please see my post also here is my post for
BalasHapusTop 10 best books to learn C Programming