Кот, код и «помидоры» — один день из жизни разработчика мобильных приложений

41_oblozhka_den-s-ekspertom-1
И бонус — инструкции, как попасть на собеседование, получить оффер в топовой компании и сварить яйцо в микроволновке

Заказать подарки, поупражняться в английском, купить билеты в отпуск — хватит пары кликов в телефоне. Но бытовое удобство пользователей само себя не обеспечивает. Выяснили, как проходит рабочий день мобильного разработчика и какой труд скрывается за привычными иконками на экране смартфонов.

circle-46-3623535

Алексей Маринин, 26 лет

Семья: есть девушка.

Должность: Senior-разработчик мобильных приложений. Работает из дома.

О компании: крупный российский маркетплейс с аудиторией в 30 миллионов пользователей. 

Страна: Россия, Москва.

8:40. Доброе утро, кот. Мой будильник откликается на имя «‎Сёма». Приходит за мной каждый день — встаю и оплачиваю сервис утреннего подъема кормом. Дальше иду умываться и завтракать. Обычно с утра ем что-то простое — например, варю яйца. Кстати, я провел несколько экспериментов по приготовлению яиц в микроволновке — вы наверняка видели такие рецепты в TikTok. В итоге удалось снизить вероятность взрыва до 25%. Нужно взвесить яйцо и рассчитать оптимальное соотношение воды к его массе. Каждое четвертое все равно взрывается: видимо, сильно влияют пропорция белка/желтка в яйце и температура тарелки — такое, к сожалению, трудно измерить. Но я не сдаюсь!

Разработчик мобильных приложений работает вместе с котом
Работаем тоже вместе

9:30. Включаюсь в работу. Просматриваю почту, проверяю назначенные встречи, проверяю корпоративный мессенджер и пингую тех, кто мне не ответил. Затем смотрю мердж-реквесты — запросы на вливание одной ветки в другую. По сути, это такой ежедневный ритуал синхронизации: важно, чтобы вся команда была в курсе, кто, что и зачем делает и к какому результату мы идем. Обычно наша «сонастройка» занимает часа полтора.

11:00. Ухожу в код. Открываю таск-менеджер, отсматриваю основные задачи. Обычно в приоритете «проблемные» элементы: в приложении что-то подвисло — нужно оптимизировать. Или отладить работу элементов интерфейса, которые вернулись из тестирования с заметными багами. Если ничего такого не произошло, я спокойно открываю редактор кода и запускаю «помидор». Это программа-таймер, которая помогает концентрироваться, следуя интервальному принципу. Схема такая: 25 минут фокусируешься на задачах, 5 минут отдыхаешь. Очень помогает сохранять продуктивность и не отвлекаться на домашние мелочи в условиях удаленки. Обычно к полудню успеваю сделать 3 «помидора».

Интерфейс программы-таймера, отсчитывающая 25 минут.
Удобное приложение

12:45. Дейлик. Созваниваемся с командой на 15 минут: рассказываем что делали вчера, что собираемся делать сегодня, обсуждаем проблемы и пути их решения. Стараемся сидеть с камерами, чтобы не забывать лица друг друга. У нас многие разъехались: кто-то работает из Таиланда, кто-то из Сербии. Есть даже коллега из Австралии. Конечно, в первую очередь мы обсуждаем рабочие задачи, но также не забываем про личные достижения, делимся историями с выходных, шутим. А еще хвастаемся моделями Lego, если кто-то собрал новую — нас объединяет не только работа, но и общее хобби. В такой дружеской атмосфере работать максимально комфортно.

Алексей Маринин на мероприятии за столом
Мы — команда!

13:00. Снова созвон. Теперь общаемся с коллегами по поводу конкретных проблем, озвученных на дейлике. Обсуждения занимают не больше часа. Таски бывают разные: покрасить кнопки в интерфейсе или оптимизировать отрисовку какого-нибудь промо-баннера в iOS-приложении. Например, если частота обновления экрана айфона — 60 герц, то он обновляется 60 раз в секунду. За этот миг приложение должно полностью отрисовать интерфейс, чтобы пользователь не заметил задержки. Когда кто-то выкатывает новый виджет, случаются сбои. Один важный элемент может тормозить все приложение — приходится оперативно искать ошибку и оптимизировать работу. 

