When designing in the object oriented world, I rely on a concept that was materialized in 1989 by Kent Beck and Ward Cunningham : CRC Cards.
What are CRC cards?
CRC stands for Class, Responsibility and Collaborators. It's a design technique that focusses on the conceptual level of modeling.
They're actually a very physical way of modeling : you use a paper card to describe the class, its responsibilities and collaborators. The fact that they're separate cards, gives your the opportunity to move them around and discover/layout the interactions with other cards. Also, the available space on a card is limited, so you're more or less encouraged to limit the responsibilities etc. Think along the lines of Single Responsibility and the Law of Demeter.
The whole idea is to open up the discussion in your team on whether the responsibilities are correct and the interactions make sense.
It's also a less formal way of designing than UML. After you've explored the conceptual design phase, you could opt to construct a collaboration diagram.
Why does it resonate with me?
You're reasoning on the level of concepts, responsibilities and interactions. By restricting yourself to one level and not loose yourself in implementation details, it keeps my focus on the design of how things are related to each other.
Once the design stabilizes, it guides my implementation and provides a frame of reference for outside-in TDD.
References
- A Laboratory For Teaching Object-Oriented Thinking by Kent Beck , Ward Cunningham (1989)
- Object Design: Roles, Responsibilities and Collaborators by Rebecca Wirfs-Brock (2002)
- UML Distilled by Martin Fowler (2003)
You might notice these references are quite old. Nevertheless some concepts are evergreen and discovering them (perhaps again) through the original material might give a more clear insight than what was passed on throughout the years.