Last night, I attended the 43rd Cape Town SPIN meeting that turned out to be a fun, interactive exercise with John Gloor. John introduced a system of analysis which focused on modeling a domain – but not from and object oriented paradigm. It was more about “things” and “influences”. I am really doing a bad job of using the right terms, but let’s just try something out.
- As a group define (frame?) your problem domain (We chose “How to be a successful team”)
- Then individually…
- write down as many thoughts about the domain as possible – short snippets of 3-8 words each. The recommendation was to aim for about 70 thoughts.
- Color code (or group) these based on some notion of similarity.
- Give each group a name or label on a post-it
- Then as a group …
- the first person sticks their post-its on the wall
- each other person, in turn, then sticks their post-its up and aligns it with whatever else is already on the board (or creates a new spot altogether)
- Optimize the emerging clusters and give them names
- Finally, put directed lines between the named clusters using the guide of “A influences B” and give the line a label as well.
We never had the time to get to complete step 6. But the really interesting angle for me was that a language for the domain was emerging. It was not perfect, but it was a nice start. Secondly, some of the clusters felt a lot like strategic contexts. Sure, it was a conceptual decomposition of sorts, but it may well be a nice starting point for discovering bounded contexts.
And those influence lines felt like dependencies and interactions between contexts. The use of the word “influence” is a really nice alternative to the traditionally naive terms like “uses”, “has”, “is like”. It naturally focuses on behavioural interactions.
So, this simple exercise may be a nice technique for discovering language and contexts within a domain. And it proves to me, yet again, that language is most critical. This is not just about maintaining a lifeless glossary of terms – but the energy surrounding the vocabulary and terms need to be depicted and felt as well. And if we combine all of this with an agile mindset, we can adjust this “language model” with each iteration and gain deeper domain understanding continuously. Hmmm, this notion of “language model” is intriguing!