Faccio sia UI (desktop, non web) che budella interne.
L'importo che mi piace o non mi piace dipende da quanto posso fare usando qualcosa come un dominio specifico del linguaggio (DSL).
Nel dominio dell'interfaccia utente, ciò che sto presentando agli utenti e la complessità delle informazioni che sto ricevendo da loro, è tale che impazzirei se dovessi usare strumenti tipici, come progettisti di moduli, molti gestori di eventi, MVC , tutta quella roba "allo stato dell'arte". Per fortuna, decenni fa ho scoperto quello che penso sia un modo migliore, che è quello di creare un DSL per esso e lavorare in quello. Attualmente lo chiamo Dialoghi dinamici, ed è basato su una struttura di controllo che chiamo Esecuzione differenziale . La buona notizia è che, per una data funzionalità, il codice sorgente è all'incirca un ordine di grandezza inferiore, permettendomi di mettere molte più funzionalità nell'interfaccia utente. La cattiva notizia è che, per quanto abbia cercato di insegnarlo, non ho avuto molta fortuna nel trasferire la tecnologia.
Nel dominio non UI, ho preso una lezione da una serie di prodotti che sono iniziati come DSL utilizzabili dalla riga di comando, su cui è stata successivamente innestata un'interfaccia utente. Ciò fornisce all'utente esperto qualcosa in cui può ignorare l'interfaccia utente, mentre fornisce all'utente casuale qualcosa che può usare casualmente. (Esempi: R, SPlus, Matlab, SAS, WinBugs.) Quindi il nostro prodotto ha un linguaggio da riga di comando per esperti. Adoro sviluppare queste cose, con un parser, un generatore di codice, un precompilatore e un motore di modellazione runtime. Lo sforzo speso per questo è almeno una potenza di 10 in meno rispetto allo sforzo speso sull'IU.
Uno dei motivi per cui lo sforzo dell'interfaccia utente è così tanto è che c'è ancora molta "colla" che non può essere eseguita con un DSL: gestione delle griglie di dati, tutti i tipi di ordinamento dei dati, tutto ciò che cade nella "crepa" che sbadiglia tra interfaccia utente pura e linguaggio sottostante.
Quindi la tua domanda era "Perché alcuni programmatori odiano la parte dell'interfaccia utente dello sviluppo?". Lo odio solo per quella "colla" per la quale non ho una DSL.