Вы когда-нибудь задумывались, стоит ли изучать Kotlin или другой язык программирования?

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

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

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

Должен ли я быть универсалом или специалистом?

Конечно, ответ будет: «Это зависит от обстоятельств!»

Некоторые разработчики считают, что «Если я разбираюсь в разработке как для iOS, так и для Android, мне следует платить вдвое!» Проблема в том, что… Разработчики обычно получают почасовую оплату (и сколько они могут произвести!), И знание двух платформ не делает вас вдвое продуктивнее (например, изменение контекста может фактически сделать вас менее продуктивным)!

Итак, если вы разработчик iOS, мы считаем, что вам следует стремиться стать специалистом по разработке iOS. Таким образом, Swift должен быть вашим специализированным языком.

Это нелогично, но, как правило, становление специалистом (например, «Я специалист по iOS / Swift») окупается больше, чем попытка быть универсалом («Я - iOS / Android / Swift / Kotlin / Obj-C / JS. / PHP / JAVA / C # /… dev »).

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

Это не значит, что вам не следует изучать другие технологии. Наоборот. Безусловно, вы должны выучить другие языки. Мы знаем многих высокооплачиваемых разработчиков iOS, которые используют Objective-C, Kotlin, JS, Ruby, JAVA и т. Д. В своей повседневной работе. Но рекламируя себя на высокооплачиваемой должности в iOS, они появляются как специалисты по iOS / Swift!

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

Представьте себя на его месте. Вы бы выбрали «универсального хирурга» или «коленного хирурга, специализирующегося на спортивных травмах с разрывом мениска»?

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

Тот же принцип применим и к вашей карьере. На данный момент у специалистов iOS / Swift есть много выдающихся возможностей для iOS. Потому что бизнес считает более безопасным выбором дорогих специалистов.

Конечно, есть универсальные разработчики, которые хорошо зарабатывают! Однако, по нашему опыту, это не норма. Просто потому, что универсальный разработчик, умеющий делать все, часто выглядит «менее осведомленным» в отношении сложных и полезных проектов iOS.

Если ваше сердце тикает от работы с несколькими языками, фреймворками и платформами, дерзайте! В противном случае стать специалистом может быть лучшей (и более выгодной) альтернативой.

Постановка четких целей

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

Например, если ваша цель - изучить, как решения MVC, MVVM и MVP реализованы на других платформах, изучение того, как создавать приложения Android / Kotlin, может стать отличным упражнением. Или, если вы хотите изучить разные парадигмы программирования, такие как функциональное программирование, изучение Clojure или Haskell было бы фантастическим.

Другими словами, если ваша цель - улучшить свои навыки программирования, вам обязательно стоит подумать о том, чтобы попробовать другую технологию, поскольку она может расширить ваши знания и, следовательно, вашу ценность как разработчика (вы всегда можете перенести то, что вы узнали, в разработку для iOS / Swift! ).

Более того, создание побочного проекта с открытым исходным кодом для изучения новой технологии может быть чрезвычайно увлекательным и полезным. В идеале вы должны задокументировать свои знания в статьях, чтобы увеличить свою представленность в Интернете (всегда полезно продвигать себя!).

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

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

Развитие ценных технологических навыков

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

Простой принцип: Дефицит играет важную роль в компенсации.

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

Однако спрос на определенный навык и компенсация не всегда совпадают.

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

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

При этом мы не рекомендуем новичкам или даже разработчикам iOS среднего уровня осваивать Objective-C, поскольку это потребует больших усилий и может не окупиться в долгосрочной перспективе. Такие возможности больше подходят старшим и опытным разработчикам Objective-C (специалистам), которые уже накопили навыки за долгие годы.

По нашему мнению, вам не следует тратить время, деньги и усилия на унаследованные навыки, связанные с конкретными технологиями.

Развитие основных навыков, не зависящих от технологий

Хорошо, теперь вы понимаете, как важно стать специалистом.

Но… «что, если я стану специалистом в определенной технологии, а потом она устареет?»

В самом деле, это законное беспокойство. Технологический ландшафт постоянно меняется, а вместе с ним меняются и технологии, которые мы используем для разработки замечательных продуктов (надеюсь, к лучшему!).

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

Однако… Вместо того, чтобы пытаться стать универсальным специалистом, что делать, если вы создадите высокооплачиваемые навыки, сочетающие в себе крайнюю редкость и высокий спрос на рынке труда? А что, если бы эти ценные навыки можно было применить на любой другой платформе, чтобы вам не приходилось начинать с нуля каждый раз, когда в отрасли происходят новые технологические сдвиги?

Хорошая новость в том, что… такие ценные навыки существуют, и вы можете ими овладеть!

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

Например, следующие высокооплачиваемые навыки не зависят от языка или платформы, которую вы используете:

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

Резюме

Развитие необходимых и неподвластных времени навыков даст вам позитивный взгляд на вещи и комфортное отношение к большим изменениям в отрасли. Это означает, что вам не нужно беспокоиться о том, какой язык или платформу вы должны изучать дальше. Адаптация к будущим вызовам и изменениям будет простой и рентабельной. Фактически, каждая смена станет полезным и весьма прибыльным занятием!

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

Оглядываясь назад, продолжайте изучать все, что вам интересно и полезно (важно получать удовольствие!). Если вы стремитесь к успеху, долгой работе и выдающейся карьере, обязательно овладейте вечными основами профессиональной разработки программного обеспечения.

Первоначально опубликовано на https://www.essentialdeveloper.com.

Давайте подключимся

Если вам понравилась эта статья, посетите нас по адресу https://essentialdeveloper.com и получите более подробный подобный контент.

Следуйте за нами в: YouTubeTwitterFacebookGitHub