Почему некоторые программисты ненавидят часть разработки пользовательского интерфейса? [закрыто]


54

Многие программисты, которых я встречал, всегда говорят, что «он не парень с интерфейсом». Дело в том, что в настоящее время разработка, будь то веб, Windows, Linux, OSX или любой другой тип разработки, теперь включает в себя программное обеспечение с красивым пользовательским интерфейсом. Почему многим разработчикам не нравится работа интерфейса?


54
потому что они не дизайнеры :)
Махмуд Хоссам

17
Разработка не предполагает наличия привлекательного пользовательского интерфейса, она заключается в наличии продаваемого продукта . Любой может заставить что-то выглядеть хорошо, мало кто может заставить это работать.
Джош К

58
@JoshK - Ваш главный вопрос - точный, но я не согласен с тем, что «каждый может сделать что-то хорошее». Мы, разработчики, раздражены людьми, которые недооценивают нашу профессию («это просто печатать, как трудно это может быть?»), Поэтому давайте не будем делать то же самое с другими дисциплинами.
Стив С

20
Давайте не будем забывать, что хороший внешний вид - не самая важная вещь в пользовательском интерфейсе. Было множество красивых интерфейсов, которые было очень неудобно использовать. Я бы предпочел, чтобы графический дизайнер не проектировал пользовательский интерфейс, если бы у дизайнера не было опыта работы с людьми.
Дэвид Торнли

17
@Josh K: прочитав «Дизайн повседневных вещей», я думаю, что все наоборот. Заставить что-то работать - самая легкая часть Заставить его работать так хорошо, что пользователи будут интуитивно понимать его, ему нравится, и он захочет использовать его снова, гораздо сложнее.
nikie

Ответы:


102

Я тоже не пользователь UI. Ну, я делаю пользовательский интерфейс на своих собственных проектах, но на работе я не имею к этому никакого отношения - моя работа заключается в интуиции приложения, а не в интерфейсе.

Кроме того, я думаю, что это скорее скука, чем ненависть. Разработка интерфейса - сложная и сложная часть. Реализация в основном тяжелая работа. Существует очень мало проблем или нововведений в том, как можно реализовать пользовательский интерфейс, и только очень много раз можно поставить флажок на экране, прежде чем слегка помешать. И это даже не касается тратить часы на выравнивание пикселей "просто так".


63
+1 за "выравнивание пикселей" просто так ", я ненавижу это. Это на 99,9999% идеально, но пользователь хочет, чтобы граница вокруг рамки, которая не должна быть в первую очередь, должна быть шириной 2 пикселя, а не 1, и более светлого оттенка синего, но не светлого оттенка. было 2 ревизии назад, темнее. И так далее, и так далее ... Вот через что я сейчас прохожу. Приложение работает на 100%, но я получаю утомительные запросы, чтобы изменить корпус этой подсказки и удалить период ... это то, на чем сосредоточены мои "тестеры" ... совсем не функциональность.
CaffGeek

3
@ Роберт Харви, это ежедневная борьба. Хотелось бы, чтобы у нас был один или два выделенных пользователя пользовательского интерфейса ... это также помогло бы решить нашу неспособность стандартизировать наш пользовательский интерфейс для наших основных приложений.
CaffGeek

23
+1 за то, что вы заметили, что гораздо интереснее спроектировать графический интерфейс, чем создавать его.
jprete

5
Реализация никогда не должна быть тяжелой работой. Если это так, у вас либо плохо структурированная архитектура, либо неэффективный процесс. Мы программисты, если мы делаем то, что может сделать машина, мы должны автоматизировать это .
Великолепно

10
Я думаю, что автоматизация - это великая цель, но мне еще предстоит увидеть автоматизированный макет пользовательского интерфейса, который не нуждается в настройке для адаптации к видению дизайнера или предпочтениям клиента. И тогда есть только простые технические ограничения - например, если вы используете WinForms, ваши параметры автоматического макета будут ограничены. Я думаю, что веб-приложения лучше, чем настольные приложения, но если мы не сможем телепатически создать макет пользовательского интерфейса и подключить его, я думаю, что все равно будет приложено немало усилий. Я с нетерпением жду, чтобы оказаться неправым в этом вопросе в будущем. :)
Адам Лир

55

Создание хорошего пользовательского интерфейса включает в себя множество различных навыков, чем написание некоторого внутреннего кода.

Внутренние требования обычно могут быть определены как черный ящик, х входит, и ожидается, что у должен выйти. Чтобы заставить его работать, нужно реализовать логику, и вы можете программно проверить, работает ли он или нет.

Чтобы создать хороший пользовательский интерфейс, вы должны учитывать удобство использования, визуальный дизайн, макет и тому подобное, например, цветовые схемы. Немного художественного творчества - это бонус, и многие программисты не считают, что у них это есть. Логическому мозгу решение проблемы пользовательского интерфейса может показаться субъективным, поскольку нет единого правильного ответа или простого способа проверить, что это сделано «правильно».

Я думаю, что многие программисты, которые не имеют большого опыта работы с пользовательским интерфейсом или не провели много исследований, не понимают, что за хорошим дизайном пользовательского интерфейса стоят правила и наука, как с точки зрения удобства использования, так и с точки зрения дизайна (например, цвета). теория).

Конечно, у некоторых программистов нет проблем с этим аспектом, но они ненавидят его, потому что многие пользовательские интерфейсы просто скучны в коде. Они могут состоять из множества повторяющихся работ, таких как страницы форм для страниц администратора, где они просто должны быть функциональными, и при этом не возникает проблем с дизайном.


3
Написание бэкэнд-кода также включает в себя множество различных навыков (в отличие от того, что, по-видимому, подразумевается в вашем первом комментарии), это просто другой набор навыков.
Матье М.

2
@ Матье так и есть, и я никогда не говорил, что нет. Я имел в виду, что кодирование пользовательского интерфейса включает в себя много разных навыков, чем внутреннее кодирование. Пожалуйста , не думает , что я принижение фоновым кодирования, это то , что я в основном делаю для жизни :)
Alb

+1: это сложно, и нормальный подход к разработке программного обеспечения просто не работает для графики. Если это уродливо, оно остается безобразным.

18

У людей просто разные интересы. Некоторых программистов больше интересуют структуры данных и алгоритмы, некоторые - архитектура, некоторые - удобство использования и дизайн пользовательского интерфейса - или любая комбинация этих и других ниш. Каждый из них требует разных навыков и разных способов мышления о проблеме. Если вам нравятся низкоуровневые гайки и болты программирования, возможно, вас не так сильно волнует, как думает пользователь, или наоборот.

Лично я попал в последний лагерь - я бы скорее разработал пользовательский интерфейс, чем сложный алгоритм. Это просто та вещь, которая мне кажется интересной.


15

Хороший или плохой дизайн пользовательского интерфейса довольно субъективен , и я думаю, что программисты в целом находят его непривлекательным. Несколько десятилетий усилий по количественной оценке и квалификации хороших методов пользовательского интерфейса помогли создать некоторые общие правила, которые можно применять, но чаще всего для того, чтобы действительно определить, является ли пользовательский интерфейс полезным, требуется много A / B-тестирования и других пользовательских наблюдений. методы.

Хотя в программировании, безусловно, существует субъективность, обычно вы можете указать на некоторую форму объективных причин того, почему один выбор лучше другого: скорость выполнения, требования к памяти, гибкость для удовлетворения возможных будущих потребностей, практики, которые наглядно доказали свою эффективность в прошлое и т. д. Защита определенного выбора пользовательского интерфейса - и, следовательно, даже принятие самого выбора - обычно унижается до «мне нравится», что является совершенно другим аргументом в поддержку.


2
на месте, «субъективное» раздражает. Возьмите с собой двух человек, и у них будут разные мнения о том, что такое хороший пользовательский интерфейс. Вы не можете юнит-тестирование аспекта GUI (не совсем). и т.д ...
Матье М.

13

