Не начинайте с веб-разработки

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

С учетом сказанного, я не думаю, что сначала изучение веб-разработки обязательно лучше. Я считаю, что использование мобильной разработки в качестве основной базы знаний, в отличие от веб-разработки с полным стеком, является более оптимальным путем.

У мобильной разработки более четкий путь обучения

Если все, что вы прошли, - это курс «Введение в программирование» или вы только начинаете заниматься этой областью, с чего начать веб-разработку?

Ну, «традиционное» начало было с LAMP (если вы новичок в веб-разработке, вам сначала нужно выучить все эти сокращения в стеке). В настоящее время наиболее популярным стеком является MEAN или MERN. Но есть также LEMP, Django, Ruby on Rails и многие другие. Отчасти трудность в обучении состоит в том, чтобы понять, с чего начать - и здесь есть много мест, с которых можно начать.

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

Давайте сравним это с разработкой для iOS и Android.

Если вы хотите изучить iOS, вы можете изучить Swift (относительно простой язык на базовом уровне) и либо UIKit, либо SwiftUI. Хотя изучение SwiftUI и Swift не обязательно проще, чем изучение MERN, путь намного яснее, и я считаю, что обучение более прямое.

Если вы хотите изучить Android, просто скачайте Android Studio, выберите Kotlin или Java на свой выбор и начните изучать платформу Android. Как человек, предпочитающий разработку под iOS, а не под Android, я считаю, что изучать Android проще, чем изучать iOS. Так что изучение Android было бы очень простым и относительно безболезненным путем, если у вас когда-либо был опыт работы с Java.

Поиск работы станет проще

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

Для мобильных ролей приложений значительно меньше. В последнее время веб-разработка стала особенно популярной из-за растущих учебных лагерей, в которых преподают комплексную разработку и ИТ-курсы в университетах, изучающих современную веб-разработку в качестве предмета. Если вы посмотрите на Опрос разработчиков Stack Overflow за 2019 год, то увидите, что 18% респондентов считают себя мобильными разработчиками по сравнению с 50% для full-stack и back-end и 33% для front-end. Да, в веб-разработке больше людей, чем в мобильной, но если вы пытаетесь прорваться в отрасль или только начинаете, для мобильных разработчиков по-прежнему есть много открытых ролей.

При подаче заявки на мобильные роли гораздо проще выполнить базовые требования. Для ролей веб-разработки приложения могут различаться по требованиям в зависимости от стека и языка, поэтому, если вы знаете другой, вы можете почувствовать себя менее квалифицированным кандидатом, и они могут обойти вас. При использовании мобильных устройств для большинства ролей требуется просто знание Swift / Objective-C и UIKit для ролей iOS и ролей Java / Kotlin и AndroidX для Android.

Стек технологий меняется реже

Objective-C был создан в 1984 году для NeXT, промежуточного предприятия Стива Джобса, и используется до сих пор. NSString, где NS означает NeXTStep, по-прежнему остается основой операционной системы iOS и рабочих мест iOS. Google и большинство других крупных корпораций по-прежнему в основном используют Objective-C. Итак, если вы изучили Objective-C десять лет назад, этот навык все еще актуален (хотя с тех пор было добавлено несколько наворотов, таких как ARC).

Точно так же Android построен на Java, и большинство крупных корпораций все еще ищут разработчиков с таким набором навыков, поскольку переход на Kotlin - хотя и безболезненный - только начинает происходить. Так же, как и в случае с Objective-C, если вы изучили Java в классе CS десять лет назад, этот навык по-прежнему является жизненно важным компонентом набора навыков разработчика Android.

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

Плохо начинать с веб-разработки?

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

Но если вы хотите проникнуть в сферу CS, я думаю, что мобильная связь может быть более приемлемым путем. Так я начал.

Я начал с разработки под iOS в старшей школе, разрабатывая и публикуя приложения самостоятельно. Он сделал чудеса для меня и всех, кого я знаю. Я смог пройти стажировку в Google в качестве первокурсника в относительно незаметной школе. Я смог принять участие в WWDC Apple в качестве ученого. И я смог работать над стартапом и продать его друзьям, которых я встретил на WWDC.

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