Cadence-Based Development
How We Build Better Products With Rhythm

Rhythm is a fundamental aspect of daily life, whether we realize it or not. From the beating of our hearts to the natural cadence of our speech. Rhythm is an essential part of how we perceive and interact with the world around us.
In the realm of product design, understanding and utilizing the power of rhythm can make a significant difference in the user experience. By creating a cohesive and consistent rhythm when building products, we create the foundation to build better products that are enjoyable to use and maintain.
In this blog post, we will explore the concept of rhythm in product design and examine some examples of how it can be leveraged to enhance user experience.
Understanding Rhythm
Rhythm can be complex and unpredictable, with variations in timing and emphasis of beats. But it can also be simple and straightforward, with a regular pattern of beats that repeats throughout a piece.
Rhythm is not only what we hear and see but also the void in between. It includes the pauses and the silence between the beats. A universal and fundamental concept and it is part of our daily life, whether we notice it or not.
It can be explained through our sleep-wake cycles, our meal times, how we breath and through our heart beats.
On a wider level it is manifested through how we express ourselves through our tone of voice and how we write. How we choose to design buildings and how we as societies plan traffic-flows through our communities.
Expanding our view to the beautifully designed rotations of our planet and moon as part of our solar system. Enabling us to experience seasons, daytime and through the nights. In darkness and in light.
In fact, we can break it down into a smaller component, the pulse.
Pulse refers to the steady, underlying beat or tempo that we usually experience through a piece of music. It is the consistent, regular, and measurable pattern of time that a listener can feel in their body. For example, when you tap your foot or nod your head to a piece of music, you are responding to its pulse.
From Life Pulse To Patterns
A moment I will never forget is the day back in January-2015, when my wife and I got it confirmed that we will be blessed with a child.
We were at the maternity care center and were just about to start the process of looking into other ways to get pregnant. After years of trying to grow a family we came to a point when we started to imagine how a life would be just the two of us.
Until this day, right after our honeymoon we had a scheduled meetup with the doctor and this is one of the days in our lives when it pointed in another direction.
We entered the doctors room with the expectation to hear what other types of options we might have to get pregnant but came out with a 360 perspective on life. All thanks to an ultrasound machine.
The continuous beat of our son's pulse was clearly transmitted through a little piece of technology. We could clearly hear and also see on a little screen the pulse of a new life that had been created. I still can feel the BPM's in my head today, almost 8 years later.
We jumped out of our chairs with joy! My wife rushed to the doctor and hugged her (after kissing and hugging me of course), since she was the messenger forwarding the universal signs of life. The pulse of our son.
An unforgettable moment in our lives.
Rhythm and its fundamental part of our lives is so profound we cannot neglegt what role it has on us. On how we live, work and the way we get through everyday life.
Sometimes you can here a friend claim "I don't have rhythm in me, like you do", for example when enough social pressure has been created to move his body to a beautiful musical masterpiece.
The fun part is: I never accept these type of statements.
They are misconeptions. We all have rhythm in us.
Moving on to how products are built, it is inevitable to not incorporate rhythm.
How we structure our code, visual components and when we choose to release new features.
As I like to see it, rhythm takes us through 3 main stages:
- The What: The end product. Most likely and hopefully a solution to a problem. The product is built with tools and technology best suited to solve the itch for the customer and user. In the end, it boils down to carefully crafted code and design.
- The How: The methods, principles and ways to get to the end product. Strategic design decisions are also included in the how stage.
- The When: Time is our limiting factor in all aspects of life. Hence setting plans based on milestones, iterations and defining the ready state is crucial to get progress through our projects.
In this article we will scratch on the surface of The What, the code parts more specifically.
Rhythmic Coding
In the context of programming, rhythm refers to the patterns and structure of code that enable it to be easily understood, maintained, and modified. Rhythm in code is similar to the concept of rhythm in music, where it involves the use of patterns and repetition to create a consistent flow.
Here are a few examples of how rhythm is important in code:
Indentation
One of the most common ways to establish rhythm in code is through indentation. By indenting code blocks consistently, it becomes easier to see the structure of the code and understand how different parts of the program relate to each other.
public class Example {
public static void main(String[] args) {
int x = 5;
if (x > 3) {
System.out.println("x is greater than 3");
} else {
System.out.println("x is less than or equal to 3");
}
}
}
In this example, indentation is used to create a rhythmic pattern that helps us understand the structure of the code. Each time we open a new block of code (in this case, with the if
statement), we indent the code inside that block to make it clear where that block begins and ends.
Naming conventions
Another way to establish rhythm in code is through the use of consistent naming conventions. By following a consistent naming convention for variables, functions, and other elements of the code, it becomes easier to understand what each element does and how they relate to each other.
public class ShoppingCart {
private int itemCount;
private double totalCost;
public ShoppingCart() {
itemCount = 0;
totalCost = 0.0;
}
public void addItem(Item item) {
itemCount++;
totalCost += item.getPrice();
}
public int getItemCount() {
return itemCount;
}
public double getTotalCost() {
return totalCost;
}
}
In this example, naming conventions are used to create a rhythmic pattern that helps us understand the purpose and structure of the code. We use PascalCase to name the class ShoppingCart
, and we use camelCase to name the instance variables itemCount
and totalCost
.
White space
The use of white space, such as blank lines between code blocks or around function definitions, can also help establish rhythm in code. By breaking up the code into smaller, more readable chunks, it becomes easier to understand and modify.
public class Example {
public static void main(String[] args) {
int x = 5;
int y = 10;
if (x > y) {
System.out.println("x is greater than y");
} else if (x < y) {
System.out.println("x is less than y");
} else {
System.out.println("x is equal to y");
}
}
}
We also use spaces to separate keywords, operators, and operands, making it easier to parse the code and understand the logic. For example, we use spaces around the greater than and less than operators to make it clear what they are comparing.
Code comments
Adding comments to code can also help establish rhythm by providing context and explaining the purpose of different parts of the code. Comments can help break up long blocks of code and make it easier to understand how the code works.
public class Example {
/*
* This is a multi-line comment that explains what the class does.
* It can span multiple lines and is often used to provide an overview
* of the purpose of the code.
*/
public static void main(String[] args) {
int x = 5; // This is a single-line comment that explains what the variable does.
int y = 10;
if (x > y) {
System.out.println("x is greater than y");
} else if (x < y) {
System.out.println("x is less than y");
} else {
System.out.println("x is equal to y");
}
// This is another single-line comment that explains what the code does.
// It is often used to provide additional context or to document edge cases.
}
}
In this example, comments are used to create a rhythmic pattern that provides additional context and code clarity. We use multi-line comments to provide an overview of the purpose of the class, and we use single-line comments to explain what individual parts of the code do.
By using comments effectively, we can create a consistent rhythm that makes the code easier to read and understand.
Comments help us explain the logic behind the code, document edge cases, and provide additional context that can be useful to other developers.
In this way, comments help us build better products by making our code more approachable and easier to maintain over time.
Next Track
Overall, rhythm is important in product development because it helps teams to establish a consistent pace of work and progress towards their goals. By establishing a clear rhythm, teams can avoid burnout, maintain motivation, and deliver high-quality products on a predictable timeline.
In an upcoming article we will explore the product design domain and to understand how the power of rhythm can make a significant difference in the user experience.
Maildrops & Articles
Join my circle and get updates when I write something new. No spam ever.