Лично мне не нравится разработка пользовательского интерфейса, потому что я не очень хорош в этом. Существует ОГРОМНЫЙ элемент пользовательской психологии, который я не очень хорошо понимаю. Я думаю, что моя самая большая проблема в том, что я не могу поставить себя на место пользователя. Я не знаю, как создавать интуитивно понятные макеты, потому что я не знаю, что интуитивно понятно для пользователя, и при этом я не знаю, как сделать вещи красивыми.

Я не обязательно думаю, что некоторые программисты ненавидят разработку пользовательских интерфейсов так же, как они ненавидят делать вещи, в которых они не очень хороши. Просто случается так, что есть много разработчиков, которые не очень хороши в разработке пользовательского интерфейса.


+1 - «Программисты ненавидят делать то, что они не умеют делать». Это точно. Когда вы делаете это в личном проекте, это практика и может быть весело, но когда вы делаете это для своей работы - это производительность, а если у вас нет навыков, это просто стресс.
lunchmeat317

11

Проблема с дизайном пользовательского интерфейса в том, что у всех есть мнение ... И нет правильного или неправильного ответа. С другой стороны, разработчики любят черно-белое и логику. В компании любого размера все с этим согласятся 1+1=2, но спросите, какой шрифт облегчает чтение (Comic Sans Obviously)... будьте готовы к потопу. Десять тысяч разных ответов, и все правы, потому что все разные.


6
О Боже, Comic Sans ...
Maxpm

+1 для черно-белой логики. Я действительно ненавижу принимать решения о вещах, которые не имеют правильных или неправильных ответов (разработка пользовательского интерфейса, решение, где жить, что есть на ужин и т. Д., Смеется).
Дан

7

Как разработчик, которому действительно нравится работать над пользовательским интерфейсом (в частности, я сделал свою большую долю в веб-дизайне), я ценю, когда кто-то, у кого нет навыков, остался в стороне от этого.

Разработка требует умения хранить много данных в уме и иметь дело со многими одновременно. Дизайн пользовательского интерфейса требует возможности сводить его как можно меньше к минимуму, не жертвуя его целостностью. Я люблю вызов этого; и я съеживаюсь, когда вижу, что кто-то создает пользовательский интерфейс, который представляет собой неуправляемые данные на экране. (Я также абсолютный фанат, когда дело доходит до макета, теории цвета и т. Д.)

С другой стороны, я ненавижу вещи низкого уровня. Я никогда не буду касаться кода для драйверов, ядер или чего-то подобного: shudder: Я оставлю это «парням без пользовательского интерфейса», и я рад, что кому-то еще нравится это делать, иначе это никогда не будет сделано.


6

Я думаю, это зависит от того, использует ли большинство программистов левую часть своего мозга.

Хороший источник для дальнейшего чтения этой темы.

введите описание изображения здесь


6
Вам может понравиться книга « Прагматическое мышление и обучение: рефакторинг вашей посуды» , она дает новый способ осмысления различий в левом / правом мозге. На самом деле, он переименовывает их в линейный и богатый режим, и это действительно очень хорошее чтение.
CaffGeek

@Chad Спасибо Чад! Я рассмотрю это!
Амир Резаи

+1 за то, что поднял это. Backend app dev очень аналитичен, в то время как внешняя работа гораздо более креативна. Некоторым людям нравятся оба, но многим нравится придерживаться их соответствующих ниш.
bunglestink

Немного дополнительной информации для тех, кто может быть заинтересован: на самом деле не на 100% ясно, какое полушарие играет большую роль в определении математических способностей .
Дэн Тао

Я не согласен с тем, что «музыка» подпадает под функции правого полушария мозга, тем более что она сгруппирована с «искусством». Музыка чрезвычайно математична и логична, тогда как искусство - полная противоположность (возможно, за исключением пиксельной графики, где технические ограничения вновь вводят логику в «искусство»).
Дан

6

Разработка пользовательского интерфейса становится сложной, потому что вы получаете слишком много информации от не тех людей. Все они специалисты по графическому дизайну. Их не где найти, если вы хотите узнать формулу чего-то.

