Дизайн (будь-що) - це узгодження між потребами різних зацікавлених сторін (замовника, розробника, користувачів). Зазвичай жоден із зацікавлених сторін не в змозі створити найкращий дизайн, оскільки вони якнайкраще розуміють власні потреби та ставлять їх над потребами інших зацікавлених сторін. Хороший дизайнер може визначити потреби різних зацікавлених сторін - часто потреби, щоб сам зацікавлений сторона не усвідомлює, що він має, - і придумати рішення, яке працює для всіх.
Ви, мабуть, самі це бачили багато разів. Користувачі замислюються про те, як їм доводиться взаємодіяти з системою, як правило, з точки зору іншої системи, з якою вони вже знайомі. Розробники думають здебільшого з точки зору того, як працює система. Клієнти зазвичай хочуть чогось, що вирішить усі їх проблеми, або ж вони хочуть вирішити якусь дуже конкретну проблему за найменші витрати.
Щоб стати хорошим дизайнером, ви повинні навчитися заздалегідь думати, як ви щось реалізуєте. Натомість ви повинні зосередитись на тому, що інші зацікавлені сторони говорять вам про те, що їм потрібно та чого потрібно, і ви повинні вміти читати між рядків. Як і розробники, клієнти та користувачі часто мають на увазі якесь попередньо розроблене рішення, і вони, як правило, описують це рішення замість основних вимог. (З цього приводу важливо усвідомити, що іноді клієнт означає те, що вони говорять, коли вони точно говорять, що хочуть; якщо ви не впевнені, запитайте.)
Що більш поверхово, естетичний дизайн інтерфейсу - це теж щось, з чим у деяких розробників є проблеми. Я думаю, що це частково тому, що розробники програмного забезпечення часто не мають великої кваліфікації з естетики - студентам CS може бути не так багато часу для мистецьких занять. Це також частково знову, тому що нас більше цікавить, як щось працює, ніж ми, як це виглядає; нас просто не хвилює, чи куточки кнопки мають радіус 9 пікселів або радіус 10 пікселів. Ці два фактори, безумовно, пов'язані між собою. Іноді ви можете подолати це, покладаючись на консервовані рішення у вигляді фреймворків інтерфейсу, а використання заздалегідь розроблених компонентів має перевагу в тому, щоб візуально об'єднати власну роботу з іншими програмами цієї ж системи. Ви можете вдосконалити свої естетичні навички, читаючи, переглядаючи роботи інших людей, і приділяти пильну увагу візуальним деталям, які, можливо, ви ігнорували в минулому. Ви також повинні спробувати зрозуміти логіку, що лежить в основі візуальних відмінностей: чи означають кнопки з квадратним кутом щось інше від закруглених кнопок? Як використовується колір? тощо.