The Agile Way

The Agile Way

Share this post

The Agile Way
The Agile Way
Forward Compatibility
Copy link
Facebook
Email
Notes
More

Forward Compatibility

Design your software and automated tests that can cope well with future changes.

Zhimin Zhan's avatar
Zhimin Zhan
Nov 28, 2023
∙ Paid
1

Share this post

The Agile Way
The Agile Way
Forward Compatibility
Copy link
Facebook
Email
Notes
More
Share
Image Credit: https://pixabay.com/illustrations/beach-billboard-coast-feet-4179360/

In 1998, I participated in the WWW7 conference and had the opportunity to hear Sir Tim Berners-Lee (inventor of WWW and Director of W3C) deliver the keynote speech: “Forward Compatibility.” While the specifics of the speech elude my memory, the underlying concept remains vivid. In this article, I aim to delve into Forward Compatibility, drawing insights from my over two decades of software development and testing experience.

Table of Contents:
· Case Study
∘ 1. CSV version
∘ 2. XML version
∘ Change 1: Author with middle name
∘ Change 3: Author with nickname
∘ How do typical API consumers deal with the changes?
∘ Forward Compatibility for this case study
· Forward Compatibility in Test Automation

We all know “Backward Compatibility”, and “Forward Compatibility” is undoubtedly a level up. To help you understand, I will use a maybe-not-strictly-correct metaphor. PlayStation 5 console can play PS4 games; this is called “Backward Compatibility”. If the PlayStation4 console somehow can still play PS5 games, at least to a degree, it is called “Forward Compatibility”.

Some may wonder, “How could it be possible?”. In the PlayStation case, it is certainly not. But in software, this may be feasible in some areas. For instance, XML has a built-in “Forward Compablity “ design, and CSV does not.

Case Study: API That Returns Book Authors' Details

Imagine creating an API that provides information about a book’s authors using its ISBN. First, we will decide on the data format. For simplicity, the response data only had three fields: LAST_NAME, FIRST_NAME, and AGE.

1. CSV version

Example response data:

Beck,Kent,62
Fowler,Martin,59

2. XML version

<Authors>
  <Author>  
    <LastName>Beck</LastName>
    <FirstName>Kent</FirstName>
    <Age>62</Age>
  </Author>
  <Author>
    <LastName>Fowler</LastName> 
    <FirstName>Martin</FirstName> 
    <Age>59</Age>
  </Author>
</Authors>

While the XML version certainly is verbose, it does provide many benefits, one of which is “Forward Compatibility”.

Change 1: Author with middle name

During the development, a change request came: “Return author’s middle names, e.g. “Joanne Kathleen Rowling”.

Keep reading with a 7-day free trial

Subscribe to The Agile Way to keep reading this post and get 7 days of free access to the full post archives.

Already a paid subscriber? Sign in
© 2025 Zhimin Zhan
Privacy ∙ Terms ∙ Collection notice
Start writingGet the app
Substack is the home for great culture

Share

Copy link
Facebook
Email
Notes
More