There’s this really cool idea I read about in Luke Hohmann’s book “Beyond Software Architecture : Creating and Sustaining Winning Solutions”, only I haven’t yet found an opportunity to use it… until a couple of nights ago.
Have you ever been in a situation where: you’ve started working with an existing team and realised that things aren’t quite right? The way people talk about the solution isn’t entirely consistent, things seem to be going in random directions, maybe they are talking at cross-purposes or even arguing about how things are done? You might be familiar with this – it’s the kind of discussions you get when there isn’t a consistent team view of what the architecture is.
Luke’s idea is pretty simple:
- Get everyone in the team, as an individual (no talking), to draw the architecture as they perceive it.
- Once everyone is done, put all the drawings up on the wall and review as a group.
Have a discussion along the lines of “what occurs to you and the team”, and “do you find congruence? If not, why not?”.
The idea fascinates me, but I hadn’t yet had a chance to do it – until I got a chance to speak at the Product Tank Wellington meet-up. This specific meet-up was basically about architecture, and the intersection with product development. I wanted to introduce some architecture ideas and get some discussion going around how they perceived architecture in their space.
Here’s the intro slides and brief I gave for the exercise:
It all sounds great, what could go wrong?
Well, I was feeling a little bit flat that day – nothing major but not quite as “on to it” as you’d want to be if you’re presenting – especially when some of the audience are possibly more qualified in some ways to present on this than I am. During the exercise I walked the floor observing, and after a few minutes we put all the 16 or so pictures up in the wall.
Everyone gathers around, a piece of pizza in-hand, and waits for the pay-off moment where I take what they have done and deliver some revelation and insight.
Unfortunately it was bit of a “fake it until you make it” moment. Because I hadn’t done the exercise before I was a little unprepared for what to do next, but that’s the problem with activities like this where you need the input from a group of people – it’s a little tricky to test it out in a meaningful way.
Before I explain further – take a look at some of the diagrams – what might you have said? (Think of that as a little self-test).
I managed to waffle a little bit so it wasn’t a complete farce, I asked a few questions and we generated some “ok” discussion – so I don’t think it was a totally wasted effort, before moving the conversation on.
Retro – What Did I Learn?
So first off – my thanks to everyone at the meet-up who took part, thanks for being guinea pigs in this little experiment! I hope you got something out of it even if it wasn’t necessarily what I was aiming for.
What Worked Well:
One of my colleagues at Middleware attended, and like a lot of people I meet he’s interested in architecture but the whole concept is a little intimidating and he’s keen to know more. He said the exercise was really great for keeping people engaged:
- It gave people a chance to get up and stretch their legs, good for energy.
- It gave people a break from listening to me and watching slides.
But that’s not exactly a surprise, in my experience (both presenting and being presented to, anything interactive is usually positive).
- The volume of information to process.
- The variety of visual styles and approaches.
- Messy handwriting.
- Having very little time to analyse and respond – in front of a group.
I tried to look for common themes and areas where people had varied wildly; and in this regard the exercise went exactly as I had anticipated as there was a lot of variety. The problem was that:
- The insights that occurred to me weren’t quite in-line with the brief I thought had given the group, and I didn’t want to start making comments people thought were unfair because the goal-posts had changed.
- I had a clear idea in my mind of how the exercise would go and how I would respond, but my assumptions didn’t entirely survive what actually happened, and consequently I felt I didn’t responded as well as I wanted to.
What Could Have Gone Better If:
- I had been more “on to it”.
- I had done more preparation and thinking about what might get drawn, and how I might need to respond.
- I had thought to ask one or two people to give us a quick summary of what they were thinking and the process they went through, as a way of generating some further discussion.
- I had picked a drawing at random and tried to interpret it “Ok, this is what I think you’re saying”, and use that as a way of generating some discussion and insight. Repeat as appropriate.
The context of the exercise is important, as the objectives flow from the set-up:
- In this exercise people were dealing with a domain problem (flight bookings) that was essentially new to them – I presume they all have some background idea of such a system, but it not like they will have be actively building one for some time – which would be the case in a real-life scenario.
- It’s similar for the reviewer/facilitator; they way I would run the second half of the exercise would be different because what I needed to get out of it would have been very different. Unlike an exercise at a meet-up, in a real-life project I would be bound to the outcomes as a member of the team – i.e. I’d have to live with them, so the drivers would be immensely stronger.
Would I do it again?
Absolutely. In some ways the exercise was bit of a failure, at least in the short term, and I can only hope that people were able to take away something useful from it. That said, it was a success from an iterative point of view: I now know a lot more about this technique and how to make it better next time. These learnings will also help me should I ever need to do it “for real” in a project.
I also hope it was successful in that this write-up gives you something to think about, and perhaps the inspiration or basis to run this exercise yourself – either informally as a meet-up/learning activity, or as a “serious-face” exercise as part of your project.
I’d like to belatedly comment on the work people did and share some observations on the content and possible thought-process (rather than the visual style):
- It’s interesting how people’s background comes through – the second diagram takes a decidedly infrastructure based lens. This is not necessarily bad. In situations like this (where it might not necessarily answer the question you thought you had asked) it may prompt valuable questions you hadn’t thought to ask. That’s a strength of this sort of exercise, the variety of responses can provide insights you hadn’t expected and therefore might not have uncovered.
- It’s also interesting the different functional emphasis people use. For example the last one seems to have a finance focus – three of the most prominent boxes are “Prices”, “Finance” and “Payment”, the first two of these are also in the center of the diagram, which might also be where they started drawing – and where they conceptually started.
- The first one is interesting because it blends functional concepts like “flights” and “Finance” with solution/technology concepts such as the enterprise service bus that links stuff together.
- The third example appears to have started with the “portal”, large and across the top; it then decomposes the portal down into parts, and then further elaborates those into related concepts. It’s easy to see how the drawers mind may have been methodically working through the problem.
- The second-to-last example is interesting because it seems to very much be an exploratory diagram, where the drawer is literally working it out as they go: drawing some concept and then digesting that before adding the next piece. There’s absolutely nothing wrong with this approach. It’s true that a “messy” diagram might reflect the drawers understanding of the domain, but it hasn’t stopped them bringing in elements that others missed, such as thinking about search through to external providers (Expedia). Like some of the other, this example also mixes technical and non-technical concepts (think “apples & pears”): “bank API’s” and “Weight Allowance”.
- Not all of the examples have included people/actors. Neither approach is wrong, but to me including people starts to provoke thoughts around who does what, what scenarios they might have, and begins to bring people back into the discussion – which I think has a lot of value.
Were you one of the participants in this exercise? If so, please feel free to add your thoughts in a comment.