Building a Design System from Scratch

Disclaimer: Any designs featured here are recreated with all project-specific information removed

  1. The Problem
  2. User Interviews
  3. Prototyping
  4. Design Feedback Sessions
  5. Lessons Learned 

The Problem

I collaborated with a senior designer to help a team unify their brand identity across different tools – one being a custom-built application to collect data and the other being dashboards built within the Qlik software that would display the collected data. We offered improvements in the user interfaces and task flows using these tools.

Both of us joined this team at the same time and had to hit the ground running immediately since this design project had a limited time frame. We knew we needed to fill in the gaps of our knowledge so we spent a bit of time getting demos of the tools we would be redesigning and learning more about the team’s history.

From poking around in the tools ourselves, we soon discovered the different styles both within and across the tools. So the first starting point was to consolidate the fonts, colors, branding, etc. used and establish a cohesive visual language across them both. We worked on different parts of this brand guide – I worked on a component guide where I tracked all components used within the tools and included best practices and recommended use cases. This was important to work on in order to establish standards but I found it extremely helpful for gaining more familiarity with the tools I was working with. This was my first time creating a component guide, so I referenced existing guides out there (like this) to create one specifically for this team’s design system.

I would break down each component using these sections: 

Now that we had more context on the project and developed a pretty good understanding of the tools’ interfaces, it was time to work on talking to the users themselves to understand what was working well and what could be improved upon.

User Interviews

While I was working on coming up with user interview questions, I found myself struggling to narrow down what questions I wanted to ask. My lead helped me to realize that before even figuring out the questions, we had to determine what the end goal was – we needed to understand what we were delivering and what info did we need to deliver first. For example, some ideas we had were a way to organize data for their tools and a way to simplify their common task flows. If we wanted to improve how they organize data then we would need to ask about the current data collection process, why they do it that way, and if there are any requirements or clients driving this data collection.

Once we picked an end goal, the questions that we needed to ask in order to fulfill this goal became very clear.

I had never led a user interview before or ever been so involved with user research so I felt a little bit awkward conducting the interviews – also doesn’t help being someone that isn’t the best at speaking in a professional setting lol. But I did it and I’m proud!! Because we were interviewing people on the team (and not actual clients), it was less formal and I was able to be more at ease. (Though I was still sweating every time I had to do them). One thing I learned was to not really treat it so much like a formal interview but rather a flowing conversation. It was okay to not hit every question that we had and to adjust what we ask to the person we were talking to. I also made a mistake of asking a leading question so yeah definitely don’t do that lol.

The next step after the interviews was to synthesize the information we got in order to better understand the pain points and develop solutions for them. We organized the information we got from the interviews into a spreadsheet starting from quotes/notes from the interviews, summarizing them into a finding, which would then allow us to form a recommendation. Organizing it this way helped me to present our findings from these interviews to the rest of the team. For each process flow there was, I noted the pain points and success areas from the interviews, and then followed up with recommendations. For how this looked like in action, there was a process for entering data into a system that could only be explained and demonstrated by certain team members. Part of the problem here was that there was a specific order to how you had to enter the data and you had to access multiple pages to do it. It was not apparent to a new user what you had to do. It’s like if all you needed to do was shake the hand of another person but they tell you that you need to do this convoluted, secret handshake instead. Like we’re just trying to enter data in here, not memorize a trick for the circus. So an opportunity for improvement here would be to streamline the whole process from start-to-finish on one page instead of multiple and only be able to complete one step at a time – kind of like a multi-step form. 

(Will also note that each area of improvement should be prioritized, we ranked it based on what we thought was high priority and would be the most impactful change and presented this to the team to make sure we were on the same page.)

Prototyping

from lo-fi to hi-fi

Now that we identified and prioritized the areas of improvement, it was time to create prototypes of our solutions. Even though I usually love wireframing and building prototypes, it was especially difficult for me this time around. I had a bad case of fearing the “blank canvas”. I didn’t have a single clue where to start and I felt like I had to understand the full picture before I created a design. But I was putting too much pressure on myself – I knew I still had gaps in knowledge of the tools and that the project leads had difficulty expressing exactly what they wanted. So really, we could only do the best we could with what we were given and that was the reality. Once I let myself be okay with that, I became more productive and was able to produce more designs – some good and some bad. What also helped break my creative block was looking at good examples. I am a baby designer so I still need to train my eye a lot on what is considered good design – in this case, something that looks professional and modern, while being able to be implemented in Qlik. So going on Dribbble, researching Qlik dashboards, and looking at what other people have built was really helpful to me. You never know, the solution may exist out there just in a different way. 

My process to creating designs

updating the styles and simplifying the layout for an existing dashboard

