Я роблю як інтерфейс користувача (настільний, не веб), так і внутрішній кишки.
Сума, яка мені подобається або не подобається, залежить від того, наскільки я можу зробити, використовуючи щось на зразок мови, що залежить від домену (DSL).
У домені інтерфейсу користувача те, що я представляю користувачам, і складність інформації, яку я отримую від них, така, що я б зійшов з розуму, якби мені довелося використовувати типові інструменти, як-от дизайнери форм, безліч обробників подій, MVC , все те "найсучасніше" речі. На щастя, десятиліття тому я виявив, що, на мою думку, є кращим способом, а це зробити DSL для цього та працювати над цим. В даний час я називаю це "Динамічні діалоги", і він заснований на структурі управління, яку я називаю " Диференційне виконання" . Хороша новина в тому, що для даної функціональності вихідний код приблизно на порядок менший, що дозволяє мені вводити набагато більше функціональних можливостей в інтерфейс користувача. Погана новина полягає в тому, що, як я намагався цього навчити, я не мав великої удачі в передачі технології.
У домені, що не користується користувальницьким інтерфейсом, я взяв урок з ряду продуктів, які розпочалися як DSL, які можна використовувати з командного рядка, на який пізніше був призначений інтерфейс користувача. Це дає експертові щось, де вони можуть обійти користувальницький інтерфейс, а випадковому користувачеві дати щось, що вони можуть використовувати випадково. (Приклади: R, SPlus, Matlab, SAS, WinBugs.) Отже, наш продукт має мову командного рядка для експертів. Я люблю розробляти такі речі за допомогою аналізатора, генератора коду, прекомпілятора та двигуна моделювання часу. Зусилля, витрачені на це, принаймні, на 10 разів менше, ніж зусилля, витрачене на користувальницький інтерфейс.
Однією з причин того, що зусилля користувальницького інтерфейсу так багато, є ще багато "клею", який неможливо зробити за допомогою DSL - керування сітками даних, всілякі способи сортування даних, усі речі, що потрапляють при позіхання "тріскаються" між чистим інтерфейсом та базовою мовою.
Отже, ваше запитання було "Чому деякі програмісти ненавидять частину розробки інтерфейсу?". Я ненавиджу його лише через той "клей", для якого у мене немає DSL.