ݺߣ

ݺߣShare a Scribd company logo
Чим простіше – тим краще
Станіслав Хорунжий
Про мене
• Senior Front-End Engineer у компанії
Sigma Software
• Я є драйвером JavaScript community у
компанії
• Останній рік я працюю на стартапах з
VueJS
• Вважаю що на кожному успішному
проекті повинні бути Git хуки, TypeScript,
гарний Linter, Unit тести та Lodash
Замовлення таксі раніше
1. Дзвонимо у службу таксі
2. Дізнаємося своє місце знаходження
3. Називаємо своє місце знаходження оператору
4. Називаємо адресу призначення
5. Чекаємо…
6. Дізнаемося сумму
7. Чекаємо на зворотній виклик по приїзду машини
8. Уважно слухаємо номер, марку і колір машини
9. Добираємося до адреси призначення
10. Платимо водієві гроші за таксі
Замовлення таксі зараз
Одноразова операція:
• Вибір міста (іноді автоматично)
• Введення даних кредитної карти
• Введення імені користувача (інколи реєстрація аккаунта)
1. Відкриваємо додаток
2. Вказуємо адресу призначення
3. Натискаємо кнопку
4. Чекаємо коли буде знайдена машина
5. Виходимо після нотифікації
6. Добираємося до адреси призначення
Люди звикають до простоти
Замовлення таксі зараз
1. Відкриваємо додаток
2. Вказуємо адресу призначення
3. Натискаємо кнопку
4. Чекаємо коли буде знайдена машина
5. Виходимо після нотифікації
6. Добираємося до адреси призначення
Замовлення таксі зараз
1. Відкриваємо додаток
2. Вказати своё місце знаходження (у випадку проблем с GPS)
3. Вказуємо адресу призначення
4. Натискаємо кнопку
5. Чекаємо коли буде знайдена машина
6. Виходимо після нотифікації
7. Добираємося до адреси призначення
Чим простіше - тим краще, Стас Хорунжий
Чим простіше - тим краще, Стас Хорунжий
Я звикаю до простоти
Еволюція технологій
Еволюція технологій
≠
Простий інтерфейс
Чим простіше - тим краще, Стас Хорунжий
Чим простіше - тим краще, Стас Хорунжий
Чим простіше - тим краще, Стас Хорунжий
Чим простіше - тим краще, Стас Хорунжий
Чим простіше - тим краще, Стас Хорунжий
Чому ж користувачі хочуть
витрачати свій час
на навчання?
Види додатків
Право вибору за користувачем
Відеоігри
Новинні, розважальні та інші сайти
Браузери
Плеєри (відео, аудіо)
Право выбору за суспільством
Мессенджери
Онлайн-банкінг, онлайн підтримка та т.п.
Web-монополії (Facebook, Instagram, Twitter,
Google, Youtube, Booking, Monobank)
Професійний софт
1С чи будь-яка інша онлайн бухгалтерія
Трекери часу
CRM системи
Професійний day-to-day софт (Slack, Outlook, Excel)
За правом вибору
Чому ж користувачі хочуть
витрачати свій час
на навчання?
Види додатків
Право вибору за користувачем
Відеоігри
Новинні, розважальні та інші сайти
Браузери
Плеєри (відео, аудіо)
Право выбору за суспільством
Мессенджери
Онлайн-банкінг, онлайн підтримка та т.п.
Web-монополії (Facebook, Instagram, Twitter,
Google, Youtube, Booking, Monobank)
Професійний софт
1С чи будь-яка інша онлайн бухгалтерія
Трекери часу
CRM системи
Професійний day-to-day софт (Slack, Outlook, Excel)
За правом вибору
Види додатків
Право вибору за користувачем
Відеоігри
Новинні, розважальні та інші сайти
Браузери
Плеєри (відео, аудіо)
Право выбору за суспільством
Мессенджери
Онлайн-банкінг, онлайн підтримка та т.п.
Web-монополії (Facebook, Instagram, Twitter,
Google, Youtube, Booking, Monobank)
Професійний софт
1С чи будь-яка інша онлайн бухгалтерія
Трекери часу
CRM системи
Професійний day-to-day софт (Slack, Outlook, Excel)
За правом вибору
Створення простоти там,
де все здається дуже
складним
Створення простого та
зрозумілого інтерфейсу
Хто за це відповідає?
Дизайнер
vs
Девелопер
Чим простіше - тим краще, Стас Хорунжий
Designer
Developer
Обов'язки
Дизайнер:
- UI для усіх сторінок вашого додатку
- Колірна схема, гармонія кольорів,
контрастність
- Гарні UX практики
- Надає вам усі необхідні ассети
Обов'язки
Девелопер:
- Пише код
Обов'язки
Девелопер:
- Пише код
- Перевіряє відповідність верстки дизайну
- Кросбраузерність
- Багатоплатформність
Обов'язки
Девелопер:
- Пише код
- Перевіряє відповідність верстки дизайну
- Кросбраузерність
- Багатоплатформність
- Знае те, про що мовчать дизайнера
Про що мовчать дизайнера?
1. Коли нам потрібно дізейблити контроли, та чи треба
взагалі?
2. Що повинно відбуватися поки інформація
завантажується?
3. Що повинно відбуватися поки інформація зберігається?
4. Як виглядають невалідні поля і помилки?
5. Що робити якщо в таблиці занадто багато записів?
6. А що якщо текст буде довшим ніж ширина елемента?
Дизайнер завжди відображає
ідеальний кейс
Погані UX практики
Погані UX практики
Ніколи так не роби
NO!
Не показуй fullscreen лоадер, який
пропадає через 1-2 секунди
NO!
Не зловживай тултипами, пам’ятай про
mobile
NO!
Не проводь валідацію тільки на бекенді,
навіть якщо вона дуже складна. Створюй
інтерактивні форми.
Гарні UX практики
Гарні UX практики
Завжди так роби
YES!
Завжди проводь валідацію форм та
показуй зрозумілі повідомлення про
помилки
YES!
Показуй лоадери під час завантаження
інформації, завжди і усюди
Чим простіше - тим краще, Стас Хорунжий
YES!
Не забувай дізейблити кнопку після кліку
та показуй лодер всередині кнопки:
<button @click="saveChanges()"
:disabled="isLoading">
<v-icon v-if="isLoading" icon="loader"></v-icon>
Save changes
</button>
YES!
Ніколи не треба дізейблити кнопку Cancel
у модальних вікнах.
Додай кнопку Cancel.
Або хоча б хрестик.
Будь ласка…
YES!
Для больших таблиц и списков используй
Virtual Scrolling
Чим простіше - тим краще, Стас Хорунжий
YES!
Додай можливість скасування останньої
дії (Undo), ящко це техн
YES!
Виділяй час на оптимізацію первинної
загрузки сторінки, особливо якщо у вас
є підтримка mobile
In 2018, 58% of site visits were from mobile
devices.©
Eric Enge, Stone Temple
Оптимізація загрузки
1. Lighthouse
2. webpack-bundle-analyzer
Lighthouse
webpack-bundle-analyzer
Будьте гарними
Front-End розробниками
Створюйте прості
та зручні інтерфейси
Питання?

More Related Content

Чим простіше - тим краще, Стас Хорунжий