At Evervault, we dedicated December to doubling down on developer experience (DX) with a team-wide commitment to what we’re calling DXmas. In this, the fourth post in our DXmas series, we’re sharing some of what we’ve been busy working on over the month and highlighting how we’ve applied the principles for good DX introduced in this series.
First, let’s quickly recap the principles from our first DXmas post:
1) Show, Don’t Tell
It's essential to show developers working examples of your product in action. Seeing it in action proves to them that it works as expected and makes it far easier to imagine what they can build with it.
2) Gradually Reveal Complexity
Planning the learning curve for your product is a delicate balancing act: too steep, and you'll scare everyone away; too gentle, and you'll miss opportunities to create value for your customers.
3) Deliver on Developers’ Expectations
Work to ensure that your product works as expected, and where that’s not possible, clearly signpost any shortcomings so developers don’t waste their time.
4) Earn their Trust
Trust is hard to win and easily lost. You must implement proper API versioning, so changes don't brick workflows. Earning their trust means recognising that any regression is unacceptable. It means responding to support queries in minutes, not hours or days.
5) Don’t Hinder the Builder
Here are some things we’ve shipped from our DXmas list:
Your authentication flow is the front door to your product. We wanted to redesign everything making the registration page more persuasive and reassuring. We also reduced the number of clicks required for both login and registration.
Removed 2FA by default
2FA is important, especially if you’re an encryption company. That being said, we didn’t want brand-new users to have to setup on registration; it’s a considerable point of friction. 2FA is now off by default and enabled at the team level.
Function Environment Variables
Evervault Functions allow users to process encrypted data. Like most serverless functions, these can consume environment variables. You can now import, copy and paste, or drag and drop environment variables directly into the Evervault dashboard.
Lots of developers like to skip docs and dive straight into code examples. For those developers, we’ve started to populate an examples repo for common Evervault use cases and configurations.
In charts, two points are connected to form a line. If there’s only a single point, a line can’t be drawn, and users would see an empty chart despite having data. If there’s only a single point, we now draw a little dot to represent that entry. Small but mighty.
One of the more significant pain points in our developer experience was the inability to test code to be deployed in Functions locally. It was a real nuisance for our customers to have to write code, deploy it, wait 2 minutes, and then find out they forgot to import some node module they forgot they were using. The whole flow was the antithesis of our fifth principle - we were severely hindering the builder. Not only that, but the debugging process was worse than developers would expect it to be because we weren’t delivering on the core functionality that developers would expect to exist. Now with v3.1 of our CLI, you can simulate your Function runs locally, and we’ve introduced a new ev encrypt command to let you encrypt strings locally so that you can test these local Functions using similar payloads to what you’d send to real Functions. To get started using them install or update the Evervault CLI using either of the two commands below.
sh <(curl https://cli.evervault.com/v3/install -sL)
Outbound Relay DX Improvement
Relay is Evervaults encryption proxy. Inbound Relay automatically encrypts sensitive data at the field-level before it enters your app and Outbound Relay decrypts it as it leaves and before it reaches your trusted destination.Before this change, the configuration for Outbound Relay lived in two places - the UI and our customer’s code. The configuration in the customer’s code was used to determine for which traffic Outbound Relay would be enabled; and the configuration in the UI set the behaviour of Outbound Relay when used with particular domains. But this setup was very confusing. Most of our users expected that if they configured an Outbound Relay in the UI, all their traffic to that domain would go through Outbound Relay, but that wasn’t the case.
This month we shipped a feature where our SDKs automatically pull their Outbound Relay configuration from the UI, so it no longer has to be created in two places. This reduces complexity for our users and is more in keeping with their expectations, so it directly addresses DX principles 2 & 3.
Our first DXmas post featured this quote from Pablo Picasso
“When art critics get together, they talk about Form and Structure and Meaning. When artists get together, they talk about where you can buy cheap turpentine.”
We hope that we have delivered plenty of turpentine over these that followed the first post; and that you have all learned about the importance of Developer Experience and how to ensure a good one across your Documentation, Website and Product. In all, we’ve shipped over 20 improvements since December 1st. If you’d like to see them for yourself, you can create your free Evervault account today.