You can't hill climb your way to "good experience"
Hurray, I didn't somehow mess up the post send so this should be arriving at 8:05 EDT instead of 'whenever I hit the button' this time, unlike last week...
There's a long list of things that are irritating about the "new way" of working in tech, but probably for someone who's been doing product analysis for a very long time, and explicitly measuring UX-related things for a decade now, this is something I need to vent about. LLMs can do all sorts of ridiculously amazing things in generating code nowadays. They are also complete and utter garbage at creating human interfaces, and my hypothesis is that there's a fundamental gap that is currently impossible to bridge without some big breakthroughs.
Hot interface garbage on demand
I'm no stranger to slapping together silly tools and toys with the help of LLMs, and in terms of bullying them to give me the functionality I want, it's not too bad. But the interfaces to the functionality have always taken about three times the time and effort, only to end up with something that is still "really painful to use". The general idea is that, unless you explicitly work out the designs and flows and wireframes yourself to feed it into the systems, even the best models will put out something that is almost impossible for a naive user to use.
What sorts of things go wrong? There's walls of text with opaque terminology for no good reason. The ordering of steps is never clear. The location of items in a UI are almost never where you expect them. Plus, on top of all the visual chaos, LLMs can often make ridiculous mistakes mis-wiring the frontend to the backend, so you get all sorts of bugs, some of which you must manually verify yourself because there's no good way to automate testing like you can do with command line utilities or non-GUI code.
Even if you don't torture yourself with creating a GUI or web frontend and just make a CLI-only utility, models very often use multiple flags and parameters, with very verbose names and other conventions. Often functionality is grouped up unintuitively or requires running multiple steps along the processing path, all of which is very hard for a human to make sense of quickly.
It's possible to avoid a bunch of this pain if you have a very clear idea of what interactions and interfaces you want before hand, but if you leave any amount of ambiguity in your specifications, the LLM will inevitably choose "the wrong choice".
User experience is not an optimization problem
Coding agents are effectively really weird optimizers. They excel the most when their task has a very clear, objective, deterministic pass/fail criteria – hence, they're awesome at writing code and checking whether it compiles and passes a test suite. They will chug along ramming into failures until they wander to something that passes. Each failure ostensibly gets them closer to the eventual correct solution.
But the user experience and overall usability of a product is not a clear, objective, deterministic criteria. A product's experience is actually greater than the sum of its individual experiences. On any given interface for anything, from hardware to software, a confusing interface will remain confusing and hard to use for hundreds of variations and rearrangements. At the same time, it may take only a few changes for the whole interface to suddenly make sense to users. The painful part is realizing that all those changes must work together to achieve that clarity, you won't observe much improvement for each individual change.
You can rearrange 5 widgets on a page in hundreds of different permutations, but all but a handful of variations "make sense" to a user. Just think of all the usability tests that are essentially "which of these 10 places can we place the big important red button so the user actually sees and presses it without getting lost". Not even human design experts can fully predict what works with users.
Moreover, you can see this property when you try to sit down and develop "usability metrics" for any interface. Even straightforward concepts like "time to task completion" or "number of actions needed to complete an task" don't have a single correct answer. Sometimes you want friction, sometimes an improved interface takes longer to use because users are getting more value out of the interaction. I have never really encountered a usability metric that had a clean "up always better" interpretation.
So it's this non-linear, unpredictable, mess that is grounded in the many biological flaws and limitations of our human meat sacks is what I find hard to bridge. For example, it's easy to tell a modern AI agent to try to use a web interface to accomplish a task, like "go do this task on this web UI", and with some browser manipulation tools like Playwright, an agent can interact and attempt the task. But surprisingly, agents usually do better at this sort of task than typical humans because, among other things, LLMs 'read' all the text and instructions on a page whereas real humans typically don't bother to. They also "see" an entire page essentially at once whereas humans have very finite visual fields, attention and memory. So to a coding agent, the interface is perfectly 'usable', whereas it can be complete nonsense to a human, and it won't know that there's even a problem to fix. Same problem extends to a whole host of other issues like where calls to action are located, how things are displayed and described, what information the user needs now versus later.
Until someone manages to develop some sort of idealized simulation of a relatively clueless, inattentive, sometimes-lost human user, there's just going to be this giant gap in ... experience... that I can't see being bridged via automation. Without such a reference point to act as an oracle to determine a facsimile of 'usable', machine learning methods are going to struggle. In fact, as far as I'm aware, creating a realistic simulated user for such testing purposes is still a big open problem in the Human-Computer Interaction space.
This is also all before we get into the whole different fundamental problem we have in UX about how "personas" are crappy, unrealistic stand-ins for actual users themselves. "Average" summaries of user preferences and experiences have many blind spots and issues when designers try to make things for hypothetical personas. Maybe a magical bot that response identically to an individual human subject can dispel this basic issue, or maybe they don't and the whole project is flawed. I'm honestly not visionary enough to have an inkling where things will land.
Then, what about imitation?
Well, if we can't learn out way to good interfaces, we can just copy existing good ones, right? Except humans and entire product teams have been trying that for decades. I've literally gone to small e-commerce sites that are literal, slavish clones of the Amazon store pages, from the layout and theming down to the shape of all the widgets and buttons. That clone site weirdly less usable than Amazon's because that the smaller store just doesn't have the ridiculous near-infinite catalog of Amazon. So all the menus and categories and other things just ... made no sense. People have been trying to copy the design and aesthetics of various major products, especially Apple, for ages and we all know that "sometimes it works, sometimes it doesn't" because the "good design" doesn't exist in a vacuum but within a specific context.
I'm sure there's a bunch of startups and companies who are saying "we have tons of examples of "Good Web Design (tm)", we can surely train The Machine to create something similar. You can call me skeptical. I'm willing to bet that for the most part it's going to at best land in a very half-assed place. It feels very much like where diffusion model "AI Art" (ugh) has landed as of late, while there's been steady improvements in what those models can do, the majority of the output has a distinct Ai-ness to them that even normal people can identify now. Moreover, the results are still... not great? Given the moving target of "design taste", I'm willing to bet even the best franken-interface will have a distinct smell to them that will continue to make them awkward because they're applying the patterns on top of situations that don't call for them.
Now, if only everyone else who has access to code generation tools realizes these facts, things wouldn't be as messy as they are now.
Standing offer: If you created something and would like me to review or share it w/ the data community — just email me by replying to the newsletter emails.
Guest posts: If you’re interested in writing something, a data-related post to either show off work, share an experience, or want help coming up with a topic, please contact me. You don’t need any special credentials or credibility to do so.
"Data People Writing Stuff" webring: Welcomes anyone with a personal site/blog/newsletter/book/etc that is relevant to the data community.
Counting Stuff Official Forums: Discuss posts, or other data topics with the community.
About this newsletter
I’m Randy Au, Quantitative UX researcher, former data analyst, and general-purpose data and tech nerd. Counting Stuff is a weekly newsletter about the less-than-sexy aspects of data science, UX research and tech. With some excursions into other fun topics.
All photos/drawings used are taken/created by Randy unless otherwise credited.
Supporting the newsletter
All Tuesday posts to Counting Stuff are always free. The newsletter is self hosted. Support from subscribers is what makes everything possible. If you love the content, consider doing any of the following ways to support the newsletter:
- Consider a paid subscription – the self-hosted server/email infra is 100% funded via subscriptions, get access to the subscriber's area in the top nav of the site too
- Send a one time tip (feel free to change the amount)
- Join the Approaching Significance Discord — where data folk hang out and can talk a bit about data, and a bit about everything else. Randy moderates the discord. We keep a chill vibe.
- Get merch! If shirts and stickers are more your style — There’s a survivorship bias shirt!