Я делаю как пользовательский интерфейс (рабочий стол, а не веб) и внутренние кишки.
Количество, которое мне нравится или не нравится, зависит от того, сколько я могу сделать, используя что-то вроде предметно-ориентированного языка (DSL).
В области пользовательского интерфейса то, что я представляю пользователям, и сложность информации, которую я от них получаю, таково, что я бы сошел с ума, если бы мне пришлось использовать типичные инструменты, такие как дизайнеры форм, множество обработчиков событий, MVC , все эти "современные" вещи. К счастью, десятилетия назад я обнаружил, что я считаю лучший способ - создать DSL для него и работать в этом направлении. В настоящее время я называю это «Динамические диалоги», и он основан на управляющей структуре, которую я называю « Дифференциальное выполнение» . Хорошей новостью является то, что для данной функциональности исходный код примерно на порядок меньше, что позволяет мне добавить гораздо больше функциональности в пользовательский интерфейс. Плохая новость заключается в том, что, насколько я ни пытался этому научить, мне не особо повезло с передачей технологии.
В области, не связанной с пользовательским интерфейсом, я извлек урок из ряда продуктов, которые начинались как DSL, которые можно использовать из командной строки, и к которым впоследствии был добавлен пользовательский интерфейс. Это дает опытному пользователю что-то, где он может обойти пользовательский интерфейс, а обычному пользователю - то, что он может использовать случайно. (Примеры: R, SPlus, Matlab, SAS, WinBugs.) Таким образом, наш продукт имеет язык командной строки для экспертов. Я люблю разрабатывать такие вещи с помощью парсера, генератора кода, прекомпилятора и механизма моделирования во время выполнения. Усилие, затраченное на это, по меньшей мере, в 10 раз меньше, чем на пользовательский интерфейс.
Одна из причин, по которой пользовательский интерфейс так труден, заключается в том, что все еще есть много «клея», который невозможно сделать с помощью DSL - управление сетками данных, всевозможные способы сортировки данных, все, что попадает в зияющую «трещину» между чистым пользовательским интерфейсом и базовым языком.
Итак, ваш вопрос был «Почему некоторые программисты ненавидят часть разработки пользовательского интерфейса?». Я ненавижу это только из-за того «клея», для которого у меня нет DSL.