Как я стал iOS разработчиком

0a8e58263dfb680a720413176215c0a9

О чем пойдет речь

В данной статье я хочу рассказать вам как я стал iOS разработчиком в 32 года не имея профильного образования, не оканчивая курсы, без знания английского языка и без друзей/знакомых в сфере IT.

Понеслась.

Первые мысли об IT

Впервые я задумался об IT когда посмотрел видео Дудя «Как устроена IT-столица мира». Данное видео меня сильно вдохновило, но не мотивировало к изучению. В то «ковидное» время я сменил работу и стал работать в крупной компании подключая интернет корпоративным клиентам. Моя работа никак не была связана с программированием. После прохождения испытательного срока в 3 месяца и ровно за 3 недели до моего тридцатилетия я с ужасом осознал, что не хочу всю жизнь бродить по пыльным и загаженным подвалам/чердакам, чтобы протянуть кусок кабеля. Расти в компании мне не хотелось, работа не приносила удовольствие, а наоборот только угнетала. Каждый мой день был крайне непростым, да и денег это приносила ежемесячно от 35 до 80к. А ведь мне почти 30 лет. жена, ребенок. в отпуске последний раз был 5 лет назад. Осознав всю печальность ситуации я начал действовать.

Выбор языка программирования

Начал с того, что пересмотрел все видео на Youtube начального уровня (на русском языке) с названиями типа «Как стать разработчиком/программистом», «Как выбрать язык программирования», «Сколько зарабатывают программисты» и тд. Приступив к выбору языка я знал лишь 2 вещи: мне нравятся игры и техника Apple. Встал выбор: Objective-C или Swift. После долгих раздумий я выбрал Swift, как более перспективный.

Процесс обучения

За полгода я прочитал несколько начальных книг по iOS разработке на Swift. В особенности хочу поблагодарить Василия Усова с его книгой »Swift. Основы разработки приложений под iOS, iPadOS и macOS (6-е издание)», эта книга дала мне необходимую базу для старта разработки и понимания что/как/зачем в этом вашем программировании. Прочел я ее аж 4 раза от корки до корки, так как тупо не мог осознать всего что там написано и начинал плыть. Читал я ее 4 раза, но не подряд, а с перерывами на другие найденные в сети курсы, ресурсы, видео и статьи. После каждого прочтения я понимал все больше и больше.

Окружив свое личное пространство всем, что связано с программированием: сериалы, книги, лекции, извечные споры «нужно ли изучать алгоритмы новичку», медленно, но верно я изучал материал и старался поддерживать мотивацию, ведь обучение — это страдания и отнимание моего драгоценного времени на игры/пьянки/гулянки, ах да, еще и семья). Спустя полгода моя мотивация закончилась, накопились проблемы: недопонимание в семье — на нее просто не оставалось свободного времени, осознание того, что я до сих ничего не знаю и не могу написать какой-то код/приложение, отсутствие компьютера Mac для разработки и английского языка — я бросаю все к чертям, потому что в очко пусть идет это ваше программирование!

Возвращение к обучению

Спустя 10 месяцев и более менее стабильной работы и зарплаты монтажником, я понимаю, что могу взять в кредит невероятно потрясающий MacBook Air 2020 M1, 16gb, 512gb, что я и делаю. Остается решить проблему с английским языком и по удачному стечению обстоятельств Яндекс выпускает «дублированный перевод видео на Youtube», а еще я уже немного разбираюсь в программировании и понимаю дурацкие переводы документации в браузере типа «view — вид», «closure — закрытие» и тд. И снова мир разработки не кажется ужасным. Я решил переключиться на C# и делать игры на Unity. После месяца изучения C#, я понял что нет ничего красивей и изящнее, теперь уже родного Swift. Теперь я снова изучаю iOS.

Как выбрать ментора

