How to help your team deliver architectural changes incrementally

hliyan
The Engineering Manager Guide
3 min readFeb 24, 2022

--

Image credit: Imran shaik, YouTube.

Agile methodologies suggest that software be developed and delivered in small, non-breaking increments. This generally involves slicing a feature vertically into small “featurettes” (or user stories), rather than horizontally into front-end and back-end tasks. While this is relatively easy to do with user-facing features, it can be quite challenging to break a large architectural task down into small increments that can be deployed without breaking some other part of the system. But with some careful thought, this is not impossible!

Consider the following example: an e-commerce application that currently has a single price per product, needs to be updated to support multiple different prices, based on location.

For simplicity, let’s assume the system stores data as NoSQL:

{
productId: "123",
name: "Bluetooth speaker",
price: 120.00
...
}

The UI changes for location-based price display to buyers is relatively straightforward. However, changing the entire system back-end to support this change (converting the price field from a primitive type to a data structure) can be complicated:

{
productId: "123",
name: "Bluetooth speaker",
price: {
"default": 120.00,
"ab": 119.00,
"cd": 121.00
}
...
}

--

--

hliyan
The Engineering Manager Guide

Designing and developing software for 20 years. Ex London Stock Exchange Group, Ex Sysco. Currently leading engineering at :Different. Views personal.