Recommended Readings On Software Development
Below is my list of recommended readings on software development. These books have provided the basis of my knowledge on software design and software development practices in general. I highly recommend these books for junior developers interested in growing or possibly transitioning to software delivery.
Code Complete: A Practical Handbook of Software Construction, Second Edition by Steve McConnell - This book is basically a guide to software development using construction as an analogy. This book also provides a lot of data regarding the costs associated with changes and defects during the construction process.
Agile Principles, Patterns, and Practices in C# by Robert C. Martin and Micah Martin - This one is probably my favorite. I think of this book as a manual on software development. As the title implies, you'll come away with fundamental knowledge of agile principles, patterns and practices. The most valuable sections for me, were around agile design, design principles and design artifacts.
Microsoft Application Architecture Guide by Microsoft Patterns & Practices Team - This book is great resource for technical design. There is also a helpful section on application archetypes which provides guidance on selecting an appropriate application type.
Head First Object-Oriented Analysis & Design by Brett D. McLaughlin et al. - As the name implies, this book is a guide for object-oriented analysis and design using the visually rich format you'd expect from a Head-First book.
Head Design Patterns by Eric Freeman et al. - Another Head-First book; this one on design patterns. This book also makes a good reference to have at your desk.
The Art of Unit Testing with Examples in C# by Roy Osherove. - This is an awesome guide to unit testing. This book covers the basics of unit testing, all the way to integrating unit tests into the organization and the tools you will need for effective unit testing. Although there is a part of the book on Design and process, the book does not cover TDD (Test, Driven, Development). Still a great book nonetheless. It gives you everything you need to write effective unit tests and create the possibility for you to pursue TDD.