Some codebases are nicer to work with than others. This is true for applications, services, libraries, frameworks, even programming languages themselves. Is this a purely personal choice or are there universal characteristics of software that can make code a joy to work with? Daniel has been thinking about this for a long time, especially since he poked a stick at [the SOLID principles](https://www.baeldung.com/solid-principles) for fun a few years ago and people came after him with pitchforks. His recent post about [why he feels SOLID is outdated](https://dannorth.net/2021/03/16/cupid-the-back-story/) ended up on the front page of Hacker News! Now he has codified his thoughts into his own pithy five-letter acronym, CUPID: Composable, Unix philosophy, Predictable, Idiomatic, Domain-based. Why these characteristics, what do they mean, and why should you care? Can they improve your coding experience or is this just more programmer navel-gazing?
Daniel Terhorst-North uses his deep technical and operational knowledge to help business and technology leaders to optimise digital product organisations. He puts people first and finds simple, pragmatic solutions to business and technical problems, often using lean and agile techniques. With thirty years of experience in IT, Daniel is a frequent speaker at technology and business conferences worldwide. The originator of Behaviour-Driven Development (BDD) and Deliberate Discovery, Dan has published feature articles in numerous software and business publications, and contributed to The RSpec Book: Behaviour Driven Development with RSpec, Cucumber, and Friends and 97 Things Every Programmer Should Know: Collective Wisdom from the Experts. He occasionally blogs at https://dannorth.net/blog.