Iterating on the MVP
With promising metrics and a strong response from users we decided to take the leap & iterate on our MVP. With a big piece of the puzzle—working from a single source of truth—already solved, our attention moved on to synchronous collaboration, with co-editing at the heart of it.
The Co-editing Challenge
On the surface, co-editing seems simple. When someone edits something, everyone sees it. But it's a deceptively complicated problem.
I distilled the challenge into this HMW question:
How might multiple people work on the same design at the same time without getting in each other's way?
Developing a framework: Levels of editing
I started by breaking down the editor into what I called "levels of editing". Each level had a unique set of behaviours and different usage patterns. Setting the canvas size, for example, is very different than editing a text element.
This framework coupled with usage data helped me define co-editing behaviours.
The Venngage editor "levels of editing"
Each action that a user can take in the Editor was then grouped into one of the levels:
Every editor action grouped into one of the editing levels
Once I split the editor up into these levels I began to sketch behaviours from the point of view of the Creator and the Collaborator.
Every editor action grouped into one of the editing levels
A balance of tradeoffs
With co-editing, we had to strike a balance between various tradeoffs. Users want to move in and out of designs, adding and editing without constraints while maintaining a feeling of control, knowing that their work won't be deleted or edited.
This was especially important with widget level editing. You wouldn't want someone to edit the same text you're editing.
We also had to worry about latency. It could cause designs to be out of sync and that would be terrible for a co-editing experience. We needed to know when someone was editing. We turned to the selection state. When a widget is selected, it's locked for everyone else. Once it's deselected, it unlocks and syncs across all collaborators.
When a widget is selected, it's locked for everyone else. Once it's deselected, it unlocks and syncs across all collaborators.
Impact
We noticed an immediate effect on our metrics of success once we released to 100% Business users.