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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

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

Источник: https://habr.com/ru/articles/771694/


Интересные статьи

Интересные статьи

Давным-давно, еще во времена, когда интернет не был обыденной вещью, одной из возможностей познакомиться с новыми хитами для меня был поход в игровой клуб. В моём районе существовало два таких зав...
Привет! Меня зовут Захар. Несколько лет назад я работал в театре и учился на философском факультете, но однажды решил изменить свою жизнь и стать разработчиком. В статье расскажу, что помогло мне нача...
Недавнее обновление линейки компактных инсталляционных лазерных проекторов расширило линейку более яркими устройствами этого типа – 10000 люмен при весе устройства от 7 до 17 кг. Такое сочетание «огне...
Небольшая история от том как я стал разработчиком игр. Постараюсь осветить проблемы, с которыми я столкнулся на своем пути, и поделиться некоторыми цифрами. Программистом работаю давно, с...
Следующая конференция HighLoad++ пройдет 6 и 7 апреля 2020 года в Санкт-Петербурге Подробности и билеты по ссылке. HighLoad++ Siberia 2019. Зал «Красноярск». 25 июня, 14:00. Тезисы и презентация...