May 20

Задачник юного разраба

Задача № 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) «Я добавлю это, но только если подпишете бумагу, что это ваша вина.»

3) Тихо уйти в отпуск.

Задача № 6 «Мобильное приложение для Nokia 3310»

Заказчик хочет, чтобы его React Native-приложение работало на Nokia 3310.

Какой самый вежливый способ объяснить, что это невозможно?

Задача № 7 «Баг в IE11»

Всё работает в Chrome, Firefox и Safari, но ломается в IE11.

Стоит ли вообще чинить?

1) Да, потому что «клиенты пользуются».

2) Нет, потому что «пора уже апгрейдиться».

3) Просто добавить display: none для IE11 и сказать, что это фича.

Задача № 8 «Загрузка 1 МБ за 10 секунд»

Бэкенд отдаёт JSON весом 1 МБ, а фронтенд тормозит при его обработке.

Какой самый эпичный способ оптимизировать это?

1) Перейти на GraphQL.

2) Засунуть всё в localStorage и надеяться, что пользователь не заметит.

3) Написать «Загрузка...» и вывести данные через 10 секунд — пользователь привык.

Задача № 9 «Кроссбраузерная вёрстка»

Дизайн идеально выглядит в Chrome, но в Firefox кнопки уезжают за экран, а в Safari шрифты превращаются в Times New Roman.

Сколько !important понадобится, чтобы всё починить?

Задача № 10 «Хотфикс в пятницу вечером»

В 17:55 заказчик пишет: «Всё сломалось!!!» и присылает скриншот с криво отображающейся кнопкой.

Какой будет ваша реакция?

1) «Пофиксим в понедельник».

2) Выключить телефон.

3) «Это фича, так и задумано».