Чому ваш AI-додаток здається повільним (навіть коли це не так): ілюзія часу очікування

Додаток здається повільним, коли користувач не отримує жодного відгуку під час очікування, а не тому, що саме завантаження триває довго. Виправте це за допомогою відгуку в межах 100 мс, скелетних заглушок замість порожніх екранів і індикаторів прогресу для очікувань понад три секунди.

Ваш додаток отримує дані за 1,2 секунди. Людина здатна помітити затримку від 100 мілісекунд. Ви працюєте у 12 разів швидше, ніж людське сприйняття, — і все одно це відчувається повільним. Чому?

Суб’єктивна затримка — наскільки повільним відчувається додаток для людини, яка ним користується, — має мало спільного з реальним часом завантаження. Головне — чи розуміє користувач, що відбувається, поки він чекає. «Повільно» і «швидко» — це брехня; реальний фактор — це зворотний зв’язок.

Чому мій додаток здається повільним, навіть коли він швидкий?

Додаток здається повільним через те, що відбувається (або не відбувається) під час очікування, а не через тривалість самого очікування. Причина криється у трьох конкретних прогалинах: відсутність відгуку під час завантаження, порожній екран замість видимого макета та відсутність відчуття прогресу під час тривалих операцій.

1. Відсутність відгуку під час очікування.

Форма надсилається. Кнопка стає неактивною (стандартна практика, запобігає подвійним натисканням). Більше нічого не відбувається. Минає секунда. Дві секунди. Користувач не знає, обробляється запит, завис, зник інтернет чи додаток впав. Після двох секунд тиші мозок людини вже думає про те, щоб закрити вкладку.

Саме тому це відчувається повільним, хоча 1,2 секунди — цілком прийнятний час для реального обчислення. Тривогу користувача заповнює тиша.

2. Порожні екрани.

Сторінка завантажується. Заголовок відображається. А потім — нічого протягом 800 мс, поки додаток отримує список нижче. Сторінка виглядає зламаною: неповний макет, жодної заглушки, просто… завантаження. Очікування в 800 мс перетворюється на суб’єктивну паузу в 5 секунд, бо око користувача сприймає незавершеність як збій.

3. Відсутність відчуття прогресу.

Починається тривала операція. З’являється напис «Завантаження…». А що далі? Це 10% чи 90%? Чи встигне користувач випити кави, чи все закінчиться за три секунди? Відсутність прогресу породжує тривогу. Швидко + незрозуміло = відчувається повільнішим, ніж повільно + прозоро.

Як виправити додаток, який здається повільним?

Три виправлення усувають три причини вище: показувати відгук миттєво, щойно користувач діє; заповнювати порожній простір заглушкою, поки завантажуються дані; і відображати реальний прогрес для всього, що триває довше кількох секунд.

Виправлення 1 — показуйте щось одразу

Додайте стан завантаження перед тим, як отримувати дані. Скелетний екран, спінер, повідомлення «обробляю…». Будь-що, що каже: «Я отримав ваш дотик, я працюю».

Приклад: Форма бронювання надсилається. Одразу текст кнопки змінюється на «Перевіряємо наявність…» і з’являється маленький спінер. Лише потім починається запит. Користувач бачить реакцію на свою дію миттєво, навіть якщо сама робота триває 1,2 секунди. Цей миттєвий відгук робить очікування коротким на відчуття.

Завдання для білдера: Після того як користувач натискає основну кнопку, змініть її текст і додайте стан завантаження перед відправкою запиту. Це одна інструкція.

Тест: На своєму телефоні виконайте дію. Відгук має з’явитися менш ніж за 100 мс. Якщо ви бачите 500 мс тиші перед появою стану завантаження, користувач звинуватить додаток.

Виправлення 2 — заповніть порожній простір

Замість білого екрана з написом «Завантаження…» у кутку покажіть форму того, що ось-ось з’явиться.

Реальна історія: Додаток бронювання для весільного організатора отримував список доступних дат. Замість порожньої сторінки він показує заглушки-рядки — п’ять сірих прямокутників на місці майбутніх дат. Коли реальні дати завантажуються, вони підміняють заглушки. Мозок користувача сприймає це як «миттєво», бо сторінка ніколи не виглядала незавершеною.

Завдання для білдера: Додайте заглушкову (скелетну) версію списку чи таблиці перед тим, як отримувати реальні дані. Коли дані прийдуть, замініть скелет на реальний вміст. Так, це ще один елемент для розробки. Але воно того варте, бо скорочує суб’єктивний час очікування вдвічі.

Тест: Завантажте сторінку на повільному з’єднанні (мобільний, обмежений до 4G). Ви бачите порожню сторінку чи форму? Форма перемагає.

Виправлення 3 — показуйте прогрес

Для операцій, довших за три секунди, показуйте, наскільки далеко вже просунулася робота.

Реальна історія: Форма експортує 500 рядків даних у таблицю. Це триває 4 секунди. Без прогресу: «Експортуємо…» (відчувається як 15 секунд, користувач скасовує). З прогресом: «Експортуємо рядок 127 з 500» (оновлюється кожні 200 мс, відчувається як 2 секунди, хоча сама робота не змінилася).

Чесна пастка: Якщо ви справді не знаєте, скільки часу це займе, не підробляйте індикатор прогресу. Фейковий індикатор, що зависає на 67%, підриває довіру сильніше, ніж чесний відгук «працюю». Реальний прогрес (якщо його можна порахувати) завжди кращий за фейковий.

Завдання для білдера: Для будь-якої операції довшої за 2 секунди надсилайте оновлення прогресу. Для завантаження файлу показуйте, скільки МБ уже передано. Для отримання списку показуйте «завантажено 50 елементів, отримуємо ще…». Навіть якщо ви не знаєте загальну кількість, знання того, що щось відбувається, змінює сприйняття.

Тест: Сповільніть мережу до 3G і спостерігайте. Це відчувається як зависання чи як прогрес?


Як перевірити, чи здається ваш додаток повільним?

Проведіть «тест незнайомця»: завантажте додаток на чужому телефоні, дайте людині натиснути основну дію без вашої допомоги і запитайте, чи здалося це швидким чи повільним.

Якщо вона каже «повільно», перевірте три речі:

  1. Чи побачила вона відгук протягом 100 мс? (зміна тексту, спінер, зміна стану)
  2. Чи бачила вона форму сторінки під час очікування? (скелет, заглушка, хоч щось)
  3. Чи знала вона, наскільки далеко просунулася робота? (для очікувань понад 3 с)

Якщо на будь-яке з цих питань відповідь «ні» — виправте це в першу чергу.


Швидкість — це не число. Виклик API за 1,2 секунди без жодного відгуку відчувається повільнішим, ніж операція на 3 секунди, де прогрес видно кожні півсекунди. Різниця не в додатку — вона в діалозі між додатком і людиною, яка ним користується.

Виправте зворотний зв’язок. Люди перестають звинувачувати повільність, коли розуміють, що відбувається.