Eu faço tanto interface do usuário (desktop, não web) quanto interna.
A quantidade que eu gosto ou não gosto de um deles depende de quanto eu posso fazer usando algo como uma linguagem específica de domínio (DSL).
No domínio da interface do usuário, o que estou apresentando para os usuários e a complexidade das informações que estou obtendo deles é tal que eu ficaria louco se tivesse que usar ferramentas típicas, como designers de formulários, muitos eventos manipuladores, MVC, tudo o que "estado da arte" coisas. Felizmente, décadas atrás eu descobri o que eu acho que é uma maneira melhor, que é fazer uma DSL e trabalhar nisso. Atualmente eu chamo de Dynamic Dialogs, e é baseado em uma estrutura de controle que eu chamo de Execução Diferencial . A boa notícia é que, para uma determinada funcionalidade, o código-fonte é aproximadamente uma ordem de magnitude menor, o que me permite colocar muito mais funcionalidade na interface do usuário. A má notícia é que, por mais que eu tenha tentado ensinar, não tive muita sorte em transferir a tecnologia.
No domínio não relacionado à IU, aproveitei uma lição de vários produtos que começaram como DSLs utilizáveis na linha de comando, na qual uma IU foi posteriormente enxertada. Isso dá ao usuário especialista algo em que ele pode ignorar a interface do usuário, dando ao usuário casual algo que ele pode usar casualmente. (Exemplos: R, SPlus, Matlab, SAS, WinBugs.) Então nosso produto tem uma linguagem de linha de comando para especialistas. Adoro desenvolver essas coisas, com um analisador, gerador de código, pré-compilador e mecanismo de modelagem em tempo de execução. O esforço gasto nisso é pelo menos uma potência de 10 a menos que o esforço gasto na interface do usuário.
Um motivo pelo qual o esforço da interface do usuário é tanto é que ainda há muita "cola" que não pode ser feita com redes de dados de gerenciamento de DSL, todos os tipos de dados de classificação, todas as coisas que caem no bocejo "crack" entre a interface do usuário pura e a linguagem subjacente.
Então sua pergunta foi "Por que alguns programadores odeiam a parte de desenvolvimento do UI?". Eu só odeio por causa daquela "cola" para a qual eu não tenho DSL.