Recent Changes

Here is a list of recent updates the site. You can also get this information as an RSS feed and I announce new articles on twitter.

I use this page to list both new articles and additions to existing articles. Since I often publish articles in installments, many entries on this page will be new installments to recently published articles, such announcements are indented and don’t show up in the recent changes sections of my home page.

Advocate, educator, and authorial stance

Tue 19 Jul 2022 13:20 EDT

When I'm writing, or mentoring others in writing, about a particular technique I prefer to take the role of an educator rather than that of an advocate. When doing that, I see two main stances an author can take. One is to focus on the trade-offs between this technique and its alternatives, the other is to focus on the merits of the particular technique and not discuss the alternatives.


Legacy Displacement: Revert to Source

Thu 07 Jul 2022 10:07 EDT

Legacy systems often act as integration hubs, ingesting source data to pass on to downstream systems. A new downstream system can decouple itself from legacy by finding the source of data to the legacy and integrating directly to that instead. Ian Cartwright, Rob Horn, and James Lewis describe this Revert to Source pattern, explaining that this part of legacy displacement often also allows a new system to take advantage of upgrades to source data that the legacy had neglected.


Product Backlog Building Canvas

Tue 14 Jun 2022 10:15 EDT

Many software teams describe desired product capabilities as a product backlog: a list of user stories. These stories capture who needs the work, what the work is, and why it's needed. Too often teams expect a product owner to be the sole source of the backlog, but anyone could (and should) write user stories. Paulo Caroli teaches teams to use a Product Backlog Building Canvas, which provides a simple process to develop user stories, starting with describing personas for product users and the activities they do. These activities yield features: their interactions with the product. Features are broken down into backlog items, which can then be formulated into user stories from the background of personas and activities.


Agile Book Club interview on Refactoring

Thu 28 Apr 2022 11:33 EDT

James Shore's Art of Agile Development is my favorite single-volume book on agile software development. A reason for that is its serious emphasis on the technical practices that are essential to making it work effectively. James and I discuss the role of refactoring for software development, the nature of design changes we see, and how to break down big changes into small pieces.


How I use Twitter

Tue 26 Apr 2022 08:50 EDT

A couple of recent conversations about Twitter were nudging me into writing about how I use Twitter even before The Muskover developed. Twitter has become an important part of my online life, and my online life is a big part of what I do. But like any tool, Twitter can be used in many different ways, and how you use it affects how useful it can be.


photostream 128

Tue 19 Apr 2022 17:58 EDT

Heian-jingu Shrine

Kyoto, Japan (2004)

Transitional Architecture

Mon 28 Mar 2022 14:49 EDT

The core to a successful legacy displacement is the gradual replacement of legacy with new software, as this allows benefits to delivered early and circumvents the risks of a Big Bang. During displacement the legacy and new system will have to operate simultaneously allowing behavior to be split between old and new.

Ian Cartwright, Rob Horn, and James Lewis explain how to build and evolve a Transitional Architecture that supports this collaboration as it changes over time. For this to work, intermediate configurations may require integrations that have no place in the target architecture of the new system.

Or to put this more directly - you will have to invest in work that will be thrown away.


Investing in the hiring process

Wed 16 Mar 2022 10:06 EDT

Tim Cochran and Roni Smith complete their article by looking at how scaleups need to invest in the hiring process to overcome the talent bottleneck. They add a case study from our experiences with talent acquisition at Thoughtworks.


How to get out of the talent bottleneck

Tue 15 Mar 2022 10:59 EDT

Tim Cochran and Roni Smith explore how scaleups can get out of the hiring bottleneck by using technology and innovation as a hiring differentiator, hiring T-shaped and non-senior developers, and embracing remote working.


How scaleups get constrained by talent

Thu 10 Mar 2022 10:31 EST

The second bottleneck in the series looks at talent, and how scaleups struggle to hire enough good people. Tim Cochran and Roni Smith explain how the small network and informal processes that allow early stage startups to grow begin to fail during the scaleup phase, and what signs indicate a new approach is needed.


How to get out of the tech debt bottleneck

Wed 09 Mar 2022 11:03 EST

Tim Cochran and Carl Nygard finish their examination of the tech debt bottleneck by looking at how to get out of it. This includes close collaboration betwen product and engineering, a strategy for the four phases of a startup's journey, and empowering teams to fix the tech debt problems.


Bottlenecks of Scaleups: How did you get tech debt?

Tue 08 Mar 2022 09:40 EST

In its early days, a startup searches for a good product-market fit. When it finds one it looks to grow rapidly, a phase known as a scaleup. At this time it's growing rapidly along many dimensions: revenues, customer, headcount. At Thoughtworks, we've worked with many such scaleups, and our work has focused on how to help them overcome various bottlenecks that impede this growth. As we've done this work, my colleagues have noticed common bottlenecks, and learned approaches to deal with them.

This article, by Tim Cochran and Carl Nygard, is the first in a series that examines these bottlenecks, in this case looking at the problem of a startup accumulating technical debt. This bottleneck is a common one, and like most bottlenecks it isn't necessarily due to bad work so far, but more due to the change of context that rapid growth imposes on a company. We begin the article by explaining how this bottleneck appears and what the key signs are the bottleneck is slowing progress.


Using the Four Key Metrics to assess an infrastructure platform

Wed 09 Feb 2022 10:43 EST

Poppy Rowse and Chris Shepherd complete their article on infrastructure platforms with a warning on over-complicating a platform and a section on how to use the Four Key Metrics to assess a platform's success.


Communicating the technical vision of an infrastructure platform

Tue 08 Feb 2022 09:31 EST

