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

В данной статье я хочу рассказать вам как я стал 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-дневным бесплатным периодом - вообще сказка!

Комментарии (18)


  1. Deliter321
    03.11.2023 13:33
    +1

    Молодец, что стремишься и добиваешься. Сейчас время такое - джуны никому не нужны. На той же ХабрКарьере на андроид разраба(даже не конкретно айос): джун - ноль вакансий, стажёр - одна левая вакансия на флаттер и всё...


    1. bITb2112 Автор
      03.11.2023 13:33

      Ждем 2025 и расцвет экономики, а может уже и не понадобиться и будет свой бизнес)


  1. Tempest23
    03.11.2023 13:33
    +1

    Я считаю, что пет-проекты бессмысленны, тк за них тебе не платят, да и
    темы интересные я для себя не находил, а когда платят 0 и не интересно -
    зачем оно нужно?

    Чтобы получить опыт и практику. Вы же делали разные проекты с менторами. Они вам не платили. Более того, за это им платили вы.


    1. bITb2112 Автор
      03.11.2023 13:33
      +1

      На мой взгляд тестовые и пет-проекты разные вещи


      1. Tempest23
        03.11.2023 13:33

        Они могут служить одной цели.

        Из статьи складывается впечатление, что вас больше мотивируют деньги, чем процесс разработки. При чём стремление к деньгам возникло ввиду потребности повысить уровень жизни, так что с его ростом пропадёт и эта мотивация. Когда это случится, программирование рискует стать ещё одной не интересной работой, от которой будет тошнить.

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

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


        1. Deliter321
          03.11.2023 13:33

          Найти бы такие компании с работодателями, которых мотивирует процесс, а не какие то там деньги...


        1. bITb2112 Автор
          03.11.2023 13:33

          «Она настолько любила деньги, что вышла замуж по любви»

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

          Если Вы работаете не ради денег, тогда прям завтра подойдите к своему работодателю и скажите что хотите получать на 20% меньше. 20% - это немного правда? Сможете? Или Вы только ради денег тут - в нашем программировании?) (я/мы программирование)


  1. mirasque
    03.11.2023 13:33

    В итоге, автор продолжает работать монтажником и ждет профит с приложения или ищет работу разрабом?


    1. bITb2112 Автор
      03.11.2023 13:33
      +1

      Пока еще монтажник)


  1. kalco
    03.11.2023 13:33
    +1

    Круто что ты делаешь это

    Спасибо


  1. vashwind
    03.11.2023 13:33

    На текущий момент автор потратил кучу денег на обучение и свой проект, но при этом ещё ничего не заработал.

    Пока на историю победы как то не очень тянет, чтобы брать этот алгоритм на вооружение.


    1. bITb2112 Автор
      03.11.2023 13:33

      Согласен. История пока не закончилась, я не прошел жизнь). Просто хотел рассказать про путь и приложение


  1. spbru
    03.11.2023 13:33

    Клиенты-то есть? ???? Сейчас vpn не проблема и конкуренция решений высокая. Плюс Wireguard научились банить, как протокол и могут быть проблемы.


    1. bITb2112 Автор
      03.11.2023 13:33
      +1

      На данный момент 75 чел (приложению несколько дней)


  1. Resly34
    03.11.2023 13:33

    На самом деле пет-проекты - очень сильно помогают в получении опыта. Банально пытаешься сделать, упираешься в какую нибудь core data, и изучаешь вопрос до тех пор пока не получится хорошо. Конечно, в любом случае через какое-то время все равно будешь считать это говнокодом, но это почти у всех такая ерунда. А так - круто, сразу свое приложение, все дела, но хочу отметить, что работа именно в компании, в команде, дает, наверное, самый большой буст опыта, который только может быть. (не без исключений, конечно)


    1. bITb2112 Автор
      03.11.2023 13:33

      В компанию пока не берут, даже с релизнутым приложением, к сожалению (даже на собесы не зовут)


  1. itmind
    03.11.2023 13:33

    Напишите, как зарегистрировать аккаунт разработчика на юр. лицо из РФ и оплатить его.


  1. DimaLepel
    03.11.2023 13:33
    +1

    На мой взгляд, в сегодняшних реалиях рискованно становиться iOS разработчиком, да и финансово затратно (покупка MacBook и оплата аккаунта разработчика). Но Вы молодец. Встали на этот тернистый путь. Я искренне желаю Вам успехов и надеюсь прочитать следующую статью о том, как Вы проходили собеседование и устроились на работу.

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

    Желаю Вам успехов и скорейшего обретения того финансового благополучия, к которому Вы стремитесь. И что бы после его обретения огонек разработчика, который вы разожгли не угас, а взмылся в небо ярким костром и осветил Вам путь к новым знаниям.

    Не остонавливайтесь.