Привет! Меня зовут Михаил и год назад я стал iOS-разработчиком в компании ЦФТ. До этого почти 8 лет я проработал в сфере логистики и таможенного оформления, а айосером меня можно было назвать разве что из-за наличия iPhone.
Я хочу поделиться своим опытом. Зачем? Меня такие истории мотивировали на старте, и, возможно, именно мой опыт не даст кому-то опустить руки. Моя история не из разряда «как стать джуном за два месяца», а о том, как не соскочить в этом марафоне.
Немного о прошлом
До 2018 года я жил в небольшом городке — Находка, что на берегу Японского моря. Несмотря на своё профильное IT-образование, меня мало интересовало программирование. В универе мы проходили древние Pascal и Delphi, которые меня никак не увлекали. Хотя в студенческие времена, меня мало что интересовало кроме корейских MMORPG. Играл в Lineage 2 и Aion.
Отучившись в универе, я ушёл в армию. А после службы, я не нашёл альтернативы с нормальным заработком под мои способности (которых, как мне казалось, особо и не было). Так я оказался в сфере логистики. Сначала я устроился менеджером по работе с клиентами, затем — портовым экспедитором. После двух лет в логистике я решил перейти в таможенное оформление. Первое время мне было интересно, потом — просто всё устраивало. В какой-то момент я осознал, что дальше в этой сфере не хочу развиваться.
Почему iOS?
До сих пор помню тот момент, когда я увидел iPhone впервые. Это был безумно красивый iPhone 4, который подарили моему другу. Меня сильно впечатлило то, как было реализовано взаимодействие с ОС, насколько оно было плавным и отзывчивым.
С тех пор началась, и все еще продолжается моя любовь к яблочным гаджетам. Эх, а это был далёкий 2011 год, когда Джобс ещё был жив, FruitNinja была в топе AppStore, а в Instagram не было рекламы.
Swift. Начало.
Swift я начал изучать в 2017. Мне стало интересно сложно ли создать своё приложение. Сначала я наткнулся на стэндфордские курсы, а позже я нашёл swiftbook, который уже к тому времени запустил Иван Акулов.
Swift по первости казался не таким уж и сложным для понимания. Ну что там? If, else, циклы — всё же понятно! Версия на тот момент была уже 3.x, которая в том же году прыгнула до 4.0.
Под это дело я приобрёл бу MacBook Pro 15’ 2010 за ~ 40 тыс. рублей, так как запускать Xcode в виртуалке было невыносимо. Но даже этот древний Mac вызывал у меня восторг от качества его исполнения. Там стоял SSD и для учёбы хватало за глаза! Теперь в свободное время я изучал азы программирования на Swift.
Казалось бы, все есть для учебы, бери и учись! Однако, пару раз столкнувшись с «нерешаемыми» проблемами (например, closures), которые заводили меня в тупик, разум начал меня предавать и подкидывать мысли вроде: «а может это не моё?».
Спустя два месяца учёбы, я начал отвлекаться на всё подряд и благополучно забил на самообучение. Почему? Не было цели. На тот момент меня всё более или менее устраивало и не было мотивации идти до конца — всё же вроде и так неплохо, зачем напрягаться?
Переезд в Питер
Всё изменилось в 2018. К тому моменту я уже всерьёз думал о Петербурге. После первой «неудачной попытки» в программирование, я решил попробовать себя в написании сценариев и у меня даже получалось! Я участвовал в различных конкурсах и да, я не брал призовых мест, но попадал в шорт-листы, что для меня, как для новичка стало большим результатом и ещё одним аргументом для переезда, ведь в Питере есть сценарные курсы и школы.
Были страхи и сомнения. Но случился момент, когда из одной компании я уволился, а вторая, куда я собирался пойти работать неожиданно, стала сокращать стафф. Когда как не сейчас переезжать? Я решил придерживаться плана — переехать, поработать первое время по старой профессии, параллельно учиться и пытаться пробиваться в сферу кино и телевидения.
1 октября 2018-го я уже был в Петербурге. В первую же неделю я устроился специалистом по таможенному оформлению, снял жильё и начал обдумывать дальнейшие шаги.
Swift. Вторая попытка
Как ни странно, к изучению Swift и iOS-разработке я вернулся, после того как начал посещать очные курсы по сценарному мастерству в Питере. Параллельно я ещё интересовался работой мозга, даже посещал очный курс сейчас уже небезызвестного Андрея Курпатова.
Столкнувшись с похожими проблемами при работе со сценариями, и немного разобравшись в том, как работает наш мозг, я понял, что на освоение новых навыков нам требуется значительное время.
Мозг буквально физически должен измениться, выстроив новые связи между нейронами. На практике это означает что нужно пройти через страдания от непонимания, делать ошибки и учиться на них.
Затем, взвесив приоритеты, я решил, что это время я всё-таки хочу посвятить изучению разработки под iOS. Сценарное дело я не бросил: оно перестало быть главной целью, но стало ещё одним способом самовыражения, делать это своей основной работой сейчас мне не хочется.
В феврале 2019-го я записался на вебинары в группе с преподавателем. Три месяца я жил в режиме «работа — дом — учёба». В таком графике было тяжело. Я проводил за компом по 12-14 часов в день: на работе 8-10 часов + дежурства, а после — еще 3-4 часа за учёбой. Подсело зрение, и я решил, что так больше не должно продолжаться — нужно что-то менять. И я решил уволиться.
Уволился я не сразу: сначала я проявил наглость и договорился с начальником ходить на работу 2–3 раза в неделю за половину оклада. Это наглость – потому как в той сфере, ты либо работаешь фул-тайм, либо не работаешь.
Так продолжалось месяц, а потом, как только мне нашли замену — уволили. Это позволило какое-то время не уходить в минус по деньгам и посвятить бо́льшую часть времени обучению.
Свободное плавание
Честно скажу: было страшно принять решение остаться без стабильного дохода. Но мысль, что нужно будет продолжать работать на прежней работе была ещё страшнее. Однако я был к этому готов: у меня была финансовая подушка после переезда и убеждённость, что я покупаю собственное время для того, чтобы освоить новую, интересную мне профессию.
Не сказать, что я учился 24/7. Я выдерживал 8-10 часовой учебный день, за который успевал проходить вебинары, делать домашки и изучать что-то параллельно (например, проходил очень интересный CS50, а иногда даже успевал посещать очные курсы по сценарному мастерству). Отдыхать я тоже не забывал: занимался спортом, играл c друзьями в PS4. Всё это помогало не перегорать и, на мой взгляд, качественней усваивать знания.
В таком режиме я провёл больше полугода. За это время я посетил пару бесплатных митапов для мобильных разработчиков: один от CocoaHeads в офисе Яндекса, а второй — Mobifest от ЦФТ. Признаться, мне было неуютно: не имея опыта коммерческой разработки, я чувствовал себя недоразработчиком, но мне очень понравилась атмосфера. То, что люди собираются и делятся знаниями друг с другом — очень круто! Это придавало сил и желания довести начатое до конца.
Первые собеседования
Некоторые из ребят, которые проходили со мной вебинары от свифтбука, делились успехами в чате. Кому-то уже через 3 месяца после начала обучения удалось устроиться джуном в аутсорсинговую компанию. Но это было скорее исключение, так как уровень знаний в группе был примерно одинаковым, да и многие отваливались еще до окончания курса.
В общем, я решил, что пора ходить на собесы. Я «причесал» все свои учебные проекты в github и написал резюме, впихнув туда весь стек, о котором хоть что-то знал.
Первый отклик, конечно же, был отказом и довольно неприятным. Мне предложили сделать тестовое задание и дали срок в 3 дня. По заданию необходимо было создать форму регистрации агента с валидацией полей и отправить её на сервер (дали ссылку на их тестовый API). Я сделал тестовое, попутно изучив регулярные выражения и отправил в срок. В ответ — тишина. Я решил перезвонить им сам, чтобы получить обратную связь, но мне лишь сказали, что я не подхожу.
Мне было важно понять, где я ошибся, но фидбэк я так и не получил. Сейчас я, конечно, понимаю, что там было не так, но впечатление всё же осталось негативное, ведь я потратил время и даже не узнал причины отказа.
Потом было ещё пара собесов, в том числе и очных, но заветного оффера я не получал. Было ощущение, что либо я недотягиваю, либо у компаний завышенные требования к джунам. Лишь одно собеседование из трёх, как мне показалось, было адекватным уровню Junior-разработчика. Тем не менее я не опускал руки и старался восполнять те пробелы, которые вскрывались на собеседованиях.
Стало понятно, что Петербург хоть и большой город, но предложений для новичков здесь немного, в общем-то, как и везде.
Focus Start
Осенью 2019, мне исполнилось 30 лет. Я всё ещё искал работу и наткнулся на объявление о наборе на очный курс по iOS-разработке от компании ЦФТ.
Я подумал, что это может быть шансом на дальнейшее трудоустройство, а если нет, то в любом случае я получу опыт и познакомлюсь с другими разработчиками. Учитывая, что курс бесплатный — я так и так в выигрыше.
Недолго думая я отправил заявку. Предложили выполнить тестовое задание. На iOS это выглядело как обычный TableView + DetailView, с поддержкой CRUD и сохранением данных между запусками приложения.
Я отправил тестовое и стал ждать. Через некоторое время пришло письмо с приглашением на очное собеседование.
Помимо меня в офисе были ещё ребята, которые также прошли второй этап отбора. Нас разместили в большом кабинете и дали пройти тест на оценку логических, вербальных и числовых навыков. Затем мы проходили интервью с HR и разработчиком компании. Интервью было несложным: коллеги хотели понять наш уровень знаний, мотивированность относительно курсов и, возможно, что-то ещё, что им было важно.
«Абитуриентов» было довольно много, но я отметил, что люди были разные: были как студенты, так и уже зрелые, явно с больши́м жизненным опытом. Это дало надежду и развеяло опасение, что ищут только молодых.
Нам пообещали сообщить результаты через неделю. К тому времени я уже закончил своё обучение на вебинарах, изучал только отдельные темы. И, конечно, мониторил вакансии.
Обучение на Focus Start
Через неделю мне пришло письмо! Мне сообщили, что я прошёл отбор. Всего на обучение отобрали 12 человек. Мы собирались 3 раза в неделю: по вторникам, четвергам и субботам.
По будням занятия длились 2 часа, а по субботам 4 часа. Суббота была ещё особенна тем, что в перерыв нас угощали пиццей. Ну, и чай/кофе были всегда в нашем распоряжении.
Начинали с самых азов, но наши преподаватели быстро поняли, что уровень ребят в группе выше нулевого, поэтому нам стали давать темы и задания посложнее. Я перестал мониторить вакансии и решил полностью сфокусироваться на учёбе.
Учится было интересно и материала было довольно много. Я даже не знаю, как справлялись ребята, которые ещё параллельно учились или работали. Всё своё свободное время (а его на тот момент было предостаточно) я посвящал домашним заданиям.
Примерно через месяц обучения нас разбили на группы по 3 человека, чтобы мы начали разрабатывать выпускной проект. Наша команда писала фоторедактор с использованием CoreImage.
С этого момента начался новый уровень. Если до выпускной работы всё зависело только от меня, то теперь нужно было всё согласовывать с командой. Декомпозировать задачи, проходить код-ревью, самому отсматривать чужой код, углублённо работать с гитом, решать конфликты, и вот это вот всё, что присутствует в реальной жизни каждого разработчика.
В конце обучения был «выпускной», на котором все команды презентовали свои проекты. Было очень интересно посмотреть на другие работы, и, конечно, все ребята справились на отлично.
Вот что в итоге получилось у моей команды: https://github.com/c0dedbear/PhotoTune
Должен отметить, что преподаватели в течение всего срока обучения всегда были готовы прийти на помощь и поделится с нами своим опытом. Это было отличное время! Я даже немного скучаю по той атмосфере.
Что было дальше?
Дальше наступил недельный период неопределённости. Я не знал, возьмут ли меня, поэтому первым делом обновил резюме в соответствии с полученными навыками. Посмотрел на существующие вакансии и отправил пару откликов.
К моему счастью, я был одним из тех, кому сделали предложение о работе. С нашего курса взяли троих ребят, а позднее присоединился ещё один. Компания довольно большая, поэтому я был рад начинать этот путь с уже знакомыми мне ребятами. Нас распределили по разным командам: у каждого из выпускников Focus Start есть ментор, который помогает развиваться дальше.
Кстати, в этом году к нам присоединился ещё один студент с этого же потока, и теперь уже я сам помогаю ему погрузиться в проект, вот такое приятное стечение обстоятельств.
Подводя черту
Прошло чуть больше года с момента моего трудоустройства, и если подводить некоторые итоги на основе своего опыта, я бы выделил ключевые моменты, которые помогли мне не сдаться и добиться результата:
🧑🏫 Нужно быть готовым к длительному обучению. Есть люди, которые, пройдя пару курсов, попали на работу, но это скорее исключение. Настраивайтесь как минимум на год непрерывного обучения. Примите это.
💰 Нужно продумать финансовую сторону вопроса: у вас должна быть подушка или другой источник дохода на время обучения. Либо же у вас должно быть время на обучение в отрыве от основной деятельности (желательно 3–4 часа в день). И здесь важна регулярность, лучше по часу-два каждый день, чем по полдня раз в неделю.
🕺 Ходите на тематические митапы, если есть такая возможность. Там можно проникнуться атмосферой, познакомиться с другими разработчиками и даже найти работу.
🤓 Не попадите в ловушку «вечного студента». Проходить туториалы и курсы можно бесконечно, но чем раньше вы начнёте делать что-то самостоятельно, тем быстрее будете прогрессировать.
🤝 Ходите на собеседования. Даже если не уверены или не хочется. Как только вы освоили базу по iOS — время ходить по собеседованиям. Они принесут вам опыт и дадут возможность увидеть пробелы в знаниях.
✌️ Правильный настрой. Проходя собеседования, не переживайте, о том возьмут вас или нет. Лучше заранее принять то, что вас не возьмут и сосредоточится на том, какие вопросы «бьют» по вашим слабым местам, чтобы впоследствии их проработать.
В заключение хочу сказать: многие разработчики, с которыми я общался говорят, что первое трудоустройство было самым сложным в их карьере, и в какой-то мере им просто повезло. Отчасти это действительно так — 1% удачи всегда присутствует, но к этому проценту, как правило, прилагается 99% вложенных усилий.