Use proven arguments in design discussions.
The Design Cards
"I cannot really explain but my gut feeling tells me that this is a bad idea." Obviously this sentence is not very helpful. Yet, it is still quite common in discussions about software design. Software design is hard and it can even be harder to discuss design decisions with other developers or to explain the reasons behind a decision. We tend to rely on experience and gut feeling but that's difficult to communicate.
Fortunately we are not the first ones facing these problems. For decades developers have reasoned about software design and some of them have condensed their thoughts into memorable principles, guidelines, and rules of thumb. You can read about them in countless books, articles, or blog posts. We all know principles like KISS, DRY, or SRP. But there are plenty of lesser known principles that are helpful nonetheless. Do you know the single choice principle (SCP), the law of leaky abstractions (LLA), or the principle of separate understandability (PSU)?
The Design Cards
Almost every argument in a design discussion boils down to one of these principles. And our gut feeling and experience can often be explained with them, too. So we've created a set of cards with a selection of the most helpful principles or arguments to be used in a discussion about software design.
The design cards are a means to help you with that. Each argument card describes a certain argument which is relevant in many design discussions. Furthermore there are question and action cards that help reflecting and moderating the discussion itself.
Build your own deck of cards and use them for spontaneous discussions during pair programming and code reviews or for important architectural decisions. The core rule is that you play out cards/arguments one at a time taking turns. This means that you cannot play out two cards at once. In this way you are forced to think about the strongest argument. Furthermore one is more likely to convince another developer instead of merely persuading her by taking fast and stating a whole bunch of arguments at once.
There are many ways in which you can use the Design Cards:
- You can use the Design Cards alone
- You can use the Design Cards while discussing design decisions
- And you can use the Design Cards as a learning game.