Improve Impact Mapping by understanding which of the Three Ages you are in

Tomas Malmsten
25 March 2019

The other day I though struck me. I have a very senior colleague who is specialised in testing and have had a number of test lead roles. I my self is a pretty accomplished software crafter. What would happen if we looked at offering clients coaching in the whole lifecycle of software production, from idea to business capability and value. Naturally such coaching includes sustainably delivering release after release and continuously learn what value is and how this affects planning and functions in the product. After some conversations in the office we realised that we need to package this in some way. Find some kind of process or method we can use that will help the client to understand the value we add. This, at the moment, is focused on the inception phase, getting the client team up and running with the right thing.

After some poking around in my library I found the book Impact Mapping again. This is a really good method to get started. Working with the client to create an impact map to understand which path is one that is most beneficial to start with, whilst being able to track that we are doing the right thing over time. But something in the book made me think about a patter Dan North defined in his book Software Faster. The Three ages. So I wanted to write something about how The Three Ages can be applied to even further increase the value of your impact map.

Continue reading →

Encapsulation in Java and Kotlin

Tomas Malmsten
15 January 2019

Over the past week I've been looking at how I can create a well encapsulated library SDK for Android. What I am looking for is the ability to hide all implementation details from the client whilst still have the freedom to design the SDK code base well.

Continue reading →

Explicit Interface and Encapsulated Implementation patterns, DDD and the joy of patterns

Tomas Malmsten
8 January 2019

It's funny how we encounter new things matching what we are not looking for. A little while back I was looking for a design pattern that would help me to solve an issue around data propagation. But I didn't find it. Instead I found two other patterns which can be used to simplify domain models (as in DDD domain models). Explicit Interface and Encapsulated Implementation. They are both defined in Pattern-Oriented Software Architecture Volume 4 - A Pattern Language for Distributed Computing (commonly referred to as the POSA 4 book).

Explicit Interface defines a well described interface which is exposed to clients. It's a foundation for a stable component interface. There are many similarities with Java interfaces actually, in that it only describes the contract but contains no implementation.

Continue reading →

Using Architecture Decision Records to document your architecture

Tomas Malmsten
11 September 2018

Have you ever asked your self the question: "Why did we do it like this"? I have, many times, when I revisit places in the code. We make decisions on a daily basis on how to solve things, some bigger then others. At some point later we come back to it and can't recount why we thought it a good idea at the time. For smaller design decisions this is sometimes OK. But for things that affects our architecture we'd often like to know why.

For some time now there has been a pattern for this. It's called Architecture Decision Record. As far as I can tell Michael Nygard identified the pattern in 2011. The blog post can be found here. It has since come up on Thoughtworks Technology Radar and ended up in the adopt section.

Continue reading →

Moving from Wordpress to Cryogen

Tomas Malmsten
27 April 2018

I've been quite for a long time now. I've had to much work to do for my own good. What time I've got beyond that I want to spend with my loved ones. Times are similar now as then, so I'm probably not coming back to blogging much going forward.

Having said that, I'd still like to write a little something about why I've chosen to change the whole site. This is since I think there is some good experiences to draw from it, not just for a simple blog but also for a lot more business critical situations.

Continue reading →