- PVSM.RU - https://www.pvsm.ru -

Советы для тех, кто решил стать iOS-разработчиком

Советы для тех, кто решил стать iOS-разработчиком - 1

Очень давно меня просили написать эту статью, но то ли мне микрофон мешал, то ли просто звезды не сошлись.

Коротко обо мне: мне 43, я Женщина и iOS-разработчик. Сейчас я один из самых востребованных специалистов на рынке, поиск работы составляет в среднем от 2 дней до 2 недель.

Тем, кто случайно натолкнулся на эту статью и все еще раздумывает, сменить ли ему профессию или род деятельности, отвечу: если Вы не попробуете, то никогда и не узнаете — сможете изменить свою жизнь, или нет. Заранее бояться ошибиться — пустая трата времени.

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

Определение направления

В 2014 году компания, в которой я проработала 7 лет, закрылась (сотрудникам Ланка привет!). И передо мной встал выбор: искать работу или подумать о том, кем я на самом деле хочу работать.
При закрытии руководство компании поступило по отношению ко всем своим сотрудникам очень лояльно, и мы получили при увольнении деньги, с учетом скакнувшего тогда курса очень даже приличные (мне хватило прожить на них 8 месяцев).

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

На сайте hh.ru натолкнулась на рекламу: стань программистом и получи «сто миллионов» зарплату уже через полгода! Я решила проверить рынок и была приятно удивлена, что средняя зарплата программиста выше зарплаты хорошего закупщика со знанием английского в 2-3 раза. Ух ты! (подумала тогда я): работаешь в офисе, занимаешься логическими задачами. Может, вспомнить институтскую молодость и начать программировать?

Пошла на один общеизвестный ресурс, о котором, по этическим соображениям к читателям, не буду сообщать, и прошла там бесплатный курс по основам программирования. Курс пролетел, даже не заметила! Все задачи были легкими (сказалась институтская база), и я окончательно поняла, что ближайшей моей целью будет: переквалифицироваться в программиста! (для понимающих небольшое отступление: знания английского у меня были нулевые, т.к. в школе и ВУЗе учила французский).

Курсы

Цель поставлена, теперь надо было определиться — какой из множества направлений в программировании имеет смысл освоить? Нашла друга — программиста (java), он мне порекомендовал податься в Мобильную разработку, т.к. ниша достаточно новая, быстро развивается, и разработчиков с каждым годом будет все больше и больше не хватать. (Альберт, если ты это читаешь, очередной тебе привет и огромная благодарность за совет!).

Ну что ж, цель поставлена, пора действовать! Заплатила за онлайн курсы (рассчитанные на 6 месяцев + 2 месяца стажировка), тогда стоимость курсов составляла порядка 40к рублей (если что, то сейчас в два раза дороже). Подождала старта своей группы и плюхнулась со всего разбега в этот океан новых знаний.

Было очень страшно рисковать, т.к. на курсе все были сильно моложе меня (от 18 до 30 лет), а девушек практически не было (отсеялись после первых уроков).

Небольшое отступление: здесь и ниже все цены будут указаны для Москвы. Как дела с зарплатами и ценами в другом регионе, я подсказать не смогу.

Забегая вперед, хочу сказать, что многое зависит не только от Вашей целеустремленности, желания и возможностей, но и от того, какой преподаватель вам попадется на этом пути. Мне в этом смысле повезло!

Теперь же по порядку: онлайн-обучение на мобильного разработчика включало в себя 2 курса по ios-разработке, основы Java и 2 курса по Андроид-разработке + любой подарочный курс, какой мне понравится. Занятия (онлайн) начинались вечером около 20-00, чтобы все работающие успели к этому времени вернуться домой.

Я для себя определила, что хочу заниматься именно Андроид-разработкой, т.к. ни одного яблочного устройства у меня не было, да и я относилась к тем людям, кто постоянно троллил владельцев гаджетов apple за их необдуманную трату денег (кто бы тогда мог представить, что через три года у меня будет два iPhone и macBook pro).

Я несколько разочаровалась из-за того, что обучение стартовало именно с изучения iOS. Однако, поскольку iOS изучался на языке objectiveC, мне в этом смысле было даже проще, т.к. синтаксис очень схож с родным институтским C/C++. Самая большая сложность на курсе возникла из-за отсутствия mac-а. У меня был очень крутой ноутбук на Windows (16gb, i7, SSD256), поэтому, перелопатив форумы, нашла, как можно установить виртуальную машину и под ней уже разрабатывать на iOS. Сказать, что виртуалка тормозила — это мягко сказано! Кроме того, собирать проекты приходилось на симуляторе, т.к. у меня ни аккаунта разработчика не было, ни устройства, на котором разрабатывать, да и подключить устройство для сборки на виртуальной машине — то еще удовольствие. Покупать б/у телефон я не рискнула, да и бюджет у меня был жестко распланирован ровно на 8 месяцев.

