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:
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) |
![]() |
Refactoring: Improving the Design of Existing Code (Addison-Wesley Object Technology Series) |
![]() |
I guess the book Test Driven Development: By Example (Addison-Wesley Signature Series) |
![]() |
In order to extend your knowledge read this thick catalogue of xUnit patterns: xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series) |
![]() |
The next book describes how to use patterns correctly and it's also compulsory. Refactoring to Patterns (Addison-Wesley Signature Series) |
![]() |
Patterns of Enterprise Application Architecture (Addison-Wesley Signature Series) |
![]() |
While the previous book gives you the fundamentals, the book Applying Domain-Driven Design and Patterns: With Examples in C# and .NET |
![]() |
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) |
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.
Once you've read Martin Fowler's "Refactoring" I would also heavily recommend "Working effectively with legacy code" by Michael Feathers - This book is really useful when you do not have a green field project to work on but rather want to build on the mess that someone else left behind :-)