В течении рабочего дня дня 50% времени уходит на коммуникацию, выяснение требований, а оставшиеся 50% — на работу с кодом. Допустим, product-менеджер говорит, что придумал новый экран. Нужно добавить на главную промоакцию или заменить плитку товаров, чтобы повысить активность пользователей. Таск отправляется к дизайнерам — они рисуют макеты нового экрана и несут их разработчикам. Здесь начинаются поиски баланса между временем разработки и ценностью конкретных элементов. Например, дизайнеры придумали красивую и сложную кнопку, но на ее разработку нужно три недели. Приходится договариваться и менять интерфейс. Когда компромисс найден, утверждаем итоговое техническое задание и берем задачу в работу. Пишем сетевой слой для синхронизации с сервисом, ставим кнопки, красим их, проводим тестирование, и наконец пользователь видит в приложении новый баннер или виджет.

14:00. Перекус. Пью чай, ем сосиску в тесте.

14:10. Еще парочка «помидоров». Между встречами иногда есть время покодить. Но чаще мы с коллегами снова собираемся на созвон и обсуждаем проблемные вопросы с дейлика. Новый митап занимает от 15 минут до двух часов. Если фиксить ничего срочного не нужно, я спокойно пишу код.

15:00. Обед. Как правило, ем дома. В теплое время года люблю прогуляться до ближайшего KFC или побаловать себя шаурмой. Во время еды смотрю YouTube, листаю чаты — пытаюсь максимально отвлечься и отдохнуть от работы. Мои фавориты — каналы про элитные авто и гонщиков-любителей. Когда в квартире пахнет обедом, приходит Сёма. Кормлю его, чтобы не залезал на стол. Выходит с переменным успехом.

Кот лежит на ноутбуке
Здорово, когда есть, кому делегировать задачи 🙂

16:00. Подготовка к собеседованию. Если в расписании намечено собеседование, где я выступаю интервьюером, нужна основательная подготовка. Такая беседа с кандидатами — не первый этап рекрутинга: до собеседования доходят только те, кто прошел фильтр резюме. Даже джуны — это подкованные ребята, с которыми нужно разговаривать всерьез. Читаю анкету кандидата, повторяю основные вопросы и ответы. В идеале успеваю немного перекусить и запастись чаем — собеседование может затянуться часа на три. Еще за 10 минут до начала созваниваюсь со вторым интервьюером: важно утвердить список вопросов и определиться, кто будет вести беседу. 

Если вы хотите попасть в большую компанию, но рекрутеры не замечают ваше резюме,  попробуйте найти знакомых людей внутри компании, чтобы они вас порекомендовали изнутри. Например, они могут по реферальной программе предложить вашу кандидатуру руководителю, хотя бы в качестве стажера. Если таких товарищей нет, погуглите профильные обучающие курсы от компании, куда устраиваетесь. У нас, например, есть своя Школа программирования — если учиться прилежно, вас заметят кураторы, и путь к офферу станет короче.

17:00. Провожу собеседование. Знакомимся с кандидатом и начинаем задавать вопросы. Я провожу технические собеседования по iOS-разработке. Такие беседы в крупных компаниях очень похожи — я сам прошел около 50. Расскажу, как все устроено.

Первый блок — это вопросы по языкам программирования. Как работает Swift или Objective-C, чем структура отличается от класса. Могут дать и более конкретную задачу: на конкретном коде описать, как сработает причудливая комбинация структур и классов. Дальше спросят про визуальные фреймворки. Готовьтесь вопросам по UIkit или SwiftUI — зависит от задач, которые предстоит решать на вакантной должности. Скорее всего, спросят, чем отличаются frame и bounds, как работают анимации, layer и верстка в приложении, попросят рассказать о нюансах отрисовки. Вероятно, проверят и навыки работы с UIResponder Chain. Собеседующий может дать и задание на поиск багов. Например, в случаях когда не нажимается кнопка, зависает экран.

Дальше пойдут вопросы по многопоточному программированию. Здесь понадобится владение Thread, Grand Central Dispatch (GCD) и Operation. Готовьтесь рассказать об их отличиях и целях использования. Затем могут дать код, который выводит информацию в консоль: попросят разложить работу кода на детали, обрисовать проблемы многопоточности и пути решения.