Когда я изучил базу Swift нужно было переходить на новый уровень, а именно UIKit, ООП, SOLID и прочие радости жизни. Пересмотрев кучу роадмапов, настрадавшись между выбором UIKit или SwiftUI, DispatchQueue или async/await и т. д, я вдруг осознал что мне нужен человек, которого я мог бы мучать вопросами.

  1. Первый ментор был senior (8 лет опыта) стоил мне 2000р за 2 часа. Мы изучали с ним как работает Swift: как использовать циклы, как положить что-то в массив, как удалить что-то из массива и прочие простейшие действия. В начале урока ментор давал мне задание, а я должен был его выполнить. Все общение было через телеграмм и только текстом. Задавать вопросы я мог только во время урока.

    Все время обучения я никак не мог отделаться от мысли «какого хрена я плачу 2000 рублей за сообщения в телеграмме?». Спустя 5 месяцев я перестал работать с этим ментором.

  2. Второй ментор — junior (1.5 года опыта), стоимость занятия 1500р за 2 часа. Тут мы уже общались голосом, я много задавал вопросов (иногда вне оплаченного времени), слушал теорию, выполнял домашку. Не устраивало меня только одно — опыт разработчика был маленьким и это действительно чувствовалось, но в целом меня все устраивало и я крайне благодарен этому человеку (привет, Борис!).

  3. Третий ментор — middle (опыт 3 года), стоимость 4000р/месяц. Меня очень привлекла стоимость и модель нашего общения. Занимаясь параллельно с ментором 2 и с ментором 3 — все что я не мог узнать у джуна, я уточнял у миддла в любое время, а он отвечал по возможности — идеально! Но с третьим ментором мы прозанимались всего 1 месяц и далее, то ли я его не устроил, то ли у него действительно внезапно появилось много работы, но занятия пришлось прекратить.

  4. Четвертый ментор — senior (опыт 8 лет), стоимость 15000/месяц. Ради работы с ним, мне пришлось закончить работать с ментором-джуном, тк финансово не вывозил, а тут нарисовался такой прекрасный вариант обучения у опытного разработчика-блогера. Имя называть не буду, допустим его звали «Акела» и он вожак стаи волков ;). Модель была такая: мы делали с ним прекрасное тестовое задание, которое в конце стало приложением для Github. Я мог задавать вопросы в любое время, а он отвечал голосом/текстом/видео в телеге/зуме, раз в неделю делали часовой созвон. Прозанимались мы так аж 9 месяцев. Я смог пощупать MVC и MVP архитектуры одного и тоже приложения, что дало мне больше понимания как это все реализовывать и чем архитектуры отличаются.

А, и еще. Когда я пытался найти ментора мне как-то попался человек, который понял что я хочу изучать iOS, но сказал «сначала мы будем писать на Swift, потом когда задачи станут слишком простыми — перейдем на C++». После моего вопроса «А зачем мне C++ на должности iOS разработчика и как меня с этими знаниями возьмут на работу?» мой потенциальный ментор сказал «вот вы все хотите запрыгнуть в последний вагон поезда без базовых знаний и получать много денег, у вас ничего не выйдет». На этом мы с ним распрощались.

Кажется, я готов стать разработчиком

Спустя долгих 9 месяцев или, как мне больнее их называть, спустя 135 000 рублей, я понял что не хочу идти на собеседование и врать о своем опыте. Ну не хочу и все. Нет, не поймите меня неправильно, я считаю что врать в семье это плохо, , а работодателю — можно, в зависимости от ситуации (бывают очень душные ребята). Просто я был крайне не уверен в своей лжи. Хотя у меня уже был опыт написания кода и я составил личный 16-страничный документ с ответами на вопросы по собесу. В итоге 10.05.2023 я решил отказаться от услуг «Акелы». Опять же — я очень благодарен и крайне признателен ему, он дал мне ОГРОМНОЕ понимание в iOS программировании на Swift.

А дальше-то что делать?