Они не знают, чего хотят, но знают об этом, когда видят, у них нет вкуса, и те, кто обладает властью принимать решения, не будут использовать приложение в любом случае, но уверены, что оно должно быть зеленым. Вы следуете рекомендациям для хорошего пользовательского интерфейса, например, ограничивает количество полей в форме, и вы получаете запрос на добавление еще 50 полей, потому что они «нуждаются» во всех из них, а размещать их на отдельных вкладках - слишком много усилий. Вы знаете, так же, как Excel. Крестьяне!

Вы не можете сделать это. Я сидел на собрании, где два верхних сотрудника бухгалтерии (ок. 500 тыс. В год) в крупной юридической фирме полчаса спорили по поводу ярлыка на странице для выставления счетов, которую использовали адвокаты. Предполагалось, что это поможет юристам понять. Почему бы просто не спросить адвокатов? Слишком легко. Таким образом, ИТ-отдел получает 50 телефонных звонков от юристов, желающих узнать WTF «Остаточная чистая сумма счета» и почему она указана в форме ввода времени.


5

Некоторые люди любят брокколи, некоторые нет. Возможно, нам придется есть это, но нам это не должно нравиться, и мы не собираемся наслаждаться этим, когда мы его едим. Мало того, мы избежим того, чтобы съесть это столько, сколько мы можем.

Есть много других вещей, которые можно кодировать, кроме только пользовательского интерфейса. Встраиваемые веб-службы, службы Windows (не так уж много пользовательского интерфейса в микроволновой печи) - это лишь несколько примеров.


9
Пользовательский интерфейс, как правило, становится коротким на микроволновке, поэтому большинство из них отстой.
Роберт Харви

4
С микроволновой печью дело обстоит так: когда у вас есть хороший, с хорошим пользовательским интерфейсом, где вам не нужен очень конкретный порядок кнопок для выполнения задачи, вы даже не думаете об этом. Но когда вы покупаете эту дешевую микроволновку для подвала или что-то еще, вы сразу же замечаете, насколько ужасен пользовательский интерфейс. Вы должны запомнить точные порядки нажатия кнопок. Я выбираю уровень мощности раньше времени? Или после? Нужно ли начинать готовить раньше? и т. д. и т. д. ... А когда нужно читать скрытые внутри инструкции ?! UGH! Хороший пользовательский интерфейс должен быть «невидимым» для пользователя.
CaffGeek

Страшная метафора. Я люблю брокколи, но ненавижу дизайн интерфейса. ;)
Дан

4

Это может быть потому, что - в некоторых случаях - инструменты, которые специально разработаны, чтобы помочь вам нарисовать пользовательский интерфейс вместо этого сосать мертвых обезьян через соломинку.


4

В разработке пользовательского интерфейса есть определенные вещи, которые трудно понять правильно.

Макет является одним из них. Я создаю пользовательский интерфейс более 15 лет и до сих пор не нашел достойного решения для управления макетом.

Другой - это маршрутизация событий - даже с архитектурой MVP и другими объектами, предписанными инфраструктурами, я бы сказал, что в наиболее сложных пользовательских интерфейсах есть проблемы с маршрутизацией событий, которые могут быть обнаружены, если какая-либо из инфраструктур тестирования сможет их хорошо решить.


3

Я знаю, что раньше я ненавидел UI dev, потому что это было очень утомительно и медленно, особенно написание кода макета для позиционирования вещей в форме или в winow. Теперь с инструментами дизайнера пользовательского интерфейса, такими как Forms Designer в Visual Studio, мне это почти нравится . Другие причины ненавидеть это, я слышал от других, включали «это глупо», «это всегда слишком сильно меняется», «это не достаточно сложно», «это утомительно / скучно».


4
Как вы отвечаете квадрат с вашим именем пользователя? :)
Роберт Харви

@ Роберт Харви: Достаточно справедливо! Конструктор форм хорош, но когда вы начинаете увлекаться универсальными контейнерами пользовательского интерфейса, он начинает задыхаться. Или, по крайней мере, VS2008 сделал. Еще не пробовали 2010, но я подозреваю, что у него могут быть похожие проблемы? В любом случае проблема была в конечном итоге решена (см. Мой самый первый пост на SO). Есть и другие вещи, которые его душат, но он убирает достаточно скуки, и я обычно наслаждаюсь дизайном / разработкой пользовательского интерфейса.
FrustratedWithFormsDesigner

