I had a conversation the other day with a friend of a friend who happened to also be a software developer. We got to talking about our current favorite stack and I shared the stack that I planned to use for my mostly abandoned personal project at BAM Apps. We also got to talking about the art of software development in general including best design practices and project management.
During the course of the conversation, it became obvious to me that while I’ve kept up on the latest technologies and techniques, I’ve let my technical vocabulary wither. My new friend was using phrases and acronyms that I had to admit I didn’t know. However, very few of the things he explained to me were foreign to me; I just did not know the words my peers are using to talk about them. It put me at a considerable disadvantage in a conversation I was really enjoying and would like to have more often.
I decided that if I want to hold up my end of a serious discussion on software development, I needed to brush up on my vocabulary. To that end, I picked up a copy of Adaptive Code via C#: Agile coding with design patterns and SOLID principles by Gary McLean Hall.
The book is about 400 pages, but it is a quick and enjoyable read. I’m a fairly slow reader and I was taking notes, but I was able to go through the book in a week. Still, the book covers a lot of ground in those 400 pages. It was exactly what I needed to catch up on the latest terminology and I learned a few new techniques as well.
The book is divided into three parts. The first part is devoted to the Agile method of building adaptive software. The second part explains the SOLID principles of software design. The last part is a narrative that follows a fictional team through the initial setup and first three (zero, one and two) sprints of a project. All three parts include discussions and examples of design patterns and anti-patterns.
It is very inspiring. After reading it, I found myself wishing for a chance to put all of it into action which is why I decided to blow the dust off of my BAM Apps project.
I highly recommend this book to any software developer looking to brush up on new terms or to advance his or her skills to the next level.