Расслабляться рано — дальше проверка на лайвкодинг. Придется показать свои знания и опыт «‎в прямом эфире» и написать код в одном из онлайн-редакторов. Например, на code.yandex-team.ru. За процессом внимательно следят: интервьюеру нужно понять, какие подходы использует кандидат, как он мыслит и действует в разных ситуациях. Чаще всего просят написать участок кода, который решает какую-то бизнес-задачу. Вероятно, предложат что-то из профиля многопоточного программирования и постараются проверить знание архитектурных паттернов. 

При выполнении заданий смело задавайте уточняющие вопросы, чтобы точно определить нужный результат. Иначе есть риск написать совершенно не то, чего от вас ждали. Умение задавать вопросы и выяснять требования — важные софт-скиллы, на которые обязательно обратят внимание.

Иногда встречается рефакторинг: вам покажут участок кода строк на 200 и попросят провести код-ревью: найти ошибки, указать пути решения. 

При собеседовании на высокие позиции ждите заданий по архитектуре. Спроектировать большой сервис или сложный экран приложения, разработать интерфейс для работы с этим продуктом. Для подготовки загляните на refactoring.guru — освежите в памяти паттерны программирования. 

В Яндексе и в зарубежных компаниях уровня FAANG (Facebook*, Amazon, Apple, Netflix, Google), на собеседовании задают алгоритмические задачи. Например, в течение часа нужно решить 2–3 задачи в code.yandex-team.ru. Готовиться удобно на leetcode.com. И на самом собеседовании важно уточнять задачи, озвучивать вслух свои действия и идеи. В редких случаях интервьюер останавливает задание раньше времени, если понимает, что вы нашли способ решения.

Финальный блок интервью — общие вопросы. Здесь оценивают коммуникативные и управленческие навыки, умение взаимодействовать в команде, карьерные ожидания.

19:30. Финальный созвон. Обсуждаем впечатления от собеседования со вторым интервьюером, пишем обратную связь. Да, никогда не стесняйтесь попросить фидбэк у рекрутеров. Даже если вас не взяли, это вполне уместно. Вы потратили свое время на собеседование, интервьюеры тоже вложили в беседу ресурсы — будет честно и разумно разобраться, что пошло не так. 

Кандидата любого уровня могут отсеять из-за недостатка хард- или софт-скиллов. Софт-скиллы очень важны как для джуна, так и для синьора. Начинающему специалисту нужно показать свой энтузиазм, стремление к изучению нового, а более опытному разработчику, помимо этого, еще важно продемонстрировать свой опыт в решении спорных ситуаций. Главная задача — убедить рекрутера, что вы локомотив, который будет тратить тонны энергии на карьеру и любимую работу. Важно даже то, что вы смотрите и читаете. Из моих YouTube-плейлистов: стоит подписаться на канал «Мы обречены» про IT-индустрию в целом, на Senior Software Vlogger или, например, на @PodlodkaShow — подкаст про разработку и все, что с ней связано.

20:00. Конец рабочего дня. Обычно заканчиваю на час раньше, но из-за собеседования рабочий тайминг может растянуться. Можно наконец закрыть компьютер и пойти поужинать. 

Разработчик в конце рабочего дня перед ужином, изучает меню ресторана
Ужинаем

20:30. Вечерняя прогулка. Выходим на улицу вместе с девушкой. В условиях удаленки необходимо поддерживать хотя бы минимальный уровень физической активности. Иначе рискуете заработать проблемы со спиной или что-нибудь похуже. 

22:00. Возвращаюсь домой и сажусь за руль. Это мое третье хобби после Lego и любви к коту. По вечерам сажусь за гоночный симулятор: сейчас тренируюсь в ралли-гонках, мечтаю поучаствовать в настоящих. Катаюсь ежедневно часа по полтора. Дольше не могу — устаю и начинаю разбиваться на каждом повороте.

Программист за рулем гоночного симулятора
По вечерам сажусь за руль

22:30. Сериалотерапия. Сейчас смотрим «Белый лотос». Параллельно собираю Lego. Сёма старается помогать, но пока у него не очень хорошо получается.

00:30. Умываюсь и спать. Иногда залипаю в приложение по изучению английского на ночь — хорошая «растяжка» для мозга после активного дня. 

*Принадлежит компании Meta, признанной экстремистской на территории РФ. 

(рейтинг: 5, голосов: 2)
Добавить комментарий