Совет по оборудованию

Поэтому совет тем, кто решил заняться изучением iOS: купите себе дешевенький б/у macMini или поставьте хакинтош. И по деньгам не дорого, и эффективность выше (не нужно будет ждать по 10 минут каждой сборки).

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

Но… так получилось, что мне очень повезло с преподавателем iOS. (Lowtrack [1], в очередной раз, огромная Вам благодарность за помощь и терпение!). Он очень ответственно подходил ко всем урокам, готовился заранее, каждый урок длился не 1 час, а 3+ часа, т.к. за 1 час сложно было раскрыть все темы, объяснить начинающим, как пользоваться XCode. Но самое замечательное то, что если я чего-то не понимала, Lowtrack [1] всегда был на связи и в любой день (рабочий или выходной) давал по скайпу все разъяснения, объяснял ошибки, разжевывал весь непонятный для меня материал.

Небольшое отступление: я надолго запомню, как он мне на примере офисного шкафа и рабочего стола объяснял, что такое ООП, что такое классы, объекты, методы.

Поскольку, я знала, что мой уровень в программировании далек от того, который имелся у молодых ребят после ВУЗа, я занималась целыми днями по 14 часов. Забывала обедать, ужинать. Иногда ДЗ делала не только днем, но и ночью. Сбила себе режим так, что ложилась в 6 утра, в 12 просыпалась и опять за учебу. В общем, чтобы все успевать наравне со всеми, выкладывалась на 300%.

На курсах Lowtrack [1] посоветовал мне пойти изучать английский (хотя бы получить базовый уровень), пришлось раскошелиться и еще 25к вложить в начальные 3-х месячные курсы английского.

Поиск стажировки

Через 3 месяца курсы iOS закончились, и я осознала для себя, что влюбилась в iOS-разработку. Позже, когда я уже приступила к изучению Андроида, я поняла, что хочу заниматься именно iOS. Да и преподавание Андроида было ниже плинтуса: не смотря на то, что преподаватель на курсах был лучшим из лучших, он совсем не уделял нам времени, скидывал уже заранее заготовленные методички по теории, 90% занятий уходило на разбор чужих домашних заданий, причем моя работа так ни разу и не была просмотрена. В общем, на этих курсах я поняла, что зря трачу время, пора искать стажировку.

На онлайн-обучении мне обещали обязательную стажировку 2 месяца. Я начала их дергать по этому поводу, и мне предоставили контакты фирм, которые набирают джуниоров на стажировку после этих курсов. Как оказалось, стажировка — это замануха. На самом деле никто ее тебе не организует, только даст контакты компаний, где твое резюме, возможно, посмотрят. Контакты онлайн-ресурса на стажировки у них были красиво оформлены на отдельной странице. Результат: из 5 компаний только 2 рассмотрели мое резюме, и я тут же получила отказ (да и что тут удивляться, когда там висели вакансии таких компаний как redmadrobot), остальные компании даже не удосужились посмотреть мое резюме. На hh также ни одной вакансии для джуниоров не было. Я начинала паниковать, т.к. прошло уже 5 месяцев с начала курсов, и время уже поджимает.

Мне пришлось заняться поиском стажировки самостоятельно. Те золотые горы, что мне обещали на hh.ru в рекламе, я не обнаружила. Много гуглила и натолкнулась на сообщение в vk, что в команду Conditional (название специально изменено) постоянно набираются стажеры ios и Андроид. Написала им в группе. Что самое удивительное, быстро получила ответ. Мне и ребятам, с которыми я вместе закончила курсы ios (таких было еще 3, а брали только 1), дали тестовое задание. Я его выполнила (подозреваю, код у меня был очень смешной и некрасивый). Мне дали еще одно задание, чтобы я не изобретала велосипеды, а свое тествое задание сделала с определенным фреймворком. Переделала! И дальше оставалось только ждать ответа… Ждали ответа мы долго (порядка 3 недель). Через 3 недели я не выдержала ожидания и съязвила в чатике, что, наверное, тестовое задание — это и было нашей стажировкой. После этой фразы из Conditional со мной связались и позвали на собеседование в Зеленоград.

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

Потом задал несколько задач на логику. И сообщил, что я им подхожу.

Стажировка и первая работа

Итак, началось!

Через 6 месяцев после старта курсов я получила долгожданную стажировку! Но радоваться я перестала сразу, как только мне объявили, что стажировка неоплачиваемая, и если я стажировку пройду успешно, то тогда, возможно, меня возьмут на работу. Т.е. я 3 месяца каждый день приезжаю в компанию, учусь/работаю, а за это мне не платят ни копейки! Взгрустнулось немного, т.к. те ребята, которых не позвали на эту стажировку, всё же нашли себе оплачиваемую работу, правда у них уже был опыт программирования на других языках. Я решила, что не нужно завидовать, а ухватиться за этот шанс. Конечно, я очень рисковала! Денег у меня было запланировано только на 8 месяцев, а поскольку еще ушли деньги на курсы английского, вообще только на 7, поэтому даже пришлось немного влезть в долги.

