The user interface (UI) vs the user’s experience (UX) is a very modern “debate” in Computer Science. This can also be summarized as the tension between usability and composability, between software that is user-friendly and software that is programmer-friendly (see this talk by Conal Elliott from Google). Consumers like software that’s easy to use. But programmers like software that’s easy to compose, i.e. to combine in unanticipated ways. Users want applications; programmers want libraries. Users like GUIs; programmers like APIs. It’s not immediately obvious that usability and composability are in tension. Why can’t you make users and programmers happy? You may be able to make some initial improvements that please both communities, but at some point their interests diverge. Looking at it another way, we can look at “operation versus expression” to express the same idea of usability versus composability (see this article by Vivek Haldar). Combining these ideas, we have these contrasts.
|Visual / GUI||Syntactic / CLI|
|Externalize knowledge||Internalize knowledge|
Neither column is necessarily better. Sometimes you want to be in the left column, sometimes in the right. Sometimes you want a stereo and sometimes you want a guitar.
When I file my taxes, I want the software to be as easy to use as possible right now. There’s no long-term use to consider since I’m not going to use it again for a year, so I’ll have forgotten anything peculiar about the software by the time I open it again. But when I’m writing software, I have a different set of values. I don’t mind internalizing some knowledge of how my tools work in exchange for long-term ease of use. Read the original article here