3

Почему не всем шахматистам нравится создавать шахматные доски и фигуры, с которыми они играют?

Это не странно, что некоторым людям это не нравится ... странно, что вы ожидаете, что мы должны.


1
шахматисты не разрабатывают шахматные доски и фигуры, потому что эти образцы уже более столетия стандартизированы международной шахматной федерацией (ФИДЕ), и эти стандарты были приняты повсеместно.
jwenting

2

Мне нравится работать над пользовательским интерфейсом. Это не всегда верно для меня, но мое удовольствие от работы с пользовательским интерфейсом возросло, так как я стал лучше за последние несколько лет. Я знаю, что некоторые разработчики не должны быть допущены вблизи таблицы стилей или цветовой палитры. Это определенно другой набор навыков, и не у всех это есть.


2

Я не столько ненавижу работу пользовательского интерфейса, сколько ненавижу некоторые фреймворки пользовательского интерфейса. Например, я программирую на .NET более 10 лет. Фреймворки для создания веб-приложений великолепны (ASP.NET WebForms и ASP.NET MVC). Но фреймворки для написания настольных приложений, ну, я их не люблю (WinForms и WPF).

Поэтому в этом отношении написание приложений с графическим интерфейсом - это скорее аспект использования фреймворков, который мне не нравится.

Есть еще один аспект. Я часто работаю с приложениями корпоративного типа, то есть с приложениями, в которых настольное приложение должно получать данные с сервера. В этом случае существует так много слоев преобразования данных из одного формата в другой, что становится действительно скучно.

Например, приложение получает информацию через серию объектов DTO. Затем приложение создает свое собственное модельное представление данных (без повторного использования тех же классов домена, которые были созданы на сервере). Классы модели используются моделью представления (в шаблоне WPF MVVM), которая предоставляет свойства модели.

Это часто, когда одни и те же данные представлены разными классами. И это становится скучно. Но это проблема, характерная для этого типа настольных приложений.

В этом типе приложений также есть интересные проблемы, такие как то, как мы получаем изменения от одного клиента для немедленного обновления на другом клиенте.


++ Я знаю, что ты имеешь в виду. В качестве последнего пункта о распространении обновлений между клиентами я использую опрос (обычно 1 секунда), но это, вероятно, работает только для довольно небольшой БД и небольшого числа клиентов.
Майк Данлавей

2

Я не большой поклонник разработки пользовательского интерфейса по следующим причинам:

  1. Как разработчик, у вас меньше свободы для создания: клиент может видеть и иметь мнение о каждом небольшом аспекте пользовательского интерфейса, на который вы должны реагировать. Вы будете получать запросы, такие как: изменить цвет этого; переместите эту кнопку туда; неважно, отодвинь его назад. Внутренний код редко виден.

  2. Пользовательский интерфейс более сложный, а серверная часть более «платоническая». В то время как я видел уродливые беспорядки внутреннего кода, я думаю, что он более чистый (с точки зрения кода), чем код пользовательского интерфейса. Пользовательский интерфейс может быть действительно чистым и хорошо разработанным для пользователя, но, поскольку я являюсь разработчиком и трачу больше времени на код, чем на его использование, мне больше нравится чистить код.

  3. Я чувствую, что пользовательский интерфейс - это скорее «слесарное дело», чем бэкэнд, то есть меньше возможностей для умных алгоритмов и действительно толкает ваш мозг до предела.


1

Я делаю как пользовательский интерфейс (рабочий стол, а не веб) и внутренние кишки.

Количество, которое мне нравится или не нравится, зависит от того, сколько я могу сделать, используя что-то вроде предметно-ориентированного языка (DSL).

