Путь iOS-разработчика: как я много собеседовался и попал на стажировку

Привет! Меня зовут Владислав Латышев, мне 28 лет, и сейчас я прохожу стажировку в Банки.ру как iOS-разработчик. Я пробовал себя в разных специальностях — получил финансовое и менеджерское образование, занимался бухгалтерией, стал кандидатом в мастера спорта, был тренером по фитнесу, —, но в итоге пришёл к мобильной разработке.

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

25d8fb2c770a05069b67bf04244676ed.png

Переезд, новое окружение и первые шаги в программировании

Поступив в магистратуру, я параллельно начал работать бухгалтером. Отсутствие быстрого карьерного роста, строгий график и постоянная привязанность к офису подтолкнули меня сменить направление после защиты диплома. На базе своего института я прошёл переквалификацию — получил образование тренера. Так я переехал в Петербург и начал карьеру фитнес-тренера. У меня спортивное прошлое: я кандидат в мастера спорта по жиму лежа — то есть понимаю специфику работы. Тренерская деятельность много мне дала и даже косвенно стала причиной интереса к программированию. Но идея с фрилансом провалилась, несмотря свободный график, в фитнес-клубе я был 24/7.

Круг общения после переезда и старта новой работы формировался из моих клиентов. Со многими мы стали друзьями и до сих пор хорошо общаемся. В основном это были молодые ребята-разработчики: рядом с клубом находится офис крупной IT-компании. На тренировках мы часто болтали про работу, так я познакомился с миром программирования.

В какой-то момент я подумал, что хочу попробовать себя в и в этой сфере. Я продал игровой ноут и купил Macbook, ещё не совсем понимая,   чем именно хочу заниматься. Прочитал, что можно разрабатывать мобильные приложения на iOS. Среди моих знакомых были в основном фронтендеры, DevOps’ы и разработчики C++. Мобильной разработкой из них никто не занимался, поэтому узнать «внутрянку» этой профессии было не у кого. Мне всегда нравился дизайн «яблочных» девайсов и интерфейс iOS. В результате сочетание двух факторов — популярности и эстетики — принял решение начать изучение Swift.

План был следующий —  самостоятельно изучить основы за пару месяцев и браться за небольшие заказы на аутсорсе, не оставляя тренерскую работу. Тогда я не думал, что хочу быть фултайм разработчиком. Свободного времени было немного: на изучение материалов тратил около часа в день в течение полутора месяцев. Конечно, этого объёма было совсем мало — как писать по строчке кода в день. Тогда мне казалось, что за пару месяцев я смогу выучить основы и браться за небольшие заказы на аутсорсе, вне основной работы. Делать программирование смыслом жизни я не планировал.

«Звоночком» к серьёзному обучению стал пример коллеги, который устроился Java-разработчиком, хотя полгода назад работал в нашем фитнес-клубе. Тогда это был единственный пример знакомого человека, который перешёл в программирование из другой сферы.

Я решил скорректировать свою подготовку: сдвинул большинство клиентов, максимально освободил время. Работал по таймеру: утром вставал, садился за учёбу и осваивал темы по роадмапу — весь рабочий день. В таком формате меня хватило на месяц. Больше всего расстраивало, что не с кем поделиться: девушка и родители быстро начинали зевать, если рассказывал о разработке. Еще было сложно без фидбека — тяжело понять, в правильном ли направлении я двигаюсь, посоветоваться тоже не с кем.

Самое демотивирующее — медленный прогресс. За этот месяц я прошёл 5% от роадмапа. Получалось, что если я буду учиться в таком темпе, то для освоения базы мне потребуется несколько лет. Проводить этот эксперимент не хотелось. Я поспрашивал знакомых о курсах и выбрал Практикум — потому что он на слуху, взял рассрочку и пошёл учиться на 10-месячный курс «iOS-разработчик».

8+ часов учёбы в день: мотивация и опыт распределения ресурсов

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

У меня большой учебный опыт: окончил бакалавриат «Финансы и кредит», магистратуру по общему и стратегическому менеджменту, прошёл переподготовку на тренера, серьёзно занимался спортом, — я знаю, как учиться. А с программированием оказалось иначе. Обычно ты накапливаешь информационный базис, от которого можно отталкиваться, и осваивать новое становится не так тяжело. Здесь «базис» постоянно ускользает, часто чувствуешь себя новичком, несмотря на рост количества пройденных тем. 

