Как я прошел путь от игрушек на Objective-C к реальным проектам на Swift в большой компании

Kate

Administrator
Команда форума

Как я пришел к программированию​

Для полной картины стоит начать с самого начала. В школьные годы мне попалась книжка-самоучитель от Герберта Шилдта по С++. По какой-то причине она увлекла меня до такой степени, что я пропал для своих друзей на год. Результатом такого увлечения, как и у многих, стала игра, написанная при помощи SFML библиотеки. Кому интересно, можно посмотреть на сей «шедевр» здесь.

Через некоторое время, уже в колледже, ко мне в руки попал макбук в виде подарка на день рождения. Первым же делом я решил изучить Objective-C (на дворе шёл 2014 год). Я пошёл по той же схеме - самоучитель и тотальная увлечённость. Немного разобравшись, я открыл для себя SpriteKit.

a0949096faa3280173a14d5701b248a8.png

Помимо разработки, я активно занимался иллюстрацией, что было идеально для работы над мелкими игрушками. Через некоторое время у меня появляется небольшая игра, которая невероятным чудом работала (судя по исходникам, которые я смотрю сейчас). Игру можно посмотреть здесь.

Естественно, ужасно хотелось выложить её в AppStore, ведь что может быть круче для начинающего разработчика, чем своя работа, которую любой может скачать? Однако, на тот момент мне не было 18, в связи с чем я не мог получить лицензию разработчика от Apple, по которой можно выкладывать приложения в стор. Пришлось оформлять свою маму как разработчика, чтобы получить эту возможность.

За время колледжа было много мелких работ, которые я делал с другом-художником (вот одна из них) и участия в хакатонах, конференциях и стартапах, некоторые из которых сейчас стали крупными компаниями.

К сожалению, по окончании колледжа это беззаботное время кончилось, так как нужно было готовиться и поступать в вуз. Так как с будущей профессией я до конца не определился, поступил в 2 вуза. В один на прикладную информатику, на очное, и во второй на графический дизайн, на очно-заочное. Помимо этого, нужно было готовиться к поступлению в магистратуру, в зарубежный университет (NewCastle Британия), а именно, выучить английский до IELTS 6.5 с 0 уровня за полтора года. К огромному сожалению, возможности заниматься разработкой по работе или, уж тем более для души, у меня не было вообще.

Ключевые этапы подготовки. По каким материалам я готовился​

Но вот наступает 2021 год – последний курс, пора задуматься, чем я буду заниматься после вуза. Вспоминаю про те славные времена, когда я писал на Objective-C, и решаю, что нужно продолжить, так как это область, в которой я больше всего разбирался (как я, наивный, тогда думал).

Пока я учился, в Apple уже перешли на новый язык и я решаю заняться разработкой под iOS платформу всерьёз. И тут мне помогла пандемия (как бы странно это ни звучало). Ходить в 2 вуза, на 2 дипломные практики и бешено учить английский практически не выходя из дома оказалось гораздо легче, чем в оффлайне, и даже остаётся свободное время.

На последних курсах, когда все силы должны быть брошены на написание диплома, я занимаюсь изучением Swift и основ разработки под iOS.

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

Разделение задач по дипломам/английскому/разработке/практике на спринты позволяет не сойти с ума, а ревью в конце недели воодушевляет, так как ты видишь, что не зря прожил неделю. Такой подход помог применить знание Scrum на практике.

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

Мой роадмап без отметок.
Мой роадмап без отметок.
По ссылке доступна большая картинка. Жёлтым выделены темы, которые крайне желательно знать iOS-разработчику. Большинство тем взято из этого старого проекта, а другие я нашёл сам. Помимо этого, я завёл репозиторий, в который закидывал (и до сих пор закидываю) ссылки на материалы для изучения каждой из этих тем.

Такой штукой я хотел убить сразу 3 зайцев.

  • Во-первых, сделать полезный ресурс для таких же, как я.
  • Во-вторых, чтобы был козырь на собеседованиях.
  • Ну и в-третьих, просто чтобы я сам мог вернуться к материалам, которые я уже изучил, и повторить их.
Я взял себе за правило изучать минимум по одной теме в день до тех пор, пока не стану королём пиратов устроюсь на работу.

Промежуточный результат изучения тем.
Промежуточный результат изучения тем.
В свободное время помогли видео от Sean Allen c туториалами и лайфхаками, такие, как это (но нужно помнить, что критерии качества резюме здесь и за рубежом разные). Он же делает обзоры на портфолио, из которых можно взять много полезной информации.

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

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

Так вышло, что изучение свифта выпало как раз на тот период, когда мне надо было особенно усердно готовиться к сдаче экзамена IELTS. На тот момент я стабильно набирал 5.5 балла, что для меня было недопустимо.

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

Остаться или уехать​

Оба диплома с потом и кровью (в основном) написаны, в это же время я получаю сертификат IELTS 6.5 с необходимым баллом для поступления, и уже получаю приглашение от университета.

И тут передо мной встаёт дилемма: ехать ли в Англию или нет. Дело в том, что стоимость учёбы там настолько большая, что, на мой взгляд, имеет смысл ехать туда учиться, только если потом переехать и остаться насовсем.

У меня оставался месяц до принятия решения, еду ли я туда минимум на 6 лет с целью остаться или остаюсь дома. Такое решение оказалось слишком сложным, поэтому я отложил его на самый последний момент. Начал ходить на собеседования, чтобы проверить на каком уровне я сейчас нахожусь и «прощупать почву». Параллельно доделываю проект и верстаю сайт с портфолио. Подготовка к работе стала для меня неоплачиваемой работой.

И вот, неожиданно по ходу прохождения одного из собеседований мне написал HR от MTS Digital. На самом деле я даже и не думал подавать резюме в крупные компании, потому что, видимо, не был уверен в своих силах. В итоге я прошёл собеседование и меня взяли!

Что самое важное в работе​

Мне очень важно, чтобы время, которое я провёл на работе, не было потрачено для меня лично впустую. Есть что-то важнее, чем просто зарплата, и это навыки, которые можно применить вне работы.

Получение опыта​

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

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

Атмосфера​

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

Тайминг​

Вся моя работа происходит удалённо, что, на мой взгляд, очень круто. Благодаря этому, я экономлю около 3 часов на дорогу. Из-за того, что рабочий день с учётом дороги составляет не 11 часов, а реальные 8, порой складывается впечатление, что он слишком короткий, от чего можно с большей охотой остаться после окончания рабочего дня и уделить больше внимания на текущую задачу.

Разнообразие задач​

На данный момент я уже пофиксил горсть багов и занимаюсь фичовыми задачами, чему очень рад. Как правило, я работаю больше 8 часов в день, так как я занимаюсь задачами, в которых интересно разбираться. Иногда тестировщик из моей команды, пишет, что нужно отдыхать, потому что можно выгореть. Пока таких проблем я не замечал, но в команде следят за тем, чтобы задачи были разнообразными, чтобы работа не превращалась в сплошную рутину. Такой подход позволяет не только разнообразить будни, но и расширить набор навыков. Сегодня я могу работать на UI элементами, а завтра с базой данных.

Если вы подумываете войти в эту профессию, то стоит помнить, что она для тех, кто способен с 8 утра и до часу ночи сидеть над неуловимым багом, лишь бы лечь спать с чувством выполненного долга. Не у каждого есть такое терпение и усидчивость. В связи с таким образом жизни, нужно следить за своим здоровьем и заниматься физкультурой, чтобы не было проблем со спиной. Берегите себя и спасибо, что прочитали мой пост!

 
Сверху