Six products that did not feel like one company
When I joined BlackBerry in June 2017 there was no formal design system. Customers told us moving between our products did not feel like the same experience, because it was not one. I proposed Material Design as a starting point, won engineering over before I won executives over, and spent six years turning it into 45 governed components. Then Figma arrived and we rebuilt all of it.
Customers moving between products felt like they were dealing with different companies.
60-second read
No formal design system. Products looked and behaved differently, and customers told us it did not feel like the same company moving between them.
Start from Material Design rather than inventing a language, so there was something to scale and customize instead of a blank page.
Proposed it, won engineering and executive buy-in, ran the audit and interviews, published it, and chaired the working session that kept it alive for six years.
45 documented components with full prop and state matrices, built with front-end, and rebuilt from scratch after the Figma migration.
01 · Shipped
A governed component library co-owned by design and front-end, published where the whole organization could reach it, and maintained through a weekly intake for six years.
02 · What customers were telling us
Our experiences did not feel like one family. They lacked consistency, and the feedback we kept getting from customers was blunt: it did not feel like the same experience. Things behaved differently and looked completely different when you moved from one product to another.
That is not a visual complaint. A customer who has learned one of your products should not have to relearn navigation, states, or terminology to use the next one. Inconsistency is a tax you charge your own users.
What I set out to do
Bring the work under one central team. Establish one style through a single design system. Standardize the process and the tools so iteration got faster, delivery got predictable, and feedback had somewhere to go.
The team rebuild is its own story. This one is about the system.
03 · Buying a starting point
After many discussions with executive management, and especially with the very large engineering development organization, I proposed we use Google's Material Design as the basis. Not as the final answer, but as a starting point we could scale and customize along the way.
Designing a proprietary language from nothing would have made the first argument about aesthetics. Adopting a credible public one made the argument about adoption instead, which is a much easier argument to win and a much faster one to start.
04 · Three steps before building anything
Internal audit
We catalogued every component and behavior across every product surface and sorted them into logical buckets, structured the way Atomic Design structures them. You cannot consolidate what you have not counted.
Stakeholder interviews
I interviewed stakeholders to map expectations and find shared goals. The real outcome was a partnership with engineering, because that is who would have to build it with us.
A publishing plan
We picked the easiest path to distribution rather than the most sophisticated one. InVision, because the org was already there for specs and designs, so the system was accessible on day one.
First we had to define the words
Before the organization could formalize anything, we had to answer three questions in writing. Obvious in hindsight, and the reason the proposal survived contact with people outside design.
- What is a design system?
- What is the difference between a design system and a pattern library?
- What goes into a design system?
Then I deliberately narrowed the first release to three things: navigation, color, and iconography. Enough to be visibly useful, small enough to finish.
05 · Expanding it
Once the first three were refined, we expanded. We collaborated with development to build out a Storybook while the design team built the library in Sketch, and the documentation grew to cover the thing most libraries skip: the anatomy and the per-product scoping.
06 · Keeping it alive
A design system is never truly done. It is fluid, and it changes as the design evolves, which means the governance matters more than the library.
Weekly working session
A standing meeting with the design team plus our product and engineering counterparts. It functioned as an intake: new components introduced, existing ones optimized, decisions made in the room.
Front-end pairing
Each designer worked directly with front-end to prioritize components, so a pattern went live roughly as the design was finished rather than months later.
Jira tickets
Every component tracked with an owner and a deadline. Unglamorous, and the reason the system did not quietly stall.
07 · Then we migrated to Figma
The part that did not go to planAll of it went well until we moved to Figma and discovered we could not meaningfully migrate the Sketch library. There was no import path that preserved what we had built. We would have to rebuild it.
Six years of accumulated decisions, and the tooling change reset the artifact. Not the decisions, which is the saving grace of having documented behavior rather than appearance, but every component had to be rebuilt by hand.
Three months, one component at a time
- Imported each existing component one at a time.
- Observed exactly where it broke rather than assuming.
- Made the necessary structural changes, since Figma components are not Sketch symbols.
- Shared progress regularly so teams could test drive it and tell us what was wrong.
08 · Where it landed
45 components, each documented as a full matrix rather than a happy-path example. Variant, size, icon placement, and state, crossed against each other and drawn. These are on MUI 5, which is the Material foundation from the original 2017 proposal, six years and one tool migration later.
09 · What changed
For customers
- Products started to read as one family rather than six acquisitions.
- Navigation and states behaved the same way across surfaces.
- Learning one product made the next one easier instead of neutral.
For the team
- Designers and front-end shared one source of truth and one vocabulary.
- Components shipped roughly as the design finished, not months after.
- New work started from existing patterns rather than a blank file.
- A standing intake meant the system absorbed change instead of decaying.
The library was the artifact. The weekly working session with product and engineering in the room was the actual system.
10 · Takeaways
Trade-offs
Consistency is not a visual preference. It is the difference between learning a product once and learning it six times.
