My name is Igor Konouchenko. I'm a developer of Ukrainian software company NaikonSoft.
Very often the developers should be directed as they don't have an idea what to read and learn to upgrade their skills. In this article I indicate the information sources which in my opinion are necessary to reach this goal. Here is a list of the books.
I suggest reading them in the following order:
Design patterns
Wikipedia is a good source of theory and exact examples.
The basic book:
Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley Professional Computing Series)
- I read this book long time ago for several times. And recommend you to do the same. This book is going to enable you to understand a great deal of terms used by other developers.
Refactoring
Refactoring: Improving the Design of Existing Code (Addison-Wesley Object Technology Series)
- probably this book made revolution in code writing. It's easy and interesting to read. The methods of refactoring are to be memorized up to the end of your life. And from now and on your code will be better. In this book you can also find information about unit testing.
I guess the book Test Driven Development: By Example (Addison-Wesley Signature Series)
can be referred to as the best in this field (TDD). It's simple and easily to understand. It will give you the basic knowledge but won't learn you to write good unit tests.
In order to extend your knowledge read this thick catalogue of xUnit patterns:
xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series)
. This book gave me the answers to all the numerous questions I had in the process of my attempts to write good tests.
The next book describes how to use patterns correctly and it's also compulsory. Refactoring to Patterns (Addison-Wesley Signature Series)
. Probably after reading of this book you will really be able to use patterns for benefit.
Going deeper
Patterns of Enterprise Application Architecture (Addison-Wesley Signature Series)
- another letter in a developer's abc. It describes approaches to writing complex applications. It's necessary for understanding a lot of other terms.
While the previous book gives you the fundamentals, the book Applying Domain-Driven Design and Patterns: With Examples in C# and .NET
gives you an idea how to use this knowledge. Exactly this book showed to me at last what Dependency injection was.
If you use the knowledge received from above mentioned books constantly you will get a good result. Read the book Continuous Integration: Improving Software Quality and Reducing Risk (Addison-Wesley Signature Series)
to know what is necessary to do for this.
Conclusion
Actually all these books from The Addison-Wesley Signature Series so follow the updating of this series. The article for junior and middle-level developers.