Work CV WritingExploration Contact

REWE Design System

Horizontal design solution for a complex architecture of vertical microservices.

The challenge

Centralize the design reference for all designers and enable them to contribute to production directly. Overcome the technical barrier of a microservice architecture in which the services output their own frontend, built on an arbitrary tech stack.

Success scenario

“REWE’s frontend is unified in experience, style and performance, while still allowing fault isolation and technical freedom for the development teams.”

Context

After designing the recipes and offer section for rewe.de it became clear to me that the larger design team wasted enormous resources in trying to synchronize the designs across all the engineering teams by hand. It was also a futile effort most of the time, since the results were not aligned in their style and function.

The famous library overload and stale resource syndrome, caused by the lack of a reponsible maintainer
The famous library overload and stale resource syndrome, caused by the lack of a reponsible maintainer

Simply re-using once solved components wasn’t an option, since all teams released their software in microservices, each of them their own frontend as well. There were lots of teams that had no frontend-engineer to begin with, and they had free choice of their tech stack. The requirement was that the build output was HTML, CSS and JS, the source behind it could be whatever the team wanted.


This however means that designers can’t roll out UI and UX changes easily, since they have to be consistent across the entire product landscape. Changing the tiniest thing becomes a gargantuan task of team synchonization, to ensure a smooth roll-out across all services. Someone has to watch over all duplicated parts and ensure that our quality criteria are met.

Swapping one asset required a change request and release process in 4 teams
Swapping one asset required a change request and release process in 4 teams

Persistence is everything

For the longest time, noone thought that this predicament could be solved. You just had to live with it and do your best. This was a design problem, so the designers had to solve it. Since designers typically lack deep knowledge about the technical side, little to no progress was made. Several attempts to establish a pattern library failed. The situation irked me so much that I taught myself the inner workings of our microservice architecture, to really learn and understand the problem and be empowered to discuss solutions with the developers.

Our non-invasive architecture solution, enhancing the existing structures
Our non-invasive architecture solution, enhancing the existing structures

The human element

At the start, the designers weren’t on board. The feedback I got from questionnaires and workshops was that they preferred to stay independent and free to diverge from a common UI quality. The downsides of confusing control elements for the end users and increased development resources did very little in convincing them to adhere to a common design system.

The power of direct control and responsibility

Since the UI contralization effort included me setting up a token system anyway, I thought about the established workflows the designers use to ship their product. I go into more detail about the theme editor in the case study for it, in short this is the tool that set of the lightbulbs over their heads, that made them understand the incredible benefits the UI centralization brings.

Token overview site I wrote that automatically shows all the tokens avaiable to use, including the ones used in a given theme
Token overview site I wrote that automatically shows all the tokens avaiable to use, including the ones used in a given theme
Theme editor UI with component and layout preview, right in the browser
Theme editor UI with component and layout preview, right in the browser

Convincing engineering managers and leadership

The designers were on board, leadership and tech was not yet convinced. So I set up a demonstration for them that shows the effect on the metrics they value most: time and cost.


To show the benefits of using a centralized system I created a small task for a group of frontend developers: write a simple example interface two times, first without and then using the system. The outcome impressed them:


67% improved time-to-ship, 54% less code written.

The coding comparison timelapse to drive the point home for everyone. Left: using the system, right: writing it the usual way
Clipping from the results presentation, a great success to celebrate
Clipping from the results presentation, a great success to celebrate