Дизайн (чего угодно) - это переговоры между потребностями различных заинтересованных сторон (заказчик, разработчик, пользователи). Никто из заинтересованных сторон, как правило, не в состоянии создать лучший дизайн, потому что они стремятся лучше понять свои собственные потребности и поставить их выше потребностей других заинтересованных сторон. Хороший проектировщик может определить потребности различных заинтересованных сторон - часто потребности, которых сам заинтересованный участник не осознает, что у него есть - и найти решение, которое работает для всех.
Вы, наверное, видели это сами много раз. Пользователи думают о том, как они должны взаимодействовать с системой, обычно с точки зрения какой-то другой системы, с которой они уже знакомы. Разработчики думают в основном о том, как работает система. Клиенты обычно хотят что-то, что решит все их проблемы, или же они хотят решить какую-то очень специфическую проблему с наименьшими затратами.
Чтобы стать хорошим дизайнером, вы должны научиться перестать думать о том, как что-то реализовать. Вместо этого вы должны сосредоточиться на том, что другие заинтересованные стороны говорят вам о том, что им нужно и чего они хотят, и вы должны уметь читать между строк. Как и разработчики, клиенты и пользователи часто имеют в виду какое-то предвзятое решение, и они склонны описывать это решение вместо базовых требований. (Тем не менее, важно понимать, что иногда клиент имеет в виду то, что он говорит, когда он говорит вам именно то, что он хочет; если вы не уверены, спросите.)
Поверхностно, эстетический дизайн пользовательского интерфейса также является проблемой, с которой некоторые разработчики сталкиваются с проблемами. Я думаю, что это отчасти потому, что разработчики программного обеспечения часто не имеют большого опыта в эстетике - у студентов CS может не быть много времени на уроки рисования. Это также отчасти потому, что мы больше заинтересованы в том, как что-то работает, чем в том, как оно выглядит; нам просто все равно, имеют ли углы кнопки радиус 9 пикселей или радиус 10 пикселей. Эти два фактора, безусловно, связаны. Иногда вы можете преодолеть это, полагаясь на готовые решения в форме каркасов пользовательского интерфейса, а использование заранее разработанных компонентов имеет то преимущество, что вы визуально объединяете свою работу с другими приложениями в той же системе. Вы можете улучшить свои эстетические навыки, читая, глядя на работу других людей, и уделять пристальное внимание визуальным деталям, которые вы могли игнорировать в прошлом. Вам также следует попытаться понять логику, лежащую в основе визуальных отличий: означают ли квадратные кнопки что-то отличное от закругленных кнопок? Как используется цвет? и т.п.