During this phase, I ended up redesigning many existing dashboards using this exact design process and keeping those above tips in mind. Eventually I got into a pretty good flow starting out with low fidelity mocks and drafting requirements for each redesign. These requirements include defining the objective, user stories, guiding objective questions (related to the objective but these are big picture questions that we aim to answer), guiding process questions (what we aim to answer in terms of what tasks the user wants to do), and data/visualization/style requirements (this is what the developer would reference in terms of what colors and data sources to use in the implementation). 

Design Feedback Sessions

So you have your prototype and now it’s time to get feedback on it. The thing about design is everyone has an opinion on it. That’s probably a quote someone’s said once. In fact, this was one of the more difficult parts of doing design work. It’s interesting that many non-designers seem to have strong opinions on design but as a developer, I’ve never seen non-devs question how or why devs implement something in a certain way.

So what to do?

Here are some of the things I learned on how to receive feedback on your designs:

But in the end, the reality of it is: not everyone is going to like what you design. What is important is that the key decision makers approve of it. That makes me uncomfortable to say but that’s the truth. Anyway, life as a corporate designer amirite?

Lessons Learned 

Overall, this was such a valuable experience for me as someone that was always interested in doing more design work but felt a little intimidated to try. After going through this experience, I have even more respect for designers and unfortunately, did confirm my own fears about design work. At the same time, I felt proud of challenging myself to work in such a capacity. I went from writing code every day and occasionally doing demos of my work to having meetings every other day, presenting my designs regularly, and having to write using business-oriented language.

One lesson I learned was that if nothing is clear and you feel confused, it’s NOT YOU. It’s bad communication and it’s the result of a chaotic environment. But the work still has to be done regardless. I felt very confused a lot of the time working as a designer because I wasn’t able to elicit clear requirements from leadership. It was only by observing how a more senior designer handled the situation did I understand what I could do to create more clarity and structure for myself, but also acknowledging there are limitations that we have to accept. If we aren’t told clearly what we’re supposed to deliver or what our clients want, it’s hard to make something that will be useful to them. It’s hard to do our jobs well. And that’s something I had to accept. Sometimes I didn’t feel that great about my designs because I just struggled with getting clear answers about literally anything. I do, however, feel proud knowing I did the best I could in the environment I was in, and I won’t be harsh on myself for the quality of my work. 

In hindsight, the approach of understanding the context behind the work and doing the work at the same time resulted in a lot of extra work on our part to revise and adjust to new pieces of information. It was exhausting and stressful because I felt like nothing I made was right. I was essentially guessing based on what I knew and the info we had gathered so far. But we still really only saw a very small piece of a project that spanned across many years. That’s why, while I understand it’s part of the nature of consulting to bring people on for a short period of time to accomplish a specific task, people can’t do their best work unless you fully incorporate them into the team OR someone that knows the context works closely with you on your work.

Another lesson I learned was that team unity starts from clarity. If everyone understands the purpose of their work and they are able to succinctly explain it, then that’s a team that will operate with purpose and efficiency. But if everyone has a different idea of the purpose of their work, then there’s bound to be miscommunication and challenges around that. That’s why I learned, it’s good to establish an elevator pitch for their work. If you’re building a tool, decide on an elevator pitch for that tool. That way there’s no confusion. This is what I learned during the user interview process from my design lead. She asked great questions around having an elevator pitch and what role each interviewee saw themselves playing in contributing to that elevator pitch. If the tool’s purpose is to simplify a data collecting process, how would they contribute to that? Maybe they teach how to use the tool. Maybe they are the ones doing the data collection. And once there is this clarity, it’s a trickle-down effect. What we have to accomplish through design will be more apparent.

The biggest thing that surprised me about being a designer was I had to think about business requirements and be able to explain the value of my work often. Having to constantly justify every single choice and for others not being able to see the immediate benefits/impact was tiring. As a dev, the work that I would need to do is already decided and I have a clear end product produced from my work. But with design, it feels like you have to constantly push for your design to be built the way you intended it to be built. It’s like your designs are just a suggestion to a dev. I’ve never felt this way as a dev but I can now totally understand how helpless one can feel when you don’t have control over the end product. But one good thing about having experience as a dev is if a dev does try to tell me they can’t implement something in my design, I can literally fact check them with a, “no, I just wrote it and tested it out, so you totally can do it too.”

On the flip side, I keep devs in mind when I create a design. I try to send over any design specifications that would be helpful for development and I always think about technical feasibility. 

And lastly, probably the most important lesson I learned was: Be confident in your work! You thought your designs through and you should be proud of them. I struggled so hard to be confident in my own work, and even as a developer I still face impostor syndrome. But I take pride in that I always aim to do the best I can, and through my writing, I try to pay that respect to everything that I accomplished. Even if it was hard or didn’t really leave the best memories for me.

Similarly, I hope that other designers in their early stages like me don’t falter or lose faith in their own work. Keep on going and believing in your work. Nothing beats a jet2 holiday, except a human designer.