The next installment of Poppy Rowse and Chris Shepherd's article on infrastructure platforms looks how to communicate the technical vision of platform and how to understand the platform from the users' point of view.


Find out what infrastructure platform customers need

Wed 02 Feb 2022 10:21 EST

Poppy Rowse and Chris Shepherd continue their advice on building infrastructure platforms by discussing techniques to discover what platform users need and stress the importance of finding the Shortest Path to Value by onboarding them quickly.


Building Infrastructure Platforms

Tue 01 Feb 2022 09:52 EST

A lot of organizations are looking to improve the way their teams build on top of clouds by assembling their own preferred set of cloud components into an infrastructure platform. This allows product teams work with a consistent and curated set of services, rather than having to figure it out on their own. Poppy Rowse and Chris Shepherd have worked with several of these teams and put together some guidelines on how to do this successfully. They begin by outlining how to create a strategy for such a platform.


Divert the Flow

Thu 20 Jan 2022 10:50 EST

Yesterday Ian Cartwright, Rob Horn, and James Lewis described the Critical Aggregator and how it can metastasize into an invasive form. When a legacy system has such an Invasive Critical Aggregator it's often best, if a little counter-intuitive, to Divert the Flow of data by building a new critical aggregator first. Once this is done, we have far more freedom to change or relocate the various upstream data sources.


Critical Aggregator

Wed 19 Jan 2022 10:53 EST

Business Leaders often need to make decisions that are influenced by a wide range of activity throughout the whole enterprise. To support this systems often have a what Ian Cartwright, Rob Horn, and James Lewis call a Critical Aggregator: a component whose job is to visit various other systems and pull this information together. A critical aggregator is important, but often metastasizes into an Invasive Critical Aggregator


Two Phase Commit

Tue 18 Jan 2022 12:42 EST

Continuing his exploration of important patterns to maintain consistency across a cluster, Unmesh Joshi now looks at Two Phase Commit. It's broadly the most familiar approach, but comes with lots of complexities to make it work in practice over unreliable networks.


Legacy Mimic: a new component that looks like an old one

Wed 12 Jan 2022 10:11 EST

Ian Cartwright, Rob Horn, and James Lewis are also back with the New Year with a couple more articles from Patterns of Legacy Displacement in the funnel for the next couple of weeks. This one describes a Legacy Mimic: a part of the new system designed to make the old system think that nothing has changed.


Replicated Log: synchronize multiple nodes with a write-ahead log

Tue 11 Jan 2022 10:09 EST

One of the core challenges in a distributed system is keeping the state synchronized across all the nodes, especially when neither the nodes, or the connections between them, are reliable. The core approach to handle with is a replicated log: using the write-ahead log pattern over the cluster. Unmesh Joshi shows how this works using its most common implementation: the Raft protocol.


Paxos: using two consensus-building phases to handle unreliable nodes

Wed 05 Jan 2022 10:53 EST

Unmesh Joshi is ready to start the New Year with a few more of his Patterns of Distributed Systems. With this one he attempts the tricky task of explaining Paxos. This is a well-known protocol developed by Leslie Lamport, for nodes to reach a reliable consensus when both they, and the network, are prone to unexpected failure. Although it's well-known, it's also notoriously difficult to understand, indeed we had considerable difficulty getting our heads around it. We hope this description makes it a bit easier for those who follow us.


My favorite musical discoveries of 2021

Sun 26 Dec 2021 11:21 EST

I listen to a lot of interesting music, so picked out my six favorite new-to-me albums this year. I hope you find something interesting to groove to in there.


How the advice process works in practice

Wed 15 Dec 2021 10:10 EST

Andrew finishes his article on how to scale software architecture by looking at how this technique works in practice, and also outlines how things can go wrong.


Treat integration as strategic to your business

Tue 14 Dec 2021 09:27 EST

Brandon finishes his article on how we should look at integration by arguing that it is a strategic element of an enterprise's infrastructure. You can buy the best products in the world but "none of it will make you competitive in a digital world if you continue to treat integration as a tactical nuisance to overcome so you take advantage of those new systems."


A tech landscape and current climate sensing tool - Your own Tech Radar

Mon 13 Dec 2021 10:05 EST

Andrew's fourth supporting element for the Advice Process is using a tech radar to capture and map out your local version of the technology trends you see across your organization.


Team-sourced Architectural Principles

Thu 09 Dec 2021 11:44 EST

Having architectural principles is not new, but in a world of highly-autonomous-teams they become essential because they are the means by which an aligned delivery direction is achieved without the need for control. In the latest installment, Andrew talks about what makes a good principle, and how they work with the Advice Process.


Use commercial integration tools to simplify implementation concerns

Thu 09 Dec 2021 10:35 EST

Thus far, Brandon has has explained why general purpose languages are better for integration. In this latest installment he explains that there are cases when commercial integration tools make sense


A time and place for conversations: The Architecture Advisory Forum

Wed 08 Dec 2021 10:07 EST

Andrew uses the Architecture Advisory Forum as a regular and recurring place and time for conversations. It's a weekly, hour-long, open invite meeting used to gather advice and share information across a broad group.


Use a general purpose language to manage the interface evolution

Tue 07 Dec 2021 09:50 EST

Many commercial integration tools market their ability to own the integration landscape and call out to general purpose languages as needed. While Brandon can appreciate the marketing behind such messaging — it promotes product penetration and lock-in — as architectural guidance, it is exactly backwards. Instead, we should almost always manage the interface evolution in a general purpose language for at least two reasons: so we can better manage the complexity of maintaining a clean interface, and so that we avoid the gravitational pull of our tool's mental model when making strategic integration decisions.