В итоге я попробовал попасть на собесы — результат 0. Звали на собес только, если я писал что у меня 3 года опыта, но я не был готов ответить за базар, да и на своей работе я уже стабильно начал получать 80–90к, что дало мне возможность избегать плохие предложения.
Кстати о плохих предложениях. На один из моих откликов мне написала девушка, она узнала о моем нулевом опыте и попросила сделать тестовое задание за 3 дня. Я потратил все выходные и сделал то, что раньше даже не умел и справился за 2.5 дня — отправил ей. Итог: она даже мне не ответила, не говоря уже об обратной связи. Этот случай окончательно поставил точку для меня в этом 2023 (кризисном) году для поиска работы разработчиком.

24.05.2023

или спустя 2 недели после «расставания» с «Акелой» я додумался до мысли сделать что-то свое, хотя ранее мне вообще было неинтересно делать какие-либо пет-проекты. Я считаю, что пет-проекты бессмысленны, тк за них тебе не платят, да и темы интересные я для себя не находил, а когда платят 0 и не интересно — зачем оно нужно? Я хотел работать за деньги, пускай даже очень маленькие — меня бы это сильно мотивировало. Итак, конец мая 2023, в России кризис, СВО, в мире кризис, на работу не берут, в России начинается (продолжается/ужесточается) цензура. Внезапно я осознаю всю важность такого сервиса как VPN.

Технология WireGuard

Я начинаю изучать все технологии VPN в Википедии. Оказывается, все они — бесплатны! То есть заходи на Github, качай репозитории и делай с ними все что захочешь не платя никаких комиссий или отчислений. ВАУ! Это же просто фантастика! Далее я натыкаюсь на «новую» технологию WireGuard созданную в 2015 (!) году и понимаю «кажется, это то что я искал». WireGuard заинтересовал меня невероятно. Взяв в аренду VPS сервер за 200р и Youtube на вооружение, я за 1 час создал себе VPN-сервер для всяких приятностей, которых нас лишил РосКомНадзор. Раздав VPN себе и еще 6 людям я понял насколько он востребован (как минимум в моем окружении) и какой же классный, и быстрый может быть VPN за копейки!

Мой идеальный ментор — ChatGPT plus

Просчитав финансовую составляющую и оценив возможную прибыль моей идеи создать VPN приложение я начинаю щупать WireGuardKit для iOS.

В первые дни — все сложно, ничего не работает. Спустя 2 недели я понимаю, что мне нужен аккаунт разработчика за 8999р для работы с NetworkExtension (target для работы VPN). У меня получается настроить тестовое приложение, которое (О БОГИ) работает! То есть, я добавляю свою конфигурацию VPN и он реально работает! Я испытал невероятные чувства победы и впервые на минуту почувствовал себя программистом!

Спустя 4 месяца (из них 2 месяца я не подходил к ноуту — решал вопросы со здоровьем) у меня появляется рабочий вариант моего «украденного у WireGuard» приложения, то есть у меня уже была точная копия, а не какой-то example. С копией уже можно работать. Главное, что работает единственный и главный функционал приложения — VPN-туннель. Я начинаю воровать как художник меняя лейблы и кнопки в приложении с помощью ChatGPT, который попутно мне все разжевывает и рассказывает о новых вещах.

Вдруг, я начинаю понимать, что мне требуется создать сервер для раздачи VPN-конфигов людям (потенциальным клиентам), я изучаю Vapor (библиотека для создания сервера на Swift), параллельно пробую оплатить ChatGPT Plus. За считанные недели я поднимаю свой сервер на Ubuntu (никогда ранее не работал с другими ОС отличными от Windows, и теперь уже MacOS). ChatGPT Plus превосходит все мои ожидания! И вот у меня уже сервер с базой данных, код которого я понимаю и осознаю почти полностью.

Собрав сервер и подготовив «почти копию» приложения WireGuard я отправляю его в AppstoreConnect где мне должны его одобрить для публикации в App Store. Через 2 дня Apple дает свою оценку «г*вно — давай переделывай». В итоге им не понравился двоичный код файла, мол «интерфейс то сперт» и надо бы его переосмыслить.