Для себя я выделил три опорных аспекта в обучении:  

  • комьюнити,  

  • поиск дополнительной информации,  

  • тайм-менеджмент. 

И в самостоятельном обучении, и на курсе роадмапы и учебники я использовал как источники информации. Не терять мотивацию, находить вдохновение и сохранять интерес помогает общение с единомышленниками — в обучении это одногруппники, наставники, кураторы, ревьюеры.

В течение курса мы должны были сдать четыре приложения. После каждого зачёта — недельные каникулы. Для меня это было не отдыхом, а возможностью сесть за дополнительные материалы. Когда изучал новые темы в учебнике, параллельно открывал все ссылки-рекомендации, ролики на YouTube, Medium, Хабре — всё, что подходило по теме. В свободное от курса время тоже просматривал эти закладки. 

Я не делал подробных конспектов, стремился сразу отработать полученные знания на небольшом пет-проекте — это лучший способ не только выучить, но и понять, как это работает.  Например, чтобы отслеживать прогресс, я написал функцию-трекер в Playground, которую вызывал после каждого отработанного часа.

d1fd3b2f40f493e5464ad0c8348ad631.jpeg

В ней учитывается каждый час работы и можно посмотреть общее количество затраченных часов. Я несколько раз улучшал её — добавлял мотивационные оповещения, напоминания о разминке. Позже это эволюционировало в череду проектов-таймеров. 

Изначально поставил себе условный ориентир — те самые 10 000 часов, которые необходимы для достижения мастерства. С января 2023 года и до первой стажировки прошло примерно 2 000 часов. С тех пор моё мнение поменялось: я понял, что профессионализм не измеряется часами. Важны навыки, которые ты получишь, — неважно, за тысячу или 10 тысяч часов.

d7014ca85d6e142162e03c610228640c.png

В течение года я занимаюсь по 8–10 часов в день. Если подходит дедлайн по учёбе, стажировке или тестовому, то и по 13–16 часов. Конечно, случаются выходные или экстренные ситуации — тогда время, отведённое на учёбу, переносится на следующий день. 

Мыслей «бросить» не было, потому что я не привык сдаваться. Дисциплиной и упорным трудом меня не испугать, я учусь и занимаюсь спортом всю жизнь.

Что мотивирует меня не опускать руки:  

  • Я хочу поучаствовать в создании полезного продукта для большой аудитории. В тренерской деятельности тоже привлекало именно это — возможность помочь людям улучшить здоровье, физические показатели. Считаю, что с помощью разработки можно «помочь» гораздо большему количеству людей.

  • Друзья и близкие знали, что я пошёл учиться и хочу получить новую профессию. Не ударить в грязь лицом перед ними — тоже мотивация.

  • Коммерческая составляющая, конечно, играет роль, но я реалист: много зарабатывают крутые специалисты с большим опытом. Только ради денег нет смысла идти учиться — чтобы достойно зарабатывать, нельзя просто подождать какое-то время. Важно постоянно совершенствоваться, развивать дополнительные навыки. Без «огня в глазах» — это невыполнимая задача. 

7ea96334fac83e796223ff134be29ee8.jpeg

Поиск работы, подозрительный оффер и наблюдения за рынком труда

В конце августа 2023 года и спустя полгода на курсе я стал искать первую работу. «Уже два приложения написал, значит, готов», — думал я тогда. В сентябре подготовил два резюме: на джуна и мидл-специалиста. Понимал, что не устроюсь мидлом, но было интересно сравнить количество откликов, формат собеседований, вопросы — и попробовать свои силы, конечно.

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

  • базовое знание алгоритмической секции и основ языка Swift 

  • фреймворк UIKit 

  • верстка кодом 

  • знание архитектур MVC/MVP/MVVM 

  • знакомство с GCD, URLSession и CoreData 

В обучении я делал акцент на закреплении базы, старался меньше отвлекаться на непопулярные технологии — выбирал те, которые чаще всего встречаются в вакансиях.

