The Sins and Redemptions of Randomness in User Experience
When the typical software developer makes use of a random number generator in their code, there is no sense in worrying about questions pertaining to the true randomness of the result. The difference between a random number generator and a pseudorandom number generator is usually only significant for certain academic computer scientists. Nevertheless, there are questions worth considering when using a random number generator, and situations can arise where the answers to these questions could have an impact on the user experience. Developers, architects, clients, and generally everyone that is responsible for the user experience, should be cautious whenever an aspect of the software is allowed to depend on randomness.
It is a familiar experience: You are planning to purchase something, say a new car, and you start doing online research into Audis. Soon thereafter, you start to see advertisements for Acuras and Jeeps on web pages you visit. Now, you may already be committed to the idea of getting an Audi, but if not, ads reminding you of other options can be welcoming and informative. Either way, they are not surprising; we have become quite accustomed to targeted advertising. So much so that upon seeing a random ad (and it would seem that there are still a few of them out there) people often wonder what they did to deserve it. Author and mathematical physicist, Leonard Mlodinow, noted in his best-seller The Drunkard’s Walk: How Randomness Rules Our Lives,
“… the human mind is built to identify for each event a definite cause and can therefore have a hard time accepting the influence of unrelated or random factors.”
Mlodinow’s book undertakes to remind the reader of the extent to which randomness is an operative principle in our lives – trying to get people to accept what they “have a hard time accepting.” But from a software user experience point of view, if something random is not going to be perceived as random, if it is going to be seen as somehow meaningful, then the software should take on the task of shaping that meaning rather than leaving it to chance.
What is true of advertising is true of information in general. Sophisticated users don’t expect randomness. They expect search results to be sorted by a search score, with more relevant items ahead of the less relevant. Beyond that, they expect to be able to choose a sorting criteria on shopping sites, be that chronological, geographic, or by price. If you think you have a collection of items for which the presentation order does not matter, you probably don’t know enough about your user.
For example, if a product line is available in several colors and your app presents pictures of these in a random order, consider how you might determine the user’s favorite color. You do not necessarily have to ask the user – you could just try to guess it based on the amount of time spent looking at different images. Or perhaps the user initiated an order process, selected a color, and then stopped the process for some reason. Just because an order has not been completed does not mean there is no useful information about the user to be obtained.
Like sites that collect information about a user to tailor the experience to that user, an app should be making an effort to learn about the user. If this is not happening, opportunities are being lost. Anywhere randomness is involved is a red flag indicating where those opportunities are being lost.
To be clear, this is not about uploading or sharing the information to learn about users in general – it is about localized customization of the individual app to the individual user. Also, while this touches on the related topics of big data and artificial intelligence, it does not have to be that sophisticated – it may not require that much data or complicated decision-making algorithms.
It is also important to be aware of all the potential sources of randomness. Obviously, if your Swift code contains ’arc4random_uniform()’, you have randomness. But randomness can creep in from things like arbitrary decisions about the sequences of items. Be especially alert to sequences where nobody seems to have been responsible for the decision at all – like an array of selection tabs that are in a certain order but nobody seems to have given any thought to what would be the best order. If the app is making API calls and you do not know what process is determining the order of the data that comes back, you might as well assume that the order is random and that something should be done about it.
Despite everything we have thus far noted about seeking to eliminate randomness, one would think that randomness should at least have a place in games. In Uncertainty In Games, noted game designer Greg Costikyan argues for the important role of uncertainty in players’ experience and enjoyment of games. He suggests that
“… games require uncertainty to hold our interest, and … the struggle to master uncertainty is central to the appeal of games.”
Randomness is a key source of that uncertainty. While this may not seem relevant to “serious” apps, the widely recognized value of gamification of user interactions as a means to encourage engagement suggests that there must still be some place for randomness in these apps.
But as any game player will tell you, randomness needs to be carefully controlled. Consider a trivia game in which all the questions are drawn from the same collection, a single collection for which a particular player will find some to be easy and some very difficult. Purely random selection may result in a sequence of difficult questions that frustrate the player to the point that they abandon the game. Even a sequence of questions that are too easy will fail to engage the player.
Now suppose we took the same collection of questions and divided them into different categories and difficulty levels. If the game begins by randomly choosing from the easier questions, gradually mixes in harder questions, and records response times and success rates in each category so as to determine a profile of the player’s strongest and weakest categories, the information can be used to construct a sequence of questions that engages by balancing success and failure just right to cater to basic psychology of addiction.
So even when gamifying an app, randomness should be carefully managed. But there is at least one use for deliberate and wide-open randomness – it is a great way to pop filter bubbles. Recall that a filter bubble is a form of subcultural isolation resulting from search algorithms providing their users with targeted information. In an effort to increase engagement, users end up being isolated from points of view with which they might disagree. While the extent and significance of the filter bubble phenomenon is arguable, random samplings of news stories can function like unbiased random sampling of a statistical population – they can provide an indication of the full range of the human experience.
By including an element of randomness in a piece of software, one is handing over control to mysterious mathematical processes that have no interest in or awareness of user experience. It is not that there is absolutely no place for randomness, but one should be reluctant to incorporate it without considering alternatives.