Hago tanto la interfaz de usuario (escritorio, no web) como las tripas internas.
La cantidad que me gusta o no me gusta depende de cuánto puedo hacer usando algo como un lenguaje específico de dominio (DSL).
En el dominio de UI, lo que estoy presentando a los usuarios y la complejidad de la información que obtengo de ellos es tal que me volvería loco si tuviera que usar herramientas típicas, como diseñadores de formularios, muchos controladores de eventos, MVC , todas esas cosas de "estado del arte". Afortunadamente, hace décadas descubrí que creo que es una mejor manera, que es hacer un DSL para ello, y trabajar en eso. Actualmente lo llamo cuadros de diálogo dinámicos, y se basa en una estructura de control que llamo ejecución diferencial . La buena noticia es que, para una funcionalidad dada, el código fuente es aproximadamente un orden de magnitud menor, lo que me permite poner mucha más funcionalidad en la interfaz de usuario. La mala noticia es que, por mucho que he tratado de enseñarlo, no he tenido mucha suerte transfiriendo la tecnología.
En el dominio sin interfaz de usuario, tomé una lección de una serie de productos que comenzaron como DSL utilizables desde la línea de comandos, en la que luego se injertó una interfaz de usuario. Eso le da al usuario experto algo donde puede pasar por alto la interfaz de usuario, al tiempo que le da al usuario ocasional algo que puede usar de manera informal. (Ejemplos: R, SPlus, Matlab, SAS, WinBugs). Por lo tanto, nuestro producto tiene un lenguaje de línea de comandos para expertos. Me encanta desarrollar tales cosas, con un analizador, generador de código, precompilador y motor de modelado en tiempo de ejecución. El esfuerzo gastado en eso es al menos una potencia de 10 menos que el esfuerzo gastado en la interfaz de usuario.
Una razón por la cual el esfuerzo de la interfaz de usuario es tan grande es que todavía hay mucho "pegamento" que no se puede hacer con un DSL: administrar cuadrículas de datos, todo tipo de formas de clasificar datos, todo lo que cae en la "grieta" bostezante entre la IU pura y el lenguaje subyacente.
Entonces su pregunta fue "¿Por qué algunos programadores odian la parte de desarrollo de la interfaz de usuario?". Solo lo odio por ese "pegamento" para el que no tengo un DSL.