Даже был небольшой реальный опыт: знакомый синьор-разработчик собрал команду начинающих программистов, чтобы решать мелкие задачи. Для его компании — оптимизация процессов, для нас — опыт и строчка в резюме. Мы с однокурсником поработали там пару месяцев, попрактиковались, но компания сменила вектор на геймдев. Меня интересовал опыт, актуальный именно для финтеха, поэтому дальнейшее сотрудничество не сложилось. План был набрать максимум нужных в этой области хардскилов в короткие сроки. Да, мне интересна, например, анимация —, но углубиться в неё можно и позже, когда «состоюсь» в профессии.

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

При этом первое джун-собеседование не заставило себя ждать: это была аутсорс-компания — посредник. Я прошёл тестовое в телеграм-боте, записал интервью, почему именно я — подходящий кандидат, и получил предложение о сотрудничестве. Правда с условием — нужно пройти двухмесячную стажировку с лекциями дважды в неделю и написать пет-проект. Авторы лучших проектов пройдут на следующий этап. Я обрадовался — буду совмещать лекции с завершением курса Практикума и получу больше знаний. Сомнения тоже были. При успешном прохождении стажировки нужно подписать контракт с компанией на 2 года. Нарушив его, в случае увольнения, даже не по собственному желанию, пришлось бы выплатить компании 500 тысяч рублей. 

С одной стороны, интересно — такая работа позволяет получить много реального опыта за короткий промежуток времени. С другой, компания-посредник забирает часть заработанных тобою денег, а взамен не предлагает гарантий трудоустройства. Даже наоборот — подозрительное условие про выплату в случае увольнения. Скажу честно: тогда я был согласен на такие условия, потому что само появление предложения казалось везением.

В итоге мне повезло. Выпускной проект в Практикуме забирал все свободное время, и поэтому пет-проект для этой компании пришлось делать в сжатые сроки. Я долго решался, отправить его или нет, и… не отправил. Друг отговорил словами, что я найду нормальную работу, — и я, видимо, настолько «закипел» к тому моменту, что доверился.

Морально лучше не стало: уже три месяца ходил по собеседованиям на джун- и мидл-разработчика. Никакого прогресса не было, и первоначальная уверенность стремительно улетучивалась. Резюме на джуна я составил неплохое — в Практикуме, на этапе, когда выпускникам помогают искать работу, к нему почти не было правок. На мидла, конечно, звали гораздо активнее. 

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

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

Я искал работу, одновременно проходил курс и стажировку, поэтому воспринимал поиск как тренировку и исследование рынка. Вот какие наблюдения я сделал:  

  • Главный вывод: у студентов большой отрыв от реальности. Они думают, что, накопив знания на учёбе, уже становятся специалистами. На самом деле нужна практика и умение решать боевые задачи.

  • Не имеет значения, у вас высшее образование или вы окончили курсы, — спрашивают одинаково. 

  • На собеседованиях серьезно проверяют интерес к профессии. Много вопросов в духе «Что понравилось в последнем проекте? Над чем было интересно работать?». Хотят обсуждать детали, чтобы кандидат был увлечённым человеком. Многие приходят в эту сферу только ради потенциального заработка, но развиваться и быть эффективным с таким настроем не получится. Нужно гореть этим делом. 

Первые собеседования, чат-боты вместо HR и стресс-интервью 

Собеседования — отдельный вид искусства. Обычно есть три этапа:

  1. HR и/или чат-бот — базовые вопросы об образовании, прошлом опыте работы, или простые тесты. HR оценивает, подходишь ли ты по стеку и опыту, насколько владеешь софтскилами (презентация, коммуникация).

  2. Техническое собеседование — в течение 1–1,5 часов проверяют твои «харды» — знание алгоритмической секции, языка, архитектуры, вёрстки, понимание работы с сетью, многопоточности и хранения данных. 

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

Все этапы занимают около двух недель, но скорость может зависеть от того, насколько быстро эйчару нужно закрыть вакансию. Даже если вы прошли все этапы, нужно подождать ещё 1–2 недели, пока не пообщаются со всеми кандидатами и не примут окончательное решение. Бывает, всё и затягивается. Так, пару недель назад мне пришло тестовое на отклик с ноября. 

