This is the first book I have read since university. It was proposed to me not long after I joined the company I currently work at and is one of the inspirations for the way I work and this blog.
I'm going to talk about the C# version of the book (Agile Principles, Patterns, and Practices in C#), but it also applies to the Java version (Agile Software Development: Principles, Patterns, and Practices). Both books were written by Robert C. Martin (Uncle Bob).
Who is this book for?
This book is for every new developer especially those wanting to work with object oriented languages, as long as they have the fundamentals of program flow (functions, loops, conditions, etc). Most of the concepts are general and will be used in any programming paradigm, but the examples use an OO language (either C# or Java).
I've read this book after starting my second job, 5 years after having finished my bachelor's degree, 3 years after starting to work in the domain, and wished I could have read it as I was finishing my degree, or right after. The concepts greatly help you in every aspects of programming.
What should be read in this book?
I think you should read everything in the book. The book flows pretty well and is written in a simple language so it's easy and fast to read. Here are the main sections of the book:
- Introduction to Agile Programming principles and Extreme Programming, including testing and refactoring: this is something we hear about at school, but don't get to practice.
- SOLID principles: these are very important not only to OO programming, but programming in general. The concepts are simple but greatly help clarify your code and make it more maintainable.
- UML and other diagrams: you probably learned these and school and thought you'll never touch it again, especially not to write up analysis documents. One thing he mentions that you should remember are that they help to communicate with other developers. Most of the diagrams I do are on white-board so that they can be easily modified. They aren't perfect UML by any means, but they convey the information you need to have conveyed. And if you need to save it somewhere, just snap a photo once you're done.
- Case studies and design patterns: the last and largest part of the book is a presentation of different example, mainly one case study, which is intertwined with some design pattern theory. The examples introduce problems which are solved by the design patterns which are presented, so it's a nice progression and a workflow that is often seen when working. The design patterns aren't exhaustive but give a general idea of their use. For a more complete analysis, read the Gang of Four book which [I reviewed here]({% post_url 2018/2018-11-06-gangoffour %}).
What should be retained from this book?
The general concepts of agile programming, SOLID principles (pay more attention to these) and the diagrams. The idea of testing, refactoring and agile workflow is something you will likely encounter when working so it's a good idea to be familiar with it. SOLID principles will follow you every day and it shows when you review code that has been written by somebody that knows these principles. They add a lot of cleanliness to your work. Remember the general form of the diagrams, but don't focus on remembering the details of each diagram (the book doesn't go into to much detail anyway).
How does this apply to proper code?
These are the basic principles which drive proper code and upon which everything else is based. This book opened my mind to working with agile principles and writing clean code, and I hope it will be the same for you.