Мама, я разработчик

Честно говоря, я ожидал подобного ответа от Apple и был к нему морально готов. Начинаю чувствовать в себе силы, море — по колено (как и мой ч…). За 1 месяц я переделываю приложения с нуля, придумываю на ходу интерфейс, допиливаю сервер и базу данных, применяю все знания, которым обладал на тот момент и мучаю ChatGPT до вы превысили лимит сообщений.

Я напомню, что основную работу никто не отменял и все это я делаю параллельно с работой, которая отъедает 6–10 часов в день.

Настает день отправки моего приложения в AppstoreConnect и… «к сожалению, мы не можем опубликовать ваше приложение, тк оно публикуется от физ лица, а VPN-приложения можно публиковать только юридическим лицам». Я не рыбак, но кажется это был лещ.

5 месяцев работы

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

Оказывается соло-разработчик (single) — это своего рода предприниматель, который не просто пишет код, а умеет решать возникающие проблемы, даже если они не связаны с кодом.
Я начинаю думать открыть свое ООО. Ранее у меня был опыт ведения бизнеса, также был опыт регистрации и закрытия ООО, я понимал что могу влипнуть на сумму от полумиллиона рублей и ничего не заработать. Плюс постоянная неопределенность и отсутствие гарантий от Apple в публикации моего приложения. Это заставило меня решать вопросики более хитро. В итоге, могу лишь сказать, что я смог «создать» ООО, осталось только оплатить новый аккаунт разработчика, только теперь уже для юридического лица.

Google не помощник

Очень много дней провел над размышлениями как все провернуть: как создать ООО, как создать расчетный счет в валюте, как оплатить аккаунт разработчика со счета компании, как пройти Apple-интервью на английской языке для регистрации аккаунт разработчика без знания языка (требуется для юр лиц). Информации в интернете очень мало на тему »регистрация аккаунта разработчика для юр лица в России в условиях санкций». Пришлось прокладывать путь самому, попутно беря все риски на себя.

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

Спустя 5 месяцев и 3 дня от идеи »хочу свой VPN с блекджеком и…» до »пацаны, я создал» — мои результаты:

  • Готовое приложение iVPN на технологии WireGuard написанное с нуля и переведенное на 22 языка

  • Созданный с нуля и доведенный до ума Vapor-сервер с базой данных на Ubuntu

  • Прикрученная страница оплаты для продажи приложения в РФ (в октябре 2023!)

  • Зарегистрированное юр лицо в РФ

  • Зарегистрированный аккаунт разработчика на юр лицо

    ИТОГ: Приложение опубликовано в App Store для России. И я безумно рад этому событию!

Я — разработчик

На самом деле я не знаю могу ли назвать себя разработчиком, ведь я по-прежнему не устроен на работу программистом и никогда не получал ЗП как программист, я не знаю английский (разве что чуть-чуть), я не работал в команде, я написал всего 1 приложение, но я счастлив! Ну и, возможно, скоро стану богат, но это не точно.

Советы новичкам в iOS разработке:

  1. не покупайте дорогих курсов (вся информация есть в интернете)

  2. купите мак на процессоре M1+

  3. читайте Усова

  4. используйте ПЛАТНУЮ версию ChatGPT

  5. общайтесь в группах с другими разработчиками в телеграммах

  6. глубоко не закапывайтесь в алгоритмы, максимум прочтите «Грокаем алгоритмы» — этого будет более чем достаточно

  7. не жалейте денег на менторов (цена не более 15000 в месяц — адекватна), на старте менторы важнее ChatGPT

  8. придумайте пет-проект, от которого будете гореть

  9. не бойтесь врать на собесах (в отличии от меня)

Большое спасибо за прочитанную статью. Если еще глянете мой iVPN с 30-дневным бесплатным периодом — вообще сказка!

© Habrahabr.ru