В моём случае результативным оказался только аккаунт на HeadHunter, откликов с Хабр.Карьеры и LinkedIn почти не было. Связываю это с тем, что я их не вёл, хоть и заполнил красиво. Эти ресурсы работают скорее как социальная сеть, в которой тебя оценивают по активности и профилю.

К собеседованиям я относился так же серьезно, как к учёбе. С одногруппником мы делились каждым пройденным собеседованием. Разбирали каждую встречу, вопросы, на которые не получилось ответить. «Слабые» темы, незнакомые технические детали выписывали, потом выделяли 3–4 дня на их изучение и прогоняли снова. Так я прошел и свои собеседования, и моего одногруппника, повторно разбирая и закрепляя все темы.

Я знал, что это «пробные» собеседования, но отказы всё равно воспринимаются нелегко. 

Были и необычные ситуации. Однажды в приглашении на собеседование в качестве контакта оставили именно Телеграм. Мы созвонились с HR, но по технической подкованности я понял, что это разработчик. Он предложил решить алгоритмическую задачу в уме, а при правильном ответе добавлял всё новые условия. Если справишься с этим «брейнштормом», переходишь на следующий этап, ошибёшься — собеседование заканчивается. К этому моменту я прошёл уже много собеседований, но впервые столкнулся с подобным форматом. Не знаю, насколько эффективен формат такого «стресс-интервью» и что хотели этим проверить — возможно, гибкость и оперативность мышления. Меня хватило примерно на полчаса, потом всё-таки допустил ошибку в вопросе по направлению сортировки.

С опытом или без, разработчику нужно быть внимательным — на рынке труда много «подводных камней». Часто предлагают непонятные условия, ты рискуешь работать «на птичьих правах» без уверенности, что получишь деньги. Иногда пишут рандомную, низкую зарплату — около 15 тысяч рублей в месяц. Даже для регионов это слишком мало, учитывая среднюю вилку зарплат разработчиков. 

Стажировка — классный способ набраться реального опыта 

С конца декабря я прохожу оплачиваемую стажировку. Всё сложилось почти случайно. Когда я заканчивал обучение, знакомый проходил собеседование в Банки.ру. Я почитал про компанию, мне понравился продукт и условия работы, поэтому я попросил контакт HR и написал напрямую — спросил, есть ли вакансии. 

Я был готов начать с позиции «trainee», хотя имел небольшой реальный опыт — это большая компания с интересным продуктом. Была и «обратная» мотивация: наслушался от друга историй о работе в непонятных компаниях, где не выстроены процессы, нерегулируемая нагрузка, сомнительные условия оплаты, нет корпоративной структуры. Упустить свой шанс очень не хотелось.

Даже на позицию стажёра было три стандартных этапа собеседования, которые я описал выше. Сама стажировка тоже состоит из 3 ступеней. Сейчас, спустя два месяца, я защитил первый этап. Стажировка продлится примерно до лета, а после будут принимать решение о переходе в штат. 

Я работаю с проектом, где есть собственная архитектура на базе Viper, пишем на Swift, используя SwiftUI + Combine. Конечно, мне пригодились знания со времен курса и самостоятельного изучения. На фоне коллег я — новичок. У них многолетний бэкграунд — чувствуется, что они настоящие фанаты своего дела. Это заряжает меня и подталкивает стараться еще больше.

Рефлексия вместо выводов

Работа в IT и программировании — это не про лёгкий путь, как любят писать в рекламе. Наоборот, только с помощью строгой дисциплины, силы воли, большого количества времени можно чему-то научиться и чего-то достичь. Я доволен тем, что успел за год: количеством и качеством учёбы, опытом собеседований, тем, что успел поработать на реальных проектах и попасть на стажировку. 

Доволен собой как студентом: в нашем потоке не все были новичками в программировании. Учились те, кто пять, 10 лет в разработке — например, старшие разработчики с других направлений. В процессе обучения я старался делать больше плана и программы, чтобы не отставать от опытных сокурсников. Рад, что отучился на курсе без переводов в другие когорты, — нас таких пятеро выпускников. 

Думаю, нужно как можно скорее принять, что суть программирования — в постоянном обучении. Ты всегда будешь чего-то не знать. И неважно, в каком возрасте или с каким опытом начинать. Главное — получать удовольствие от процесса.

© Habrahabr.ru