A lot of product designers, UX designers and other professionals working with digital products usually come to the field with some prior knowledge of design and design principles. These are clearly the most important skills for our work but in my practice working with web applications in the last decade I have realized that to be a highly effective designer we need to start learning some skills that we may have not previously associated with design but are critical for the design of products.
1. Understanding backend and apis
Let’s say we are designing a way for users to search results. We want the search to be fast and intuitive so we design a filter box that will automatically search as we type. Front end implementation of this is pretty easy and they can even use some tricks like debouncing to make sure there is no flickering as you type quickly. However it’s likely that the backend team will have some concerns about this choice. What you are asking is for every keystroke (or every few, depending on your debouncing), the backend return a set of data with the correct filter criteria. They will quickly remind you that thousands of people at the same time may be requesting the exact same thing and you have introduced a very heavy lift for the backend and possibly some frustration as results are delayed and users are frustrated. So depending on the constraints of the backend you may want to instead put a specific button to only search after the writing is done. But this may not be the case depending on what kind of filtering you are talking about and there are multiple ways for the load on the backend to be reduced with smart coding.
This is similar with APIs as well. A lot of good backend data transfer is done through APIs so that there can be a systematic and structured way to ask for data. You need to familiarize yourself with the API to be able to make design decisions. For instance how many records does it return by default, how does it paginate, does it follow an existing API Structure. It would also be good for you to know and understand JSON, a very popular structured object format.
2. Understanding performance Performance is how fast an operation can be done and usually it’s not something designers need to worry about. Good developers have experience in how to make things faster and some of them are pretty clever. For instance the concept of “virtual scroll”, where users think that they are scrolling through a very long list but in reality the front end is loading only the items that will be shown next and instead of creating thousands of rows elements they reuse the ones that are visible on the screen.
Sometimes though design forces a type of structure that may slow things down. For instance you may have put a way for a user to duplicate an item on the page and you give them a text box to define how many they want to recreate. Now a user may create thousands of the same item to view on the same page adding to the number of elements that will need to be drawn in the browser. Or let’s say you are showing a chart that on hover for every item will show a real time value of a metric that is very complex to calculate on the backend. The chart will take some time to load and the developers will be wondering if showing this value on hover is really the best idea.
There is a legitimate question to ask here. Should it really be the concern of the designer to worry about performance? In theory no but in reality this comes up relatively often. Sometimes you need to stand your ground and it will need to be the ingenuity of the developers to come up with a performant solution. But sometimes you may need to rethink your approach. A general guideline for UX design is that humans are not able to process very large items themselves in the first place. For example creating thousands of elements on the page will help users very little because they can only digest a couple of them at a time, so it’s good practice to show a few items at a time. Also beyond a certain level events don’t need to happen so fast. Movies change frames around every 40 milliseconds and we don’t seem to notice that a lot.
Luckily in these days both front end and back end technologies are far faster than before and usually front end calculations happening on the user computer will have a lot of resources. These become issues often when the effect is multiplied by a significant amount. So as long as you keep the interactions and calculations simple and move heavy lifting to the backend (which is easier to scale on the spot), your designs will work well.
3. Working with data
While not all design work will require you to analyze data, you need a level of data literacy. Data literacy is the ability to interpret data results, understand data concepts and know which data points fit the context that you need.
For instance if you are doing a lot of qualitative research you should know what representative sampling is or what different types of sampling methodologies are. If you are using quantitative methods, A/B testing etc, you should understand statistical significance. You should also be very familiar with descriptive statistics and measures like mode, mean, median, standard deviation, z-scores etc. These are all introductory concepts in statistics but it will help you in significant ways.
For instance lets say you are looking at prior use of a feature and you are given a number of 44 average views of the feature in the last quarter. This isn’t very informative and does not give you enough sense of what exactly going on. You need some more indicators of the general spread and frequency patterns. Do you have an outlier (an enthusiastic user) that significantly moves the average? How has adoption changed over time? And is your metric for usage really getting the right information to measure it (validity).
At this point you may feel a little overwhelmed to think that not only you need to know how to design products but you also need to know how some engineering and data science concepts work. But this information is very useful, especially if you are trying to move up in your career to manage UX work more generally. Remember that learning is incremental and some of this learning will come with experience. I would recommend that you ask some of your developer friends or colleagues as you have questions. They will most likely be happy to walk you through some of the concepts. Also remember in your communication with your colleagues to be receptive to their concerns. If something is very difficult to do you will need to do a good job explaining to them why it makes good UX. Also when difficult tasks require a lot of engineering work your managers will also be impressed if you can make a good business case for the change.