Как человеку без опыта в ИТ встать на «яблочный» путь программирования, в статье на DEV.BY рассказал Максим Павлюченко, Senior iOS Developer в Apalon.
iOS-разработчики — относительно молодая гильдия. Появилась через 2 года после iPhone. Шел непростой посткризисный 2009 год. Именно в тот момент Apple решила дать возможность сторонним разработчикам пощупать iPhone SDK (их среду разработки для iPhone). И тут понеслось.
Через год-два даже заштатная чебуречная в Праге или в Амстердаме имела собственное приложение в AppStore. Появился даже очень узкий рынок индивидуальных приложений (приложение делается для одного человека и не распространяется через AppStore, устанавливается только на устройство заказчика): дорого, богато, и ещё столько же за неразглашение.
Надо ли говорить, что профессия гиперпопулярна? Нет, не надо. По данным Apple, по состоянию на лето 2020 года насчитывается порядка 23 миллионов зарегистрированных разработчиков. Такая популярность в свою очередь рождает другие — в основном для работодателя — проблемы. К примеру, перегретый рынок. На данный момент он насыщен специалистами среднего и начального уровня. Компаниям зачастую сложно найти и удержать хорошего опытного специалиста. С другой стороны, кто сказал, что конкуренция — это плохо?
Сначала большинство iOS-программистов были теми, кто перекочевал из смежных областей, т. е. они уже являлись айтишниками из сферы разработки. Ситуация изменилась, и лично я знаю не мало людей, для которых iOS (равно как и Android) — начало пути в ИТ-отрасли.
Что делает iOS-разработчик
В двух словах: пишет приложения (программы, игры и т. д.) для iPhone/iPad. Иногда еще и для macOS.
Именно пишет. Как художник. Это важно. Могу поспорить с любым, кто скажет обратное, но программист, в какой бы сфере ни работал, — это творческая профессия. Не меньше. Прежде всего потому, что языки программирования изначально языки, а уже потом «программирования». И тут не достаточно обладать знанием синтаксиса языка, чтобы решить любую прикладную задачу.
Языком нужно владеть в достаточной степени, чтобы грамотно и уместно использовать его структуры и идиомы, обороты и конструкции. А это уже, как ни крути, процесс созидания. Да, кто-то может сказать, что в программировании, если проводить лингвистическую аналогию с той же публицистикой, канцелярит принят как стандарт, но вам никто не мешает даже в таком случае писать код элегантно, красиво, и не в ущерб функциональности, а не топорно и в лоб.
Кратко о том, как происходит непосредственный процесс создания приложений.
- В большинстве случаев разработчику выдается готовое техническое задание, разбитое на менее ёмкие подзадания. Но это не значит, что разработчик не принимает участия в разработке самого задания. Почти всегда перед утверждением технического задания с ним проводят технические консультации.
- Следующий большой этап — это создание архитектуры приложения. Их существует достаточно, чтобы решать разные проблемы разработки. Но ни одна не является серебрянной пулей. С большой вероятностью придется дорабатывать и допиливать любое готовое решение.
- Дальше все относительно понятно: пишем код, реализуем задачу за задачей, которые тут же проверяет тестировщик и возвращает, если где-то что-то криво работает. И так итерация за итерацией, спринт за спринтом. До тех пор пока не получим конфетку.
О процессе разработки написано немало книг и говорить об этом можно часами, но это уже другая статья. В повседневном рабочем режиме разработчик общается с коллегами из других цехов: тестировщики, дизайнеры, деливери-менеджеры, продакт-менеджеры, локализаторы и многие другие. Но так делают только хорошие котики. Плохие котики ни с кем не коммуницируют и живут в своей реальности.
На чем пишем
Раньше — на Objective C. Сейчас — на Swift. Признаться, поначалу я относился к нему скептически и не думал, что он выстрелит. Слишком сырой, слишком часто обновляется, ломая предыдущий код.
Для статистики: с первой версии Swift 1.0 (2014 г) до текущей Swift 5.3.2 была 41 версия. Правды ради отнимем 13 промежуточных, выпущенных для других платформ. Все равно 28 версий языка за 6 лет — это, казалось бы, много. Ан нет. Это говорит о том, что язык активно развивается. Как живой организм.
К примеру: Pike, который придумали в 1994 году (26 лет, Карл!), и у которого было немного ревизий (а по сути вообще не было внятных), сейчас очень сильно сдал и применяется разве что для специфических вещей, пользователей которых по статистике меньше 3%, и число постоянно падает.
Тут нужно сказать, что окончательно перейти на Swift у Apple пока не получилось, но они активно движутся в этом направлении. Так что иногда приходится применять и Objective C.
Карьера, перспективы
Карьера iOS-ника, да, впрочем, как и любого разработчика, выглядит примерно так: из грязи в князи. Теперь подробней.
Сначала вы — пластилин, из которого лепят что-то похожее на разработчика. Менторы и приставленные к вам матёрые разработчики обучают вас основам профессии.
Это фаза Junior developer (в некоторых компаниях до этой фазы есть уровень «Стажер», но суть та же). «Джуну» не доверят выкладывать свой код даже в промежуточный (dev) репозиторий. У него отдельная песочница, в которой он не может причинить вред компании. Большинство кода, который вы напишете не будет иметь применения в реальных проектах, либо это будут максимально рутинные и безопасные куски проекта, которые все равно три раза проверят за вас ваши лиды (ведущие разрабы).
На протяжении всего этого периода компания вкладывает в вас ресурсы. Пользы вы практически не приносите. Но это нормально. Так и должно быть. В первые полгода-год от вас сильно ничего не ждут. Тут ставка на четрые-пять лет. Со временем вам начнут давать куски реальных проектов посложнее. Не отказываться и не бояться! Проявлять инициативу. Это прямой путь к «мидлу».
Middle Developer (он же Staff Developer, если по-старому). Вы вполне самостоятельны, можете решать задачи средней сложности и некоторые сложные задачи. Обычное время от джуна до мидла составляет год-два. Тут все зависит от вас. Зато финансовое вознаграждение вас порадует, т. к. это не прибавка в 10%, а скорее всего целочисленный множитель.
Senior Developer. Сеньор и в Африке сеньор. Вы пока еще не можете открывать кабинет директора с ноги, но уже обладаете значительным весом в обсуждении технических и технологических аспектов проекта. Как скажете, так и будет. «Но помни: с большой силой приходит большая ответственность». Так что спросу с вас значительно больше. Но и зп тоже не маленькая.
А вот дальше стандартная вилка: пойдёте вы в лиды (Team Lead) или продолжите развиваться горизонтально. Тут есть выбор!
В целом всё как в армии, только без грамма насилия. Зрелые программисты — добрые люди. А еще они с родительской теплотой и поддержкой относятся к начинающим.
Основные инструменты в работе
- Левое полушарие.
- Правое полушарие.
- А теперь оба — и в таком состоянии ведем разработку.
Всё, что вам нужно для старта, — это среда разработки XCode, которая для элементарной работы органическим способом постигается за полгода. А дальше — больше. Остальное — вкусовщина. Кто-то использует сторонние утилиты для упрощения повседневной рутины, кто-то пишет свои скрипты или даже свой софт.
Что нужно знать
Желательно знать английский. Большинство документаций написано и появляется на английском. А читать и понимать их необходимо. Как правило, в компаниях есть внутренние оплачиваемые языковые курсы либо предусмотрены компенсации за внешние.
В остальном я, проведя немалое количество собеседований, давно распрощался со стереотипом про необходимое высшее техническое образование. Это, скорее, миф. Да, оно дает определенный склад ума. Но не дает практически никаких прикладных знаний для индустрии.
Если бы я сейчас спросил себя: пригодилось ли мне все то, чему меня обучали в университете, я не смог бы однозначно ответить на этот вопрос. Но точно могу сказать, что эта профессия доступна всем, кто захочет её освоить и не побоится временных трудностей. Поддержка всегда есть. И её очень много. Сообщество разработчиков — одна из самых больших коалиций во всем мире.
Чем нужно обладать
Желанием что-то изменить в своей жизни. И тут важно не бояться попробовать. Я лично знаю примеры, когда программистами становились бывшие милиционеры, религиозные служащие, строители и много кто ещё. Честно. Знаю их лично. Классные ребята.
Да вот конкретный пример, если хотите.
Мой друг, не так давно, сменив за свои 30 с лишним годиков не мало профессий, задумался об очередном этапе своей жизни и о том, что хочется стабильности, надежности и финансовой свободы на фронтах своей жизни. Сквозь неуверенность и опасения («я не смогу», «у меня не получится», «я в этом совсем ничего не понимаю», «да я вообще не технарь», и т. д.), но с ответственным подходом к происходящему просто записался на открытые бесплатные онлайн-курсы. Через пару месяцев он практически поселился у меня дома, сросся в одно целое с компом, не спал ночами, поглощал литры кофе и грыз научный гранит программирования под iOS. Он его натурально загрызал. Надо сказать, что менторил я его по системе «Сам читаешь, сам делаешь. Непонятно — читаешь еще раз вот тут». Короче, жесткое кунг-фу, но выбора тогда не было. Есть программы гораздо более мягкие и абсолютно не обязательно сидеть по 12 часов день. Есть даже варианты без отрыва от производства, но они дольше. В итоге мой друг сейчас на хорошем счету в одной из крупнейших продуктовых компаний в Минске. Ещё раз: меньше года у него ушло на такой взлёт.
С чего начать и что почитать
Человеку, решившему начать с нуля я бы рекомендовал не книгу, а курсы. Есть платные, есть бесплатные. Вот несколько проверенных курсов (порядок ни на что не влияет):
- Swiftbook — база бесплатная, отдельные категории платные, но приемлемо.
- RS school — толковые бесплатные курсы, но нужны базовые знания; там же написано какие, и как их получить.
- Курсы Александа Сенина — неплохие авторские курсы, платные, но иногда можно попасть на скидки и акции. На этом сайте воообще ожно найти много разных iOS курсов, в том числе и на русском.
- The Swift Developers — бесплатные видео уроки.
Вывод: не стой там, иди сюда. Всё получится!
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]