Как я пришел к программированию
Для полной картины стоит начать с самого начала. В школьные годы мне попалась книжка-самоучитель от Герберта Шилдта по С++. По какой-то причине она увлекла меня до такой степени, что я пропал для своих друзей на год. Результатом такого увлечения, как и у многих, стала игра, написанная при помощи SFML библиотеки. Кому интересно, можно посмотреть на сей «шедевр» здесь.Через некоторое время, уже в колледже, ко мне в руки попал макбук в виде подарка на день рождения. Первым же делом я решил изучить Objective-C (на дворе шёл 2014 год). Я пошёл по той же схеме - самоучитель и тотальная увлечённость. Немного разобравшись, я открыл для себя SpriteKit.
Помимо разработки, я активно занимался иллюстрацией, что было идеально для работы над мелкими игрушками. Через некоторое время у меня появляется небольшая игра, которая невероятным чудом работала (судя по исходникам, которые я смотрю сейчас). Игру можно посмотреть здесь.
Естественно, ужасно хотелось выложить её в AppStore, ведь что может быть круче для начинающего разработчика, чем своя работа, которую любой может скачать? Однако, на тот момент мне не было 18, в связи с чем я не мог получить лицензию разработчика от Apple, по которой можно выкладывать приложения в стор. Пришлось оформлять свою маму как разработчика, чтобы получить эту возможность.
За время колледжа было много мелких работ, которые я делал с другом-художником (вот одна из них) и участия в хакатонах, конференциях и стартапах, некоторые из которых сейчас стали крупными компаниями.
К сожалению, по окончании колледжа это беззаботное время кончилось, так как нужно было готовиться и поступать в вуз. Так как с будущей профессией я до конца не определился, поступил в 2 вуза. В один на прикладную информатику, на очное, и во второй на графический дизайн, на очно-заочное. Помимо этого, нужно было готовиться к поступлению в магистратуру, в зарубежный университет (NewCastle Британия), а именно, выучить английский до IELTS 6.5 с 0 уровня за полтора года. К огромному сожалению, возможности заниматься разработкой по работе или, уж тем более для души, у меня не было вообще.
Ключевые этапы подготовки. По каким материалам я готовился
Но вот наступает 2021 год – последний курс, пора задуматься, чем я буду заниматься после вуза. Вспоминаю про те славные времена, когда я писал на Objective-C, и решаю, что нужно продолжить, так как это область, в которой я больше всего разбирался (как я, наивный, тогда думал).Пока я учился, в Apple уже перешли на новый язык и я решаю заняться разработкой под iOS платформу всерьёз. И тут мне помогла пандемия (как бы странно это ни звучало). Ходить в 2 вуза, на 2 дипломные практики и бешено учить английский практически не выходя из дома оказалось гораздо легче, чем в оффлайне, и даже остаётся свободное время.
На последних курсах, когда все силы должны быть брошены на написание диплома, я занимаюсь изучением Swift и основ разработки под iOS.
Такая куча задач может сильно выбить из колеи, но при должном планировании времени всё возможно. Для каждого дела я завожу либо список, либо kanban-доску, а ключевые задачи и время их выполнения заношу в ежедневник.
Разделение задач по дипломам/английскому/разработке/практике на спринты позволяет не сойти с ума, а ревью в конце недели воодушевляет, так как ты видишь, что не зря прожил неделю. Такой подход помог применить знание Scrum на практике.
Для подготовки к работе iOS-разработчиком я сделал целую дорожную карту, на которой по ходу изучения необходимых тем отмечал прогресс.
По ссылке доступна большая картинка. Жёлтым выделены темы, которые крайне желательно знать iOS-разработчику. Большинство тем взято из этого старого проекта, а другие я нашёл сам. Помимо этого, я завёл репозиторий, в который закидывал (и до сих пор закидываю) ссылки на материалы для изучения каждой из этих тем.
Такой штукой я хотел убить сразу 3 зайцев.
- Во-первых, сделать полезный ресурс для таких же, как я.
- Во-вторых, чтобы был козырь на собеседованиях.
- Ну и в-третьих, просто чтобы я сам мог вернуться к материалам, которые я уже изучил, и повторить их.
В свободное время помогли видео от Sean Allen c туториалами и лайфхаками, такие, как это (но нужно помнить, что критерии качества резюме здесь и за рубежом разные). Он же делает обзоры на портфолио, из которых можно взять много полезной информации.
Но одной теорией сыт не будешь, поэтому параллельно с её изучением, я начал делать проект для портфолио — приложение для погоды. Да-да, самое банальное, что можно было придумать, но я хотел сделать его непростым.
Стоит упомянуть и английский язык. Я считаю, что его знание не менее важно как знание языка программирования. Много раз слышал эту приторную фразу, однако это действительно так. Большинство крутых материалов и документации появляются в первую очередь на английском. Без языка я бы не узнал и половины тех вещей, что я знаю о разработке сейчас.
Так вышло, что изучение свифта выпало как раз на тот период, когда мне надо было особенно усердно готовиться к сдаче экзамена IELTS. На тот момент я стабильно набирал 5.5 балла, что для меня было недопустимо.
Я пошёл на радикальные меры – решил обеспечить максимальную депривацию от русского языка. В машине подкасты, во время досуга статьи, книги, дз, сериалы, фильмы, и даже если что-то по работе нужно или по диплому, то я гуглю на английском языке. Как раз то время, когда я начинаю собирать весь материал в свой репозиторий и по возможности описывать некоторые вещи, параллельно практикуясь в английском. Депривация от русского мне помогла, но буду рад, если сообщество поделится в комментариях своими лайфхаками изучения языка.
Остаться или уехать
Оба диплома с потом и кровью (в основном) написаны, в это же время я получаю сертификат IELTS 6.5 с необходимым баллом для поступления, и уже получаю приглашение от университета.И тут передо мной встаёт дилемма: ехать ли в Англию или нет. Дело в том, что стоимость учёбы там настолько большая, что, на мой взгляд, имеет смысл ехать туда учиться, только если потом переехать и остаться насовсем.
У меня оставался месяц до принятия решения, еду ли я туда минимум на 6 лет с целью остаться или остаюсь дома. Такое решение оказалось слишком сложным, поэтому я отложил его на самый последний момент. Начал ходить на собеседования, чтобы проверить на каком уровне я сейчас нахожусь и «прощупать почву». Параллельно доделываю проект и верстаю сайт с портфолио. Подготовка к работе стала для меня неоплачиваемой работой.
И вот, неожиданно по ходу прохождения одного из собеседований мне написал HR от MTS Digital. На самом деле я даже и не думал подавать резюме в крупные компании, потому что, видимо, не был уверен в своих силах. В итоге я прошёл собеседование и меня взяли!
Что самое важное в работе
Мне очень важно, чтобы время, которое я провёл на работе, не было потрачено для меня лично впустую. Есть что-то важнее, чем просто зарплата, и это навыки, которые можно применить вне работы.Получение опыта
Мне повезло оказаться в большом проекте среди опытных разработчиков, которые направляют меня в правильную сторону при необходимости. Из спринта в спринт меня не покидает ощущение, что я делаю что-то реально крутое. Что-то из чего я могу вынести опыт и применить его уже в своём пет-проекте. Считаю, что опыт, который даёт команда — уникален, его не получить самостоятельно по книгам и курсам.Дополнительно хотел бы отметить еженедельные тех демо, на которых разработчики могут выступить с докладами, менторство, корпоративный университет и развитую базу знаний. Все эти бонусы не оставляют шансов, кроме как, постоянно прокачиваться и развиваться в чём-то новом.
Атмосфера
Мне кажется, что помимо навыков, важно иметь приятную компанию, которая будет понимающе относиться к неудачам и при необходимости помогать морально. И в этом мне тоже повезло, так как я попал как раз таки в ту команду, в которой я бы хотел быть. У нас есть неформальные сообщества разработчиков, соответствующие направлениям — гильдии, в которых мы устраиваем внутренние мини-митапы, на которых делимся опытом да и просто общаемся даже вне работы.Тайминг
Вся моя работа происходит удалённо, что, на мой взгляд, очень круто. Благодаря этому, я экономлю около 3 часов на дорогу. Из-за того, что рабочий день с учётом дороги составляет не 11 часов, а реальные 8, порой складывается впечатление, что он слишком короткий, от чего можно с большей охотой остаться после окончания рабочего дня и уделить больше внимания на текущую задачу.Разнообразие задач
На данный момент я уже пофиксил горсть багов и занимаюсь фичовыми задачами, чему очень рад. Как правило, я работаю больше 8 часов в день, так как я занимаюсь задачами, в которых интересно разбираться. Иногда тестировщик из моей команды, пишет, что нужно отдыхать, потому что можно выгореть. Пока таких проблем я не замечал, но в команде следят за тем, чтобы задачи были разнообразными, чтобы работа не превращалась в сплошную рутину. Такой подход позволяет не только разнообразить будни, но и расширить набор навыков. Сегодня я могу работать на UI элементами, а завтра с базой данных.Если вы подумываете войти в эту профессию, то стоит помнить, что она для тех, кто способен с 8 утра и до часу ночи сидеть над неуловимым багом, лишь бы лечь спать с чувством выполненного долга. Не у каждого есть такое терпение и усидчивость. В связи с таким образом жизни, нужно следить за своим здоровьем и заниматься физкультурой, чтобы не было проблем со спиной. Берегите себя и спасибо, что прочитали мой пост!
Как я прошел путь от игрушек на Objective-C к реальным проектам на Swift в большой компании
Привет, Хабр! Когда я был ещё совсем мал и только тянулся к разработке, я тоже почитывал Хабр и не раз видел статьи, где описывался путь с нуля до оффера. Иногда это были и вовсе удивительные истории...
habr.com