Implementation details will make or break your design. There is little point to creating the best user experience in the universe only to have the implementation turn it into 1990’s internet all over again.
There is a disconnect between designers and developers especially in the startup space. Developers are tasked with making some very complex things happen in an absurdly short timeframe. It’s easy to get tied up on a task for a lot longer than was estimated and quickly blow a sprint’s velocity. As such, developers are often under tremendous pressure to deliver and some parts of the user experience may seem pointless or extraneous to them.
This time pressure may also push developers to design sub-optimal code just to try to hit their deadlines. Something that works well with 100 users may fall flat with 10,000 users. Developers have a lot of challenges to juggle. If they’re not careful, they’ll deliver something that is ultimately not scalable, but that meets every single requirement on launch. Great initial quality, but unreliable in the mid term is a delayed path to a bad user experience that can be difficult to recover from.
There are plenty of considerations for your team when designing and implementing a product or feature set. Let’s take a look at a few.
Using a design language or framework
Design languages like Google’s Material Design help the designer and developer stay in sync when it comes to details like interactivity, feedback, as well as (to an extent) look and feel. When following a design language, there are often multiple implementations of the language that can be used by a developer as a simple drop in library or module. This can save a developer a ton of time, and ensures that details like responsive feedback are handled in a standard way.
Using third party software and services
Inevitably when you’re connecting to third party services like social media sites, the user experience will be altered and can sometimes suffer. You don’t always have control over how these services behave, and you have to be careful that they don’t screw up what you’ve worked so hard to polish.
When examining third party software and services your team will need to factor in the effects on your product. For example, can the third party service be customized sufficiently to match your look, feel, and flow so that the transition is seamless? Does the integration take the customer completely out of your UX and into completely alien territory?
Does the integration require you to use popup windows that may be blocked and cause a user to get stuck on a step they can’t complete?
My recommendation? Get your whole team together and take all of this into account before making a decision on who you invite into your sandbox.
Is your software designed to be quick and responsive? When the user completes an action do they have to wait more than a second or two for it to complete? If so, is there anything you can do about it?
Some implementation decisions are pretty simple. For example, to minimize delays for the download of external content such as images and videos, you should always employ a content delivery network like Amazon CloudFront. This takes your content and copies it all around the world, minimizing physical distance, which affects round trip delays for requests and responses. Not only is your content distributed and downloaded from the closest available server, it also sits in a datacenter with extremely fast and unthrottled connections to the internet. CDNs can make the difference between an image appearing instantaneously and a user thinking your app is broken because an image takes too long to start showing up.
When it comes to accessing structured data in your application, there are very few operations that should be slower than sub-second. To ensure a good user experience, programmers should make sure the proper indexes are in place to match the most common usage patterns for the data.
When using NoSQL systems, developers must take the time to understand that sometimes the structure of the data itself must be designed around the use case to perform optimally.
Other delays that create bad user experiences
Queues in general are often the sources of delays the wreck the user experience, but the worst kind has to be email queues that aren’t being emptied fast enough. You’ve probably experienced this as requesting a password reset in one of your favorite applications and receiving it 15-20 minutes later. Or, even worse, signing up for a service and having to wait for a confirmation email that seems like it never got sent. Oftentimes you’ll sign up again with a different email address thinking you messed something up before the first confirmation hits your email box an hour later.
Make sure all your email deliveries are timely. If there are other queues being used in the core of your product, make sure sufficient monitoring is in place to know when they’re not performing well.
The takeaway? Implementation is everything. A great idea and a great design is worthless if what makes them great is lost in translation.