Creating and implementing a Design System for headless CMS
Kentico Kontent (oct 2019 - dec 2021)
Simplifying complexity and learning systemic lessons.
6min reading time
My
Role
I started and led the initiative through the stages of research and structural system and semantic definition with a multidisciplinary (design/dev) proto-team. After these stages I moved to a contributor role and helped with visual and implementation nuances.
The
Team
Throughout the 2 years of this project I collaborated and supported a broad variety of teams and working groups. From design team and initial Design system working group to cross supporting 4 development teams (total of 20+ people). More parts of the project were conducted by outsourcing partners, both in design and in development.
The
Outcome
Fully fledged and functional design system for a growing SaaS Product.
Sliming down the codebase by 22k lines of unnecessary code after the implementation of the desing system into production environment.
Product and Audience
Kentico Kontent design system – design and development teams
Audience
This project was very specific in a case that the DS we developed was practically a product of itself - but our customer was our own organization. Specifically design and development departments. The users who will benefit from it most were the people who we work with the most on a daily basis.
Stakeholders
Main stakeholders we were working with were our C-levels and executives, CEO, COO, VP product and VP of UX with a bonus of CTO in a hands-on position.
My role
I initiated and led the discussion about the need of our own design system in late 2019. From then on I led the initiative. I formed a proto-team of 2 designers and 1 developer dedicated to research both our requirements as internal customers and technical feasibility and best practices. After the definition of the system rules, topology and semantic structure I moved to a role of individual contributor and continued to help to define individual components of the design system and assure the quality of their implementation.
☝️my great colleagues from the Design team – just a part of our audience for the Design System
01
Context
During the couple of years I've been working on Kentico Kontent, the UI has changed quite extensively.
The latest big change has occured with a rebrand that happened in 2019. Product, formerly known as Kentico Cloud has got a new fresh name and brand - Kentico Kontent.
And of course change this big meant that we need our UI to reflect it. However a fairly simple change – switching to new brand palette and switching to more accessible combinations for section headers – was surprisingly costly in development time.
At the time we were seriously considering a large redesign in our roadmap for a next FY and to be honest this fresh insight was quite scary. If a fairly small and simple change cost us almost two months of 2 larger development teams, how much would it take us to do a substantial UI change in our product?
As time went on we decided to tackle both challenges (fresh, on-brand UI and Design System) simultaneously. Little did we know how big of a bite this proved to be.
Changes of the Kentico Kontent UI over last 2.5 years
02
the Process
This is a brief summary of the process we followed when creating the design system. In depth case study below
Problem definition
After our previous experiences with (slight) redesigns it was clear that we lacked the ability to make effective design changes across the scope of the whole product.
Phase 0 – Researching the problem space
This was the time when we asked the question:
What do we need from Design System?
We researched and discussed this with everybody impacted (designers, developers, content developers). We also had to address the questions of its expresiveness, technical feasibility and implementation as well as define the boundaries of what should be included in our design system.
Phase 1 – Audit and analyze
Here we've made a full blown UI audit. We mapped every piece of component in the UI, every interaction, every logical piece or composition. With a help from a developer on our proto-team we launched a CSS parser of all the styles, colours, typography styles, etc. Here we realized that our UI is much more messy and decentralized than we thought so.
Phase 2 – Systematize
This was a time for "cleanup". We organised everything into precise boxes. We created the abstract structure of the system, defined the taxonomy and semantic structure of our future design system based on the precise need of our product.
Intermezzo – New UI takes the limelight
As mentioned in the beginning, we were simultaneously working on a complete UI redesign for our app. Huge deal of the visual design work was outsourced to an external agency. Roughly at this time we received the final visuals and delivarables, so we started to define the Design System on the overlap of this new UI and our previously defined abstract structure.
Phase 3 – Define
We defined all the components of the new UI, starting with atomic things - colors, lines, surfaces, corner radii, gradients, layout rules, grids, basic typography scales etc... Every single thing was tokenized and for every single constituent of the system we defined its:
visual characteristics and attributes
basic behaviour in all states
usecases - when to use which component for what
technical and usabiltiy limitations
Phase 4 – Test and implement
We gradually build and defined more and more complex structures, and while building we also tested how various components and concepts fit together.
These definitions were then folowed upon by our development teams which implemented and tested their codebase representations. We also build and a design system library in Figma for the Design team and an extensive documentation for everyone in the company.
Early attempts at categorization
Collage of all the various buttons from our UI
Parser of all colors and typographic styles used in our app
New, accessible color palette
Example of our new semantic color system, high to low level tokens and usage guidelines in our documentation
Description and definition of an image tile component
The same component implemented in our Storybook and its various states
03
Shipping and Impact
After a longer deliberation we decided for a gradual implementation and adoption of the Design System in the product itself.
Right now, every product team that implements any new feature is obligated to implement a part of the component library into our mater codebase.
Regarding impact - since the implementation itself will take a substantial amount of time we expect a gradual return of investment, exhibited mainly by the more efficient implementation of both new UI and changes to the current one.
Right now we're measuring the percentage of already implemented components (vs. the rest of the codebase), and we're expecting to see the full impact on our ability to scale the product in the horizon of 2-3 years.
22k lines of code
☝️of unnecessary CSS
deleted from the codebase
after the implementation
of the design system
What did I learn:
This project was a HUGE exercise in systemic thinking.
How to practically lead a team
How to be a good multidisciplinary facilitator
The importance and practice of planning ahead and communicating well to all stakeholders.
The importance or early inclusion of all impacted departments
How to work on a big and long project (time division, workload balancing, team leading)
© Peter Rod. All rights reserved.
Thank you
Magna viverra aliquet eget sit amet tellus cras adipiscing enim quisque sagittis purus lorem sed consequat.
Thank you
Magna viverra aliquet eget sit amet tellus cras adipiscing enim quisque sagittis purus lorem sed consequat.
Text