Задачник юного разраба
Задача № 1 «Бесконечный редирект»
Пользователь заходит на сайт, а его перебрасывает с /home на /welcome, потом на /start, затем снова на /home.
Сколько раз успеет обновиться страница, пока пользователь не поймёт, что это не фича, а баг?
Задача № 2 «Кнопка, которая не нажимается»
Верстальщик сделал кнопку #superButton, но она не реагирует на клики. При этом в консоли нет ошибок, onClick в коде есть. В инспекторе кнопка есть.
Какое самое неочевидное объяснение этой проблемы?
Задача № 3 «Случайный баг, который исчезает при дебаге»
На продакшене падает мобильное приложение при попытке оплаты. Но как только вы запускаете его в debug-режиме — всё работает идеально.
Сколько дней вы потратите, пытаясь воспроизвести баг, прежде чем поймёте, что проблема в криво собранном APK?
Задача № 4 «Зависший спиннер»
Пользователь ждёт загрузки данных 10 минут, но спиннер всё крутится, а контент не появляется.
Какой процент пользователей дождётся загрузки, если:
1) В консоли висит Failed to fetch?
2) Бэкендер говорит: «У меня всё работает»?
3) Запрос ушёл на /api/v1/getData, а должен был на /api/v2/getData?
Задача № 5 «Тёмная тема vs. Кошачий режим»
Дизайнер настаивает, чтобы в тёмной теме все тени были фиолетовыми, а кнопки при наведении мигали радугой.
Какой аргумент убедит его, что это плохая идея?
1) «Это же не 2007 год, а не MySpace!»
2) «Я добавлю это, но только если подпишете бумагу, что это ваша вина.»
Задача № 6 «Мобильное приложение для Nokia 3310»
Заказчик хочет, чтобы его React Native-приложение работало на Nokia 3310.
Какой самый вежливый способ объяснить, что это невозможно?
Задача № 7 «Баг в IE11»
Всё работает в Chrome, Firefox и Safari, но ломается в IE11.
Стоит ли вообще чинить?
1) Да, потому что «клиенты пользуются».
2) Нет, потому что «пора уже апгрейдиться».
3) Просто добавить display: none для IE11 и сказать, что это фича.
Задача № 8 «Загрузка 1 МБ за 10 секунд»
Бэкенд отдаёт JSON весом 1 МБ, а фронтенд тормозит при его обработке.
Какой самый эпичный способ оптимизировать это?
2) Засунуть всё в localStorage и надеяться, что пользователь не заметит.
3) Написать «Загрузка...» и вывести данные через 10 секунд — пользователь привык.
Задача № 9 «Кроссбраузерная вёрстка»
Дизайн идеально выглядит в Chrome, но в Firefox кнопки уезжают за экран, а в Safari шрифты превращаются в Times New Roman.
Сколько !important понадобится, чтобы всё починить?
Задача № 10 «Хотфикс в пятницу вечером»
В 17:55 заказчик пишет: «Всё сломалось!!!» и присылает скриншот с криво отображающейся кнопкой.
Какой будет ваша реакция?
3) «Это фича, так и задумано».