Joining from the start, as a solo designer in a brand new organization, you know the drill. You have to wear multiple hats. Once you have more designers, you have to learn how to work with each other to create consistent output. I started seeing the need of a design system when our team has 3 members (me plus 2 other designers).
Due to the urge of an early startup, things got messy really fast, we started having different perspectives on spacing, font-size, primary colors, grayscale… countless debates about these. Nightmare also knocked in when we code our design (we didn’t have any front-end engineer back then), even with careful code review, we still end up having different hex code of a blue, different variant of a secondary button,… we even had different ways of naming css classes. We couldn’t move faster because of this.
I told the guys: “Guys, this need to stop. Let’s build something we can together reuse and scale as our product grows”. Suffered enough, they agreed. And we started discussing on what will be a good color scheme, what will be in our UI Kit, how to structure our CSS folder, how we naming thing…
ACL1 was quite useful. With the Sketch file contains all the UI elements (yes, UI kit is a more common name), it helps us to work faster and more consistent. That's the main principle we had. Coding is now easier with naming convention and pre-defined classes for the same element we have on sketch. We wanted the element on web browser to look exactly like what we designed on Sketch. Pixel perfection syndrome, you name it.
We were pretty proud of our work back then. Our engineers were quite impressed with our primitive front-end works.
Like all designers out there (except unicorns) we’re no coding experts. So i have to learn how to maintain the ACL in both design and code. We need to make sure every decision has the agreement from all members. A single line of code should be reviewed carefully. We wanted a high quality foundation.
We’re quite happy for awhile. Then the company grows, more designers and engineers joined. With ACL1, whenever we design a new screen, we still have to prepare html structure and add some custom css to layout the thing. I know we can be faster if more things can be reused. Now that we have a dedicated front-end team, it’s not hard to convince them to build a robust system because they already see the benefit we brought in before: to keep the UI consistent and to work faster for them.
What i didn’t satisfy with ACL1 was, it doesn’t have much character and no concrete principles back. It was a quick solution to unify us and heading toward a better interface.
Until 2017, we have 5 designers and 5 products to work on. Tons of work. We’re really close to launch our platform and don’t want to lower down our quality, i wanted the UI to look better. While the guys already have their hands busy, as a leader, you can’t always force people to do this and that. If you want the best quality of work, you have to make sure they understand you clearly. And if they don’t have time to listen to you, you have to show them what you want. So i spent part of my working time to help elevate the ACL and having my designers to be the QAs. I also had the support from front-end team to put more complex elements/components to our library.
We transitioned into ACL2.
ACL2's tremendous update is mostly about layer styles and text styles restructuring, provides designers an easier way to make mockup. Add in a layer, pick a style and you're done, no repeative clickings, or just choose predefined symbols with overridable values. Same thing happen. We also had better documentation and principles to back the system.
Read more about it here
I gave a techtalk to convince engineers this is a thing worth building. Together.
View on Google SlidesWith front-end team joining the force, we let them take care of the code themselves as long as it's a 1:1 map with what we have in acl design.
Visit anduin.designAbstract does help a lot to manage the shared works. We avoid lots of mismatched between updates
ACL2 carries the same purpose as ACL1, that is to be a single source of how we communicate our interface to users. What i learn form working on a design system were: