I have been working in DevOps and in various ways for years. It has become my primary focus more recently. I spend most of my days in one of the following:
Building web applications, REST APIs, websites, CMS(s), and iOS application using various tools from LAMP stack to xCode.
Just a list of my most used or familiar programming languages
More fun tools
Every class / module should have a "single" responsibility or problem that is solves.
You can extend existing functionality but leave the existing well tested code alone.
Basically, you should be able to interchange subclasses without needing to change anything. The super class will still function fine. Think Animal superclass. Maybe a "speak" function is not ideal because there are animals that can not speak. OR, if you were to implement speak, a handled error could be used.
Create multiple, as many as needed, interfaces and have classes implement each one. Ties togehter withe the Single Responsibility idea.
Depend on abstractions no concretions. This allows for a much more hot-swappable or modular application.