Workfront - Design System
Workfront is a modern work management platform designed to connect people to work and accelerate organizational success across the enterprise. Our mission is to make businesses work better.
During Summer 2018, I was given the opportunity to work at Workfront in Lehi, UT as a UX Design Intern. During my time at Workfront, I was able to integrate knowledge and theory learned in the classroom in a professional environment.
ACCOMPLISHMENTS
Built a rich text editor, drag and drop pattern, and an updated date picker for the design system
Learned how to build microinteractions
Learned how to use Principle, an animation tool
During my first month at Workfront, I worked with a senior UX designer on building and defining new components for the design system. I helped build 3 components: rich text editor, an updated version of the date picker, and drag & drop.
THE PROBLEM
Currently, Workfront does not have a unified design language. With the design team growing rapidly, there are many inconsistent styles and components within the product.
THE GOAL
The goal is to build a design system for Workfront. With a design system, we can improve usability and create a unified design language. It helps increase familiarity with the users due to the standardized components used throughout the whole software. In addition, this can help designers prototype faster.
DRAG AND DROP
THE PROBLEM
The drag and drop component occurs in many different places and for different objects. There were many inconsistencies of how the drag and drop component worked. I was tasked to redesign it using our new design system.
TABLES
I explored other drag & drop components.
MICROINTERACTIONS
After some exploration of the drag and drop components, I did some research on microinteractions. I learned more about the components that are critical to building a successful microinteraction.
The components are defined as:
Trigger: what initiates the interaction
Rules: defines what happens after trigger is performed
Feedback: the signal to the user that their action has been acknowledged
Loop: determines the length of the microinteraction or if it repeats
Then, I defined the components of the drag & drop interaction.
01 TRIGGERS
Mouse component
Knurling appearing when hovered
02 RULES
User can rearrange column headers in a table
User can rearrange rows in a table
03 FEEDBACK
Mouse components
Knurling appearing when hovered
Additional border color
Object pops out
Drop line appears
LOOP
Interaction does not repeat
I made a story of how the interaction worked all together after defining the components.
Hover over object, a “grabbing” hand and a knurling icon will appear as a visual cue to let the user know they can take action
When clicked and dragged, the object will pop out and go into a new state (“current state”), users will see a “previous state” for the original position
A drop line will only appear if the object reaches the midpoint - showing feedback on where the item will be dropped
Users can release the mouse and the object will be moved
Drag and drop interaction is complete
Then, I made two different iterations of how the drop line interaction would work.
Drop Line:
Shifting Rows:
Idea 1: line will appear to show where object will be dropped
Simple, easy visual cue to show where object will be dropped
Clear, quick feedback to the user
Idea 2: the rows will shift as you are dragging around the row
Too much visual interaction happening at once
Can cause confusion to the user
Now that I know more about how microinteractions worked, I explored some more.
I iterated on 3 versions of the current states and received feedback from the UX designers.
The gray color blends into data table, can get lost easily.
This has enough color so it grabs the user's attention.
Too much blue can be blinding to users.
The drag handle indicates that the row is draggable. Displaying a drop line indicates the specific position of where the object will be dropped. Having a "previous state" reminds the user where the original position of the element was while it is being dragged.
I created the microinteraction on Principle, and then I went around and asked for feedback. Some people stated that the words shifting around was choppy.
After receiving feedback, I created another version of the microinteraction.
FINAL
RESIZING
Having a drag line appearing allows the user to know which column they are resizing.
DOCUMENTS
Exploration on drag and drop document patterns.
I created several iterations and went around the team for feedback.
Having a previous state and and a “drop” state allows the user to know that the files they are dragging are in the drop zone.
CHALLENGES
Need to a better way to communicate which elements were done or updated, which old elements shouldn’t be used anymore, etc
People keep rewriting the master file
WHAT I LEARNED
Components may not always work for certain use cases and can be limiting
Design systems must be maintained and updated often as the product evolves or when other challenges arises
Design systems bridges the gap between UX and engineers
WHAT I LEARNED AT MY INTERNSHIP
The rotation program at Workfront exposed me to different areas of the product and allowed me to gain a better understanding about Workfront and how it functions. I was able to contribute to multiple projects in a cross-functional environment (UX/PM/engineering).
Get feedback often. Collaborate with everyone in team. Have brainstorm sessions with PMs, engineers, and UX. Test and validate your designs.
I was able experience what it was like to work in a company that truly values design and to be treated as a full time UX designer.
I was able to present my design work to teams and managers for review, and I learned to iterate on feedback.
I wrote more about my learnings here. Feel free to check it out.
I’ve also written a short article about design systems here.
OVERALL CHALLENGES
Understanding how an agile environment works
In school, you're told what you should be doing, but at a real job, you lead your own design process
IF I HAD MORE TIME...
Create a version for an overflow toolbar for the rich text editor
Work more on the drag and drop component - there are more use cases I did not define such as bulk selecting rows
Error states