Советы для тех, кто решил стать iOS-разработчиком - 2

К концу стажировки я осознала, насколько знания, которые даются на курсах, отличаются от реального опыта! Если брать в процентном соотношении, то те знания, что я получила на курсах — это примерно 10% от всех знаний, что я получила на стажировке.

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

Совет: учите теорию

Поэтому совет для начинающих: учите теорию! И если она Вам не нужна в данный момент, то точно пригодится в дальнейшем!

На стажировке нам, таким же джуниорам, как и я (по 5 человек на каждой платформе), доверили писать реальный проект! Это было очень интересно!

Поскольку в этой компании такой большой проект был организован впервые, везде и всюду в проекте наблюдался хаос. Каждый стажер писал кто во что горазд. Толком ревью не было, т.к. не успевал у нас один руководитель уследить за всеми, обучить всех, еще и архитектуру продумать. Но зато мы все получили незабываемый опыт, при работе над этим проектом. (Отдельная благодарность: Mehdzor [2], руководителю Мобильной разработки, за полученные знания, за терпение и за понимание).

Стажировка закончилась. По завершении стажировки мне предложили не густо, не пусто — зп в 45к (это, конечно, не такая зарплата, которую мне бы хотелось, т.к. работая менеджером я бы смогла получать около 60к), но я так уже сработалась с этими ребятами, что мне не хотелось расставаться. Компания серая, все платили наличными в конверте, по трудовой мы даже не числились. Ни дня стажировки мне не сократили, хотя обещали, что если я себя хорошо покажу, то срок уменьшится. Как оказалось, это только обещания… испытательный срок у всех коллег был одинаковым, т.к. это дополнительная мотивация для стажеров для улучшения работы!

Через полгода к нам в компанию на стажировку взяли еще 2 девочек.

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

Да, обидно, грустно, но, видно, пришло время двигаться дальше.

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

Однако все, кто ушел, смогли быстро найти хорошую работу на зп от 80+, даже с опытом от 6 месяцев, в таких компаниях как Сбертех, Альфабанк, Тинькофф.

Очередной совет начинающим: да, найти работу джуниорам очень сложно, и возможно, вы потратите не один месяц, однако старайтесь все же найти белую зарплату и желательно, чтобы был куратор (т.е. либо стажировка с дальнейшим рабочим местом, либо джуниором в уже сложившийся коллектив).

Например, у меня коллега (Саша, помаши рукой маме!), который со мной работает (джуниор), искал работу после курсов 2 месяца. Прошел 8 собеседований. Из них только 2 приглашения. Средняя ЗП на рынке для джуниора порядка 60-80к. Если вариант со стажировкой, то за стажировку могут платить около 30-50к, что, согласитесь, лучше, чем работать в H&M или курьером.

Низкая квалификация разработчиков в маленьких компаниях

Меня же немного поштормило. Hr-ы, когда видят мой возраст, скептически относятся к моему резюме (и я их, наверное, даже понимаю), поэтому такого количества предложений, как молодые ребята, я не получала.

Совет тем, кому за 35

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

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

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

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

Для примера, что было сделано в этом конкретном проекте (до моего прихода) такого, от чего у опытного человека зашевелятся волосы

  • вместо использования стандартной функции didSelect, на каждую ячейку ставился жест (на мой вопрос: зачем? ответили: “иначе в одном методе очень много строчек”)
  • больше 7 вьюконтроллеров на 1000+ строк (MVC — во всей красе)
  • как правило, на всех экранах методы ViewDidLoad/viewWillAppear на 300+ строк
  • вся верстка в одном сториборде
  • ошибок по верстке в огромном количестве, например, на скроллвью ставилась таблица
  • вместо того, чтобы менять у кнопки цвет при разных состояниях, использовались две разные кнопки для нажатого и отжатого состояния

Проработав 2 месяца, я решила уйти, т.к. не было грамотного тимлида в компании, мало работы, запрещали проводить рефакторинг, а поддерживать такой код нереально.

Потом мне опять пришлось искать работу и не один раз…

Ситуация на рынке и серые зарплаты

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

Советы для тех, кто решил стать iOS-разработчиком - 3

Вот с такой же ситуацией я тоже столкнулась: решила рискнуть и пошла опять на серую зарплату, т.к. на этот проект позвали бывшие коллеги. Хороший коллектив и адекватный тимлид для многих имеет большое значение. Для меня тоже это сыграло большую роль, и пришлось за это поплатиться. Проект был закрыт, зарплаты за последние 1.5 месяца не выплатили. Предложили компенсировать оборудованием с рабочего места.

