This year, as part of the research for my CSS Algorithms talk, I explored the overlaps between general software design concepts and UI development. The S.O.L.I.D. principles for object-oriented design, in particular, have lots of overlap. I only really made it through S and O in my research, but this talk by Katerina Trajchevska from Laracon 2018 is a great overview of all five:
- Single Responsiblity Principle
- Open/Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
The examples are in PHP and oriented around back-end tasks e.g. retrieving information from databases, sending mail, and handling users, but I think they are common enough tasks that front-end programmers will understand them as well.
I especially like the concluding notes in her talk: these are principles, not rules. Specifically:
Avoid over-fragmenting your code for the sake of Single Responsibility Principle (SRP).
I think about this a lot when using single-declaration CSS utility classes. At work, we’ve found much success with utilities, but over-fragmentation is a problem, specifically with typography.
Another one I like:
Don’t try to achieve SOLID, use SOLID to achieve maintainability.
I think the same can be said for a concept like atomic design, no?
Katerina is an excellent and knowledgeable speaker, and I was curious about her background and career path. She has a Masters in Computer Engineering, freelanced for a few years, then in 2014 co-founded a company called Adeva that looks to be doing really well. Adeva works with a global community of engineers to provide development teams for a variety of companies. Given how hard it is to hire and how hard can be to get hired, I dig it.
I am on the lookout for mission-driven, female engineering role models, and I did not hesitate to add Katerina to my list. Looking through her website and reading about her work was really inspiring.