There's a research field called Semiotics of Human-Computer Interaction studying user interfaces from that angle. Developers usually have a technical background from maths or engineering, and often are not aware of the importance of linguistics in our field.
Both programming languages and GUIs are languages (artificial, sure, but linguistics also study those) which are used to write expressions that can be read by humans. Semiotics, the study of signs and their meaning, provide methods to analyze how users make sense of the software artifacts (products and tools) delivered to them.
One researcher called the user interface a designer's deputy, i.e. a messenger that conveys in its entirety a message that the programmers wants to communicate to the users. This deputy must stand on its own, since it's the only information available to the user.
Users then perform sense-making on the symbols in the interface, to infer the meanings of all elements [1]. Notice that the user can't see what each interface element actually does, since they don't have access to the code; they can only guess what it does from the available symbols. If the symbols lead the user to infer an incorrect meaning, communication breaks.
[1] https://blog.prototypr.io/how-semiotics-can-help-us-in-ux-on...
The thing is: both design and programming are more often than not messy when things get real, but every programmer wants to create clean and beautiful code and every designer wants to create aesthetical designs. Many intuitively perceive this "beauty" to be in tension with the complexity of the problem that needs solving. The goal of programming and design is however not to create beauty, but to solve problems and do so beautifully and clearly communicate these solutions, because it doesn't matter how beautiful your code/design is if nobody understands it. Beauty is the cherry on top that you get to achieve once the cake below is done, tastes well and puts a smile on the faces of all the party guests. If you are good you might already plan the cherry into the shape of the cake at the very beginning — but confusing the cherry for the cake IMO means you are either not there yet in terms of your profession or the thing is a toy project to try things out specifically — which is totally acceptable if everybody involved agrees and totally egoistic and shitty if they don't. Don't agree to serious projects you are not willing to commit to once the initial interest fades.
Really good designers are about integrating both usabilty and aesthetics in an iterative process, and do so in such a way the problem is solved, and solved beautifully, all while reducing the cognitive overhead needed by users.
And this cognitive overhead is really what should drive us. The work of programmers and designers is so beautiful/dangerous because it multiplies to a thousand people for a thousand hours. Our decision affect people on a daily basis. Removing a papercut might seem like nothing, but if it avoids irritating even ten other people who use that thing 10 times a day, isn't it the obvious thing to not half-ass on, not to toy around with?
Btw. Design that is only about aesthetics is something that I call "styling" maybe we need a similar word for programmers who toy around?