Так я получила два приобретения: новенький мак 2016 года и опыт (никогда больше не связываться с серыми зарплатами).

Совет: обходить стороной серые зарплаты

Не покупайтесь на серую зарплату, пусть даже самую высокую, ну или рассчитывайте так, что зп будет выше настолько, чтобы можно было отложить на пару месяцев за 2 месяца работы! На рынке очень много компаний, которые платят неплохие деньги в белую.
Также не принимайте «псевдо-белые» предложения — с оформлением ИП. Статью [3] по этому поводу уже выкладывали на хабре.

Итоги

Подвожу итог всему изложенному:

  1. Не верьте рекламе онлайн-курсов со стажировками! Либо стажировку Вам предоставят фиктивную, либо дадут только контакты, а дальше уже сами… И снимите розовые очки, на рынке очень мало компаний, готовых брать людей на стажировку, т.к. стажер отнимает ценное время у высокооплачиваемого специалиста.
  2. Да, зарплаты разработчиков сейчас на рынке очень вкусные, но если Вы захотите сменить профессию здесь и сейчас, то придется запастись терпением и понять, что в первые 2-3 года на высокую зарплату можно не рассчитывать.
    Также учтите, что курсы длятся от 6 до 10 месяцев. Если не готовы увольняться с работы, то придется отказаться от привычных посиделок с друзьями, отпусков и выходных, т.к. все свободное время уйдет на обучение и выполнение домашних заданий.
  3. Отложите денег на случай, когда придется долго искать стажировку или работу.
  4. Учите теорию с первых дней курсов. Если самостоятельно получать знания и изучать что-то новое — это не ваше, значит, и профессия программиста — не ваше!
    Пример: на курсах я изучала objC, однако, в процессе работы возникла необходимость выучить еще и Swift. Разработчики, которые умеют писать на двух языках ценятся выше. Знание теории же всегда требуют при прохождении собеседований.
  5. Подтяните английский язык (минимум до intermediate), чтобы хотя бы WWDC могли смотреть в оригинале.
  6. Если планируете разрабатывать на iOS, лучше купить какой-нибудь б/у macMini или, если руки правильные, собрать хакинтош [4]. Желательно (но не обязательно) иметь возможность проверять свои результаты на реальном устройстве и, соответственно, купить аккаунт разработчика (100 у.е./год).
  7. Если у Вас мало опыта, обязательно уточните на собеседовании, есть ли опытный тимлид, и каким образом в компании происходит рефакторинг. Т.к. если попадете в компанию, где работают малоопытные коллеги, то Ваше развитие затормозится.
  8. Не покупайтесь на серые зарплаты и ИП [3]
  9. В статье не стала раскрывать вопрос о том, как на меня смотрели близкие и друзья, но имейте в виду, что смотреть на вас будут дикими глазами, всячески отговаривать и убеждать, что сделали неверный шаг.
    Думайте только своей головой. В конце концов, это ваша жизнь, и вам решать, как с ней поступить и куда дальше двигаться.
  10. Поставьте цель, пообещайте кому-нибудь, что выполните ее и рискните!
    Дальше все зависит только от вас! У меня получилось.

Теперь немного похвастаюсь. Что я смогла позволить себе за последний год:

  • расплатилась со всеми долгами;
  • выкупила машину;
  • купила курсы английского для дочери и для себя;
  • оплатила обучение в Греции дочке и ее бойфренду;

Всем желаю удачи в достижении поставленных целей!

P.S. HR-ам: Нет, я не занимаюсь поиском работы. Да, у меня есть хорошая высокооплачиваемая работа с белой зарплатой на интересном проекте, менять я ее не планирую. Точно не рассматриваю варианты релокации в СПБ, Н-Новгород, Калининград, Казань или Севастополь.
Рассмотрю только вариант переезда в Израиль (нет, еврейских корней нет, английский на уровне intermediate, еще знаю русский и украинский. Просто мне нравится море, страна и еврейское мировоззрение).

P.P.S.: Выйду замуж за еврея, желательно с фамилией Абрамович или Ротенберг (шутка)

Спасибо за то, что дочитали до конца!

Благодарю Lowtrack [1], за помощь в написании статьи.

Автор: MariyaSafonova

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/mobil-naya-razrabotka/284243

Ссылки в тексте:

[1] Lowtrack: https://habr.com/users/lowtrack/

[2] Mehdzor: https://habr.com/users/mehdzor/

[3] Статью: https://habr.com/post/300498/

[4] собрать хакинтош: https://habr.com/post/318164/

[5] Источник: https://habr.com/post/415345/?utm_source=habrahabr&utm_medium=rss&utm_campaign=415345