Faccio entrambe le interfacce utente (desktop, non web) e quelle interne.
La quantità che mi piace o non mi piace dipende da quanto posso fare usando qualcosa come un dominio specifico della lingua (DSL).
Nel dominio UI, ciò che sto presentando agli utenti, e la complessità delle informazioni che ottengo da loro, è tale che diventerei pazzo se dovessi usare strumenti tipici, come i designer di moduli, un sacco di eventi gestori, MVC, tutta quella roba "all'avanguardia". Per fortuna, decenni fa ho scoperto quello che penso sia un modo migliore, che è quello di fare una DSL per esso, e lavorare in questo. 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 aggiungere molte più funzionalità all'interfaccia utente. La cattiva notizia è che, per quanto abbia provato a insegnarlo, non ho avuto molta fortuna nel trasferire la tecnologia.
Nel dominio non dell'interfaccia utente, ho preso una lezione da un numero di prodotti iniziati come DSL utilizzabili dalla riga di comando, su cui successivamente è stata innestata un'interfaccia utente. Ciò conferisce all'utente esperto qualcosa in cui è possibile aggirare 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 a riga di comando per esperti. Adoro lo sviluppo di queste cose, con un parser, un generatore di codice, un precompilatore e un motore di modellazione run-time. Lo sforzo speso per questo è almeno una potenza di 10 in meno rispetto allo sforzo speso per l'interfaccia utente.
Un motivo per cui lo sforzo di interfaccia utente è talmente strong che c'è ancora un sacco di "colla" che non può essere fatto con un DSL: gestire le griglie di dati, tutti i tipi di ordinamento dei dati, tutte le cose che cadono nello sbadiglio "crack" tra l'interfaccia utente pura e il linguaggio sottostante.
Quindi la tua domanda era "Perché alcuni programmatori odiano l'interfaccia utente dello sviluppo?". Lo odio solo a causa di quella "colla" per la quale non ho una DSL.