user4485278

Пикабушник
Дата рождения: 21 декабря
98 рейтинг 1 подписчик 0 подписок 1 пост 0 в горячем

Как я стал 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 разработке:

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

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

- читайте Усова

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

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

- глубоко не закапывайтесь в алгоритмы, максимум прочтите "Грокаем алгоритмы" - этого будет более чем достаточно

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

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

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

Большое спасибо за прочитанную статью.

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества