Terraform Cloud
Hashicorp
As Terraform Enterprise moved from an enterprise sales model to a SaaS one, new pressures were placed on the product.
No longer could we relay on high-touch interactions with Sales and Support to get customers using the platform. The app would need to shoulder the responsibility of onboarding users and moving them toward an Aha! moment.
As the Terraform Cloud Lead, I remedied points of abandonment, designed features for self-service, and created distinguishing capabilities for collaboration.
Onboarding
Going into this, I had a few hypotheses about trouble spots. To make sure those instincts were well-founded, I conducted moderated usability tests on the current UI.
It turned out that one phase of onboarding — connecting to a version control system — was a core point for abandonment. It was a tedious, manual setup process that people were forced to do before they understood the value of the product.
While motivated users might endure this, the masses of less-invested “window shoppers” wouldn’t.
This diagram led to an employee award for embodying a core principle; in this case, the principle was Beauty works better.
With these findings in mind, we focused our attention on redesigning the experience.
I chunked a formerly long form into three meaningful steps. This helped reduce cognitive load by making users focus on smaller tasks in isolation. In addition, we redesigned the manual setup process so that a tedious, error-prone task could be automated.
The time-to-complete for onboarding shrank from over five minutes to just a few seconds, with a commensurate reduction in errors. With this pinch-point relieved, we’re now looking down-funnel for new areas to optimize.
User management
As we evolved our billing model to one based on number of users, the prior user management system wouldn’t work. Because of Terraform Cloud’s origin as enterprise on-premises software, features common to SaaS offerings — like invitations and seat-based billing — didn’t exist.
Because there were quite a number of legacy considerations to handle, I started by diagramming user flows and iterating on these with engineers. As we gained a shared understanding of the problem space, we moved into wireframes. We revisited these occasionally as edge cases cropped up that needed additional thinking.
After this, we moved into final design. The wireframes and flows were at a high enough fidelity that engineering work could begin in parallel while I did final polish, which required collaborating with other designers to contribute new patterns to our design system.
We needed to handle users smoothly upon downgrade. Our free tier allows only 5 users without fine-grained permissions; paid tiers allow unlimited users with access controls.
This presents a problem: how do you treat excess users without full permissions during a downgrade? Escalating their privileges is undesirable in a infrastructure provisioning product.
When this occurs, non-admin users are placed into an inactive status rather than escalating their privileges to admins. This is a limbo state where we don’t let them log in, but we remember their prior privileges in case they choose to upgrade later.
Billing
Now that the product offered self-service management, we built the relevant billing pages.
Results
These changes helped us replatform an enterprise tool into a self-service offering, expanding the TAM of customers. It also paved the way for Hashicorp Cloud Platform (HCP), a suite of tools delivered as SaaS.