В области пользовательского интерфейса то, что я представляю пользователям, и сложность информации, которую я от них получаю, таково, что я бы сошел с ума, если бы мне пришлось использовать типичные инструменты, такие как дизайнеры форм, множество обработчиков событий, MVC , все эти "современные" вещи. К счастью, десятилетия назад я обнаружил, что я считаю лучший способ - создать DSL для него и работать в этом направлении. В настоящее время я называю это «Динамические диалоги», и он основан на управляющей структуре, которую я называю « Дифференциальное выполнение» . Хорошей новостью является то, что для данной функциональности исходный код примерно на порядок меньше, что позволяет мне добавить гораздо больше функциональности в пользовательский интерфейс. Плохая новость заключается в том, что, насколько я ни пытался этому научить, мне не особо повезло с передачей технологии.

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

Одна из причин, по которой пользовательский интерфейс так труден, заключается в том, что все еще есть много «клея», который невозможно сделать с помощью DSL - управление сетками данных, всевозможные способы сортировки данных, все, что попадает в зияющую «трещину» между чистым пользовательским интерфейсом и базовым языком.

Итак, ваш вопрос был «Почему некоторые программисты ненавидят часть разработки пользовательского интерфейса?». Я ненавижу это только из-за того «клея», для которого у меня нет DSL.


1

Честно говоря, я считаю, что найти лучший GUI-инструментарий, а затем изучить все тонкости этого - это PITA ... не говоря уже о том, что вы не изучаете много UI в колледже, и я новичок, так что ...... ..


1

Помимо того, что уже было сказано (это утомительная, скучная, разочаровывающая работа по ее кодированию, и дизайн обычно выполняется заранее кем-то, кто не имеет ни малейшего представления о том, какие проблемы его идеи вызывают у тех, кто пытается их реализовать), важным фактором является то, что вы Вам приходится работать с людьми, чьи представления о том, что вы должны делать, постоянно меняются, гораздо больше, чем у бэкэнда. В результате вы стреляете по движущейся спецификации еще больше, и эти люди, как правило, тоже придирчивы. У меня буквально были неудачные тесты пользовательских интерфейсов, потому что компоненты находились в 1 пикселе от места, которое, по мнению тестируемого, должно было быть. Это сработало? Да. Выглядело ли это хорошо? Да. Но он начал считать пиксели, и что-то было не так, как остальные пиксели, поэтому он отправил его на доработку.


1

Еще несколько моментов:

1) Дизайн пользовательского интерфейса может быть сложнее проверить, конечно, вы можете проверить, выполняет ли эта кнопка то, что нужно, но проверить, сложнее ли ее использовать. Как насчет тестирования, если его можно будет использовать с человеком с ограниченными возможностями?

2) Многие программисты не обучены этому и не знают об этом много.


1

Дело в том, что многие инструменты / фреймворки / API пользовательского интерфейса плохи, сложны, далеко не интуитивно понятны. Я разрабатывал с Win32 API на C / C ++, с javax.swing, CSS и т. Д. С тех пор я ненавижу заниматься разработкой пользовательского интерфейса ... До фреймворка Qt!


1
Вы имеете в виду, что вы устали от инструментов, которые больше не используются (большинство людей не будут использовать Win32 для программирования пользовательского интерфейса в наши дни)? Извините, я просто не считаю это обоснованным.
user16764

1

Будучи студентом CS, вас научат структуре данных, базе данных, C ++ ... кроме пользовательского интерфейса. Таким образом, вы не будете в этом хороши с самого начала . Если вы не очень хороши в этом, вы будете ненавидеть это.


Многие университеты и колледжи предлагают курсы дизайна UX. Часто как часть их учебной программы CS.
user16764

1

Проработав обе стороны монеты, то есть дизайн пользовательского интерфейса и бэкэнд-код, я обнаружил, что обе стороны монеты - это одно и то же.

Требования, которые отличаются от того, что вы делаете изо дня в день, приходят не всегда, и сейчас, когда эра CRUD вращается вокруг всех сервисов, становится скучно.

Как бы то ни было, кодирование внешнего интерфейса позволяет улучшить взаимодействие и сумасшедший динамизм, который, в сущности, сводит на нет неопытную руку в дизайне внешнего интерфейса. Я лично изучил трудный путь во внешнем интерфейсе и с комфортом могу сказать, что проектирование внешнего интерфейса гораздо более интересное и сложное.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.