I went shopping for a car a couple of years ago. Now I don’t know much about cars. I knew that I wanted a station wagon and that it had to be comfortable for five and it had to cost a maximum of so much. This limited my choices down to a few marques that I liked or that I had driven and had an opinion on. But when it came down to selecting an actual car, you’re at the mercy of the market. You need to react to an advert quickly, and in reality, you have little time to decide if this one is the one.

After a few disappointments and close calls, I just had to settle for the one that was available to me. In the end, it worked out ok, but I don’t feel that I was very exact about the process, and it probably could have been a better result closer to what I envisaged in the first place.

How often do we feel the same way about software projects? We set out with hope and a glorious idea and end up with a compromise.

We have an idea of some of the elements that we want the system to do but the criteria are often vague and difficult to understand. Why? Because software systems are abstract and illusive - they deliver real business value but between specification and delivery a lot can and will happen. If software were cars then who knows what we’d all end up driving around in.

Unfettered choice is always a poor choice. Saying what we actually want is always the hardest part. If there is a choice we will undoubtedly change our mind until we get to a point where we actually decide on the criteria for making the choice.

What I’m saying is this - it’s all about the context. Context for every situation is vital. Software is no different.

This week’s subject is therefore about getting to know yourself - knowing your requirements better through understanding the reasoning behind your requirements. This week I’ve explored this subject in my blog posts about visualisation and C4 diagram, likewise we touched on this and the use of visualisation in Domain Driven Design in the podcast with Nico Krijnen. It was a really fun episode so please enjoy!

Have a great weekend!

-- Richard

How to Visualise Your Systems

Published on May 5, 2023

In a recent podcast episode, Nico Krijnen and I talked about requirements analysis, especially the use of diagrams – particularly context diagrams and DDD context maps, C4 system diagrams and business process canvases. Understanding, architecting and supporting our systems in a collaborative way is easier when we have diagrams that easily explain what we are… Read More »How to Visualise Your Systems


How to Write Good Requirements

Published on May 2, 2023

It is human nature to want to excel at our chosen profession. When given the opportunity, many of us are tempted to show our expertise by listing everything we know on a single piece of paper. Therefore, when we are asked to draw a picture of a system and its interactions, we will put on… Read More »How to Write Good Requirements


Podcast: Avoiding Legacy? DDD, Collaborative Architecture and Product Thinking with Nico Krijnen

Published on April 30, 2023

Do you hate legacy or do you love it? Do you accept it or do you want to stamp it out? This time I talk to Nico Krijnen (Lumunis) about the opportunities we have in our legacy codebases to understand our business better, the strategic use of new technologies to make important product improvements, the… Read More »Podcast: Avoiding Legacy? DDD, Collaborative Architecture and Product Thinking with Nico Krijnen


Doing DevOps

Join my newsletter for regular views and news all about doing effective, essential DevOps. I dive into the human factors that make successful DevOps organizations and the teams and platforms at the heart of your socio-technical systems. From team setup, to maximizing performance through fast flow to tools and techniques.

Read more from Doing DevOps