On Monday, November 13th, the development team at ActiveCampaign had the pleasure of hosting the Chicago PHP User Group for a meetup. One of our very own brilliant Engineering Managers, Rocco Palladino, lead the group in a thought-provoking exploration of the SOLID software design principles. In addition to showing off our beautiful new office space at 1 North Dearborn in Chicago, we enjoyed food and drink, connected with great folks in the Chicago PHP community, and discussed best practices in designing and building object oriented applications. (We also shared a few inevitable nerdy puns containing the word “solid”.)

The SOLID design principles are a foundational set of tenets used in the design of software to improve the clarity, and reusability of code, and help to make a codebase more testable. While these ideas have existed in some form since the earliest days of programming, they were first collected and given formal names in the book Agile Software Development, Principles, Patterns, and Practices, a seminal work on software design by Bob Martin. Michael Feathers, another contemporary thought leader in programming, later coined the acronym SOLID as a way to easily refer to these ideas.

The SOLID software design principles are defined as follows:

Single Responsibility Principle

“A class should have only one reason to change.”

Open/Closed Principle

“Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification”

Liskov Substitution Principle

“Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.”

Integration Segregation Principle

“Many client-specific interfaces are better than one general-purpose interface.”

Dependency Inversion Principle

“Depend upon abstractions, [not] concretions.”

These design principles apply equally across any language or programming paradigm, and are an excellent tool for our engineering team during collaborative code review and design of new features for our platform.

To dive deeper into these ideas, check out Rocco’s excellent slides from his presentation here:

https://rpalladino.github.io/solid-intro/

Are you interested in software design and development?

Check out our jobs page for our current openings! We’re always excited to connect with folks who are passionate about designing and building software.