Из бармена в айтишника. Как начать работу в ИТ?
Всем привет! Меня зовут Игорь, я работаю iOS-разработчиком в компании Joy Dev.
Но так было не всегда: прежде чем стать таковым, я прошёл все 5 стадий принятия неизбежного. Во время обучения этой профессии я вынес для себя несколько кейсов, которые помогают мне и могут быть полезны другим начинающим разработчикам. Всё это — мой личный опыт и рекомендации.
Оглавление
Небольшая предыстория
Подпишитесь на тг-каналы для разработчиков
Найдите литературу
Видеоуроки на Youtube
Постоянно писать код
Принципы ООП
Синтаксис - это не все
Программы для контроля версий
Программные инструменты для управления проектами
Гугли
Никуда без Soft skills
Спик инглиш
Сколько времени нужно потратить на обучение
Академия мобильной разработки Joy Dev
Опыт, который я вынес из реальных проектов
Заключение
Небольшая предыстория
Февраль 2020. Я - перспективный бартендер в Москве, который стремится открыть своё консалтинговое агентство в области HoReCa. Но Covid всё портит. Сначала лёгкий испуг из-за того, что всё в стране закрывается, в том числе бары и рестораны. Потом карантин продлевается на 2 недели, потом на месяц. И так было до июля.
Пандемия показала, как действительно работодатели относятся к своим сотрудникам в HoReCa (но думаю, так не только в этой области). Нам не платили зарплату. Выкручивались кто как мог: кто стал в социальных сетях рассказывать, как готовить коктейли дома, кто устраивал нелегальные антиковидные вечеринки, кто работал в кейтеринге и так далее. Я понял, что моя отрасль нестабильна. Таким образом, разрушились все мои планы.
Я начал задумываться, чем заниматься дальше, чтобы воплотить свои мечты. Что может приносить хороший доход, а я смогу работать удалённо и путешествовать. Это должна быть сфера деятельности, где происходит постоянное развитие, к тому же работа должна приносить удовольствие. Программирование пришло на ум давно. Но и оно ведь бывает разным.
Начал интересоваться направлениями и понял, что их великое множество. В итоге решил, что хочу разработать приложение для смартфонов - трекер актуальных скидок в игровых магазинах для Xbox, PlayStation и PC. Так как я всегда любил продукцию Apple, то выяснил, что существует язык SWIFT. С ним у меня и сложились дальнейшие отношения.
Ну а теперь, давайте перейдём к советам и разберемся, как же начать работу в IT.
Подпишитесь на тг-каналы для разработчиков
Начните задавать вопросы в чате. Что это за язык, как его выучить, в чём его плюсы и минусы. Никогда не бойтесь спрашивать о том, чего не знаете. Программисты - очень дружелюбный народ и всегда расскажут, что да как, если конечно, они не будут заняты в этот момент своими рабочими делами.
Найдите литературу
Первое правило программирования – всё есть бесплатно в интернете. Моё мнение - не спешите покупать курсы. Чаще всего это лишняя трата денег и никто не даёт вам никаких гарантий. Есть официальная книга от Apple и документация по всему языку. Я изначально её скачал, чтобы понимать, нравится мне это или нет. После ознакомления с 3-м изданием книги Усова и понял, что мне это нормально заходит. Потом купил 5-е издание в бумажном виде, это была благодарность автору, а еще к этой книге был бонус – доступ к закрытым чатам и сайт с тестами и задачками.
Я советую всем, кто хочет изучить язык SWIFT, следующие книги:
Видеоуроки на YouTube
Никто не объясняет язык лучше, чем человек в видеоролике. Мне помогали изучать язык Скутаренко, Зверика и переведённые стенфордские курсы, они уже устарели, но для первого ознакомления отлично подходят. Поверьте, поначалу вы частенько будете лезть на Ютуб, чтобы найти информацию. Плюс, у Яндекс браузера есть синхронный голосовой переводчик, теперь вы можете легко смотреть и английские ролики.
Вот несколько интересных каналов:
Постоянно пишите код
Решайте задачи, выполняйте домашние задания, проходите тесты, чтобы нарабатывать зрительную и мышечную память. Пусть глаза и пальцы запоминают, как вы пишете код. Чем чаще, тем лучше.
Принципы ООП
Эти принципы очень важны. Это база. С их помощью вы научитесь структурировать информацию, повышать управляемость программы, определять взаимодействие одних элементов с другими, масштабировать код под разные задачи, лучше понимать написанное, эффективно поддерживать готовые программы, внедрять изменения, не переписывая код.
Синтаксис - это не всё
После того, как я более-менее осилил синтаксис, к своему удивлению я выучил алфавит. Самое интересное было впереди. Архитектуры, фреймворки, многопоточность, работа с сетью, вёрстка и далее по нарастанию.
Программы для контроля версий
Вам нужно уметь создавать ветки, коммитить, вливать, создавать пул реквесты. Без этого никуда. Именно из-за контроля версий забудьте про сториборд, иначе будут конфликты, которые вы не сможете решить и влить свою ветку с кодом в проект.
Программные инструменты для управления проектами
В каждой компании своя система контроля версий. Вам будут выдавать задачи, в которых нужно писать отчёт о проделанной работе, а также трекать время. Чем раньше вы освоите подобные инструменты, тем проще вам будет приступить к работе на проекте.
Гугли
Поверьте, это очень важный навык. Его нельзя недооценивать. Правильно сформулированный вопрос сможет дать вам развернутый ответ в первых трёх ссылках. StackOverflow и GitHub - ваши верные товарищи. Почти всё, что вам нужно, находится на этих сайтах. И да, лучше вопросы задавать на английском - успех в этом случае возрастает на 80%.
Никуда без Soft skills
Умение общаться с людьми и критическое мышление будут верными соратниками в этом нелёгком, но интересном пути. Вы всегда будете что-то спрашивать. Но хочу предупредить: как бы в этой сфере люди ни были дружелюбны, не отвлекайте их от дел по пустякам.
Возьмите за правило: если вы не можете решить задачу больше часа, то идите в Google. И только после этого обращайтесь к коллегам. Так же чётко сформулируйте свою проблему: “Задача такая, делал это, проблема тут, решений не нашел.” Учитесь сдерживать гнев: желание выругаться будет посещать достаточно часто, когда у вас что-то не будет получаться (поверьте мне на слово). Но помните: терпение и труд всё перетрут.
Спик инглиш
Ребята, без языка можно получить стажировку или джуна. Но дальше без него будет туго. Документация на английском, международные проекты на английском, программы на английском и так далее. Начните с малого. Переключите свои гаджеты и ноутбуки на английский, смотрите фильмы в оригинале с субтитрами. Отдавайте команды своим голосовым помощникам тоже на английском. А потом идите на курсы или в школы. Английский откроет множество дверей.
Сколько времени нужно потратить на обучение
Я ставил себе цель - 4 месяца. Начал я в августе 2020, получил стажировку в ноябре 2021. Я работал, параллельно учился по 2-3 часа в день, но потом сменил план: в августе 2021 уволился и выделил всё свободное время учёбе. Занимаясь даже по 8 часов в день, начинающему разработчику нереально получить работу за 6 месяцев. Есть уникальные случаи, но не обманывайте себя.
Так же есть академии при компаниях, которые помогают за несколько месяцев освоить базу, чтобы получить стажировку и выполнять несложные задачи. А дальше уже всё зависит от вас, как вы будете адаптироваться и решать поставленные задачи. Расскажу, как было у меня в академии компании Joy Dev, в которой я работаю по сей день.
Академия мобильной разработки Joy Dev
Узнал о ней я случайно, когда гуглил - она попалась в 4 ссылке поисковика. Правила максимально простые. Успешно проходишь обучение - получаешь работу.
Академия набирала поток по 2 направлениям - iOS и Android. Каждую неделю дистанционная лекция, которую вёл действующий разработчик компании (у меня CEO компании преподавал). Вам рассказывают, показывают, объясняют, вы в конце лекции задаёте свои вопросы.
Вот темы лекций, которые я проходил:
- Основы синтаксиса языка Swift
- Объектно-ориентированное и протокольно-ориентированное программирование языка Swift. Особенности и отличия языка Kotlin
- Особенности работы в среде разработки. Основные элементы интерфейса мобильных приложений
- Работа с сетью и моделями данных
- Практические приёмы взаимодействия сетевого слоя интерфейсов приложения
- Способы хранения данных на мобильном устройстве
- Основные архитектуры мобильных приложений
- Многопоточность. Разбор наиболее популярных OpenSource библиотек
После прохождения лекций нужно пройти обязательный этап - промежуточный экзамен по теории. Только после него вас допускают к практической части и выполнению лабораторных работ. Проходило все подобным образом: мы отвечали на перечень вопросов в документе, затем на видеовстрече с куратором защищали свои знания по теории. По результатам встречи или отправляли доучивать, или допускали к следующему практическому этапу. На всё про всё давался один месяц - если за это время теорию не сдашь, то с тобой попрощаются.
После дают лабораторную работу по теме, которую необходимо выполнить за неделю. И тут вы научитесь работать с программами контроля версий, потому что вы будете создавать свои репозитории, где преподаватель ревьюит ваш код и оставляет комментарии. Это очень удобно, потому что вы всегда будете пользоваться этими навыками.
Также пример лабораторных работ:
- Шаблон мобильного приложения и форма регистрации
- Работа с компонентами интерфейса мобильного приложения
- Взаимодействие мобильного приложения с данными
- Изучение основных архитектур мобильных приложений
И так на протяжении 2-3 месяцев. В конце даётся финальное задание, у каждого оно индивидуальное. На базе приобретённых навыков вас попросят написать подобие Инстаграма, музыкальный проигрыватель, навигатор и прочее.
Преимущества этой академии - лояльное отношение. У вас есть общий чат, где вы можете общаться с остальными ребятами и преподавателями. Если вы студент или работаете, то всегда можете попросить отгул, перенести сдачу лабораторной или попросить записать лекцию.
У меня всегда были проблемы с этими лабораторками, так как у меня не было никакого бэкграунда. Я мог обратиться к преподавателю и попросить о помощи. В академии заинтересованы в вашем обучении, потому что вы - потенциальный сотрудник, который принесёт компании выгоду. Поэтому в вас вкладывают свои время и деньги.
Придерживайтесь закона Парето, которым поделился преподаватель в академии:
«20% усилий дают 80% результата, а остальные 80% усилий — лишь 20% результата»
Поэтому вам достаточно освоить синтаксис языка, узнать, как делать сетевые get/set-запросы, изучить базовые классы UIKit для вёрстки, как и где хранить данные, базовые библиотеки - и можно начинать кодить в несложных проектах компании. Остальное приобретёте с опытом.
В конце я так и не смог закрыть финальное задание, потому что было много багов. Но за своё упорство и проявленные хорошие софт скилы мне предложили стажировку, где я мог набить руку на реальных задачах от заказчика. Утвердили испытательный срок и зарплату. Ах, да. Если вы с отличием закончите академию, то получите стипендию. Неплохо, правда?))
Благодаря академии я понял, в чём у меня проблемы и на что нужно сделать упор, чтобы стать лучше.
После вы уже сами решаете: работать удалённо в компании или релоцироваться в город, где есть офисы. Я выбрал первое, так как не хотел тратить время на дорогу в офис и иметь возможность постоянно менять города. Так и началась моя работа в компании Joy Dev.
Подробнее об академии можно узнать здесь. Сейчас как раз идёт набор по 4 направлениям: iOS, Android, React, Аналитика.
Опыт, который я вынес из реальных проектов
Отдых. Вашему мозгу нужна разгрузка, только не ходите в пятницу в бар. Лучше посмотрите сериальчик, пообщайтесь с близкими, займитесь спортом (в здоровом теле ясный ум), поиграйте в настолку или консоль, посетите музей или выставку. В общем, полезных занятий много.
Не уходите в учёбу и потом в работу с головой, уделяя этому всё свободное время. Так вы очень быстро выгорите и не захотите учиться новому в нерабочее время.
Режим. Вам нужен здоровый сон, чтобы мозг мог легко за ночь перерабатывать полученную информацию. Не сидите до рассвета за монитором, ни к чему хорошему это не приведет. Например, я ложусь спать в 23:00, встаю в 06:00.
Забудьте про вёрстку в Storyboard, чистый код и только. Выше я написал одну из причин. Даже если вам он когда-то потребуется, то вы разберётесь в нём за 1 вечер.
Для того, чтобы зайти на позицию джуна нужно знать архитектуры: MVVM, VIPER. С MVC и MVP. Ознакомьтесь, но не акцентируйте своё внимание: в реальных командных проектах почти не используется.
Научитесь работать с документацией языка в xcode, с 95% вероятностью вы сразу получите ответ.
Вам нужна машина с MacOS (если работаете удалённо), так как учиться на чём-то же нужно. Можно конечно попробовать накатить на ПК хакинтош или на Linux, но это отчаянная мера, и вы не сможете использовать на максимум среду разработки.
Можно первые 2 месяца обойтись онлайновым плейграундом, но компьютер с актуальной MacOS вам будет необходим.
После того, как вы всё это осилите, можете смело искать стажировку или сразу претендовать на позицию джуниор-разработчика.
Помните! Вы всегда будете учить что-то новое, почти всегда сталкиваться с тем, что вы что-то не знаете. Главное - спокойствие, потому что это нормально.
Начиная работу в компании, я был допущен в проект на одной архитектуре, с библиотеками, сетевыми слоями, паттернами и так далее. Спустя полгода меня отправили уже на другой международный проект, где всё по-другому: другая архитектура, библиотеки, подходы, паттерны, алгоритмы.
Всегда дают 3-5 дней на онбординг, чтобы вы изучили проект и выписали для себя то, что не знаете и что вам предстоит изучить.
Но хочу предупредить. Этапы и кейсы, о которых я написал выше, не дадут вам никакой стопроцентной гарантии. И вам не обязательно следовать всему беспрекословно. Я задал вам вектор, а вы кастомизируйте. Главная мысль - всё возможно, если приложить усилия.
Если вы думаете, что программирование - это “не ваше, отвечу: “Камон. Я – гуманитарий!”
UPD: Список тем, которые вам необходимо знать, чтобы завершить обучение и проходить собеседования:
А также многопоточность, ООП и SOLID, KISS, DRY, YAGNI
Заключение
Если вам было полезно и понравилось - ставьте лайк. Буду рад вопросам и пожеланиям. А если хотите начать свой путь в IT, то сейчас Joy Dev набирает людей в бесплатную академию по 4 направлениям: iOS, Android, React, Аналитика. Последний день приема заявок - 15 сентября!
Запись по ссылке: https://t.me/JoyDev_events
Всем Joy!
Спасибо за ваш труд
Илья, спасибо, что уделили время и прочли статью!)
кайф! пользуюсь джира постоянно, еще трелло люблю
полностью вас поддерживаем) Jira - неотъемлемая часть наших рабочих будней
Интересный путь. Здорово, что у вас все получилось!
спасибо, Тимур!) Лично от автора😊