Since I started this blog I have been writing about software process related topics. I talked about the bill’s of rights, the role of the SCRUM Master and the technical practices that should be used when doing Agile development. It was mostly, just me, ranting about Agile, past experiences and sharing my opinion on these topics. I want to start some more technical blogs related to software quality and design and I would also like to start a new format: a series blog, which are multiple blogs related to the same subject.

The first series I would like to start will be about the SOLID practices of Object Oriented Design. These practices are pretty old already and I think every software developer has heard about them sometime before. But do you really understand them? Each blog will focus on one letter in the SOLID acronym. So this series will contain 5 separate blogs.

I will have to see if I write all these blogs in a sequence or if there are going to be other blogs in between about other subjects. We will see…

So, what are the SOLID principles of Object Oriented Design? They were coined by Robert C. Martin aka Uncle Bob. Here they are:

Single responsibility principle.
Open-closed principle.
Lizkov substitution principle.
Interface segregation principle.
Dependency inversion principle.

You might wonder why I would want to write about these topics if there already are many articles and blogs written about them? Well, because I think they are interesting. Also, uncle bob called them the `principles of object oriented design` yet he stated later that these principles hold for other paradigms too, like functional programming. Another interesting aspect of SOLID is that most articles talk about them relative to objects or classes, yet these principles can be used, and are intended to be used, on a higher level of abstraction as well. Think about SOLID in regard to software architecture and what that would mean.

I do not want to spoil to much, so in the next few blogs about SOLID I will explain what each of the principles mean, how they relate to Object Orientation, to software architecture and how to use them in other paradigms than OOP if possible.


01010010 01110101 01100010 01100101 01101110

Hey, sorry to bother you but you can subscribe to my blog here.

Never miss a blog post!

You have Successfully Subscribed!