For last couple of days I was doing the Modeling of a very hard part of our Core Domain. I spoke to Domain Experts in different roles, and I was working closely with the UX Designer, who made a lot of research earlier. I run couple of Modeling sessions - both alone and in groups of 2-5 people. I just couldn't figure out a good enough solution.
I was stuck.
Do You know that feeling?
Have You been in that moment, when you realize, that sometimes Synthesis is not that easy part of the Design process? The moment, when you feel like You are trying to push on a rope? You've done everything correctly, and yet You still cannot find the solution...
I assume, that You are a good scout, and You did Your homework.
- You have a Context Map somewhere,
- You did some Event Storming (by Alberto Brandolini),
- You are focused on some specific Subdomain and have abstracted unimportant things,
- You have some significant Scenarios in it,
- You have some Models that fullfill some of those Scenarios,
- You are actively using Modeling Whirlpool
Everything looks good, but it seems like You can always come with another significant Scenario that will break some already created Models... You are clearly missing some concept and you need to do something different to stop spinning your wheels.
You need some...
Enter the 8 Tips'n'Tricks that can help You to move on with Modeling activity. I already knew the first 7 and the last one was proposed to me by Mathias Verraes in the Twitter thread. Here You have it, you can take them and use in Your projects.
If You know any other trick, feel free to post it in the comments.
1. "Gibberish Game"
Sometimes you cannot agree on some concept with Your friend or You have a feeling that there is too much responsibility attached to one word. Or maybe the responsibility is distributed into couple of unrelated words. Or maybe the word that you are using to describe some concept has rotten and you need something more.
Just try to use completly unrelated word - some giber like "blah" - and use it in sentences to describe some related parts of the Domain. After couple of minutes you will see what true responsibilities are attached to that concept and naming them would be easier.
2. Paper documentsAsk Your Domain Expert, how would she do all the job, if there were no computer systems involved in the process. What kind of paper documents would she have, who would create them and who would process them. It helps to discover the Data Flow and connections between different actors of the Scenario.
3. Sketch some UI mocks
You should ask for help Your UX Designer with this one - You know, that we, developers, are pretty bad at UIs... ;) Draw some simple UIs, and ask Your Domain Expert what data would she need on that screen, why would she need that screen and what kind of decisions to make based on that data. And the key question - where that data would come from.
Note: This one can be tricky, because it may lead You to Modeling application Features instead of true Invariants of the Domain.
4. Model the unknowing explicitly and proceed - aka "Here be dragons"
Sometimes You don't need to spend that much time in one place. There may be other parts of the Domain that require Your attention. If You feel like You stuck and this is not that important, try to surround that part with a fence, build some interfaces and put a picture of a dragon there. Then flee... ;)
5. Enter the Domain Expert roleTry to explain the problem to a third-party, non-technical and non-related to the business person. Then let her ask some questions. Magic can happen!
6. Play with your subconscious mind
Do You know how Your brain works? Do You know why you have some great ideas and solutions under the shower? I won't go into details, You can find a lot of it on the internets, but sometimes it is good to let the biology do the job. Just keep asking Yourself the questions about Your problem and do not provide any solutions to those questions. At some unexpected time You may be enlightened - i.e. in the traffic jam. Keep a writing pad in Your pocket.
7. Drink some beer
This one is my favourite. But of course - not in your work time, not at your office, and definitely not in the traffic jam. :)
8. Remove all constraintsThe last but not least - introduced to me by Mathias Verraes:
"Remove all constraints, model the simplest thing that has value, then add constraints back one by one."