Какой язык программирования проще всего освоить новичку в качестве первого, с которым светит трудоустройство? Никита Смолянченко считает, что это определенно Swift — относительно молодой язык, разработанный в Apple для написания приложений под ее мобильные платформы. Никита — iOS Software Engineer. Казалось бы, человек с предубеждением, однако он достаточно аргументированно отстаивает свою позицию. Поговорили с ним о гениальности программистов, нежелании компаний поспевать за ростом сотрудников и возможной зарплатной коррекции в IT.
Как и многие современные специалисты, Никита выбрал самостоятельное обучение актуальным практическим навыкам программиста. В университете не доучился, но говорит, что карьере в IT это не помешало. Сейчас он работает в Vizor Interactive, опыт в iOS-разработке — более шести лет.
— Почему ты решил не оканчивать университет и уйти работать?
— Доучился почти три курса. Не окончил во многом потому, что к тому времени уже нашел работу. А когда ты работаешь, понимаешь, что тебе на работе нужно, какие акценты расставлять, на что обращать больше внимания.
В университете в Гомеле еще более ярко ощущается, что учебная программа негибкая, заскорузлая. Она не соответствует вызовам времени и не коррелирует с реальной работой.
С одной стороны, есть преподаватели, которым не интересен процесс, они не корректируют программу и работают по методичкам, условно говоря, за 2003 год. У тебя уже есть работа, мотивации ходить в университет на этом фоне все меньше.
С другой стороны, в общении с топ-менеджерами разных компаний, в процессе работы и собеседований как с белорусскими, так и с зарубежными компаниями приходит осознание, что образование в этой профессии ценится, если этот диплом достойный. Например, есть пара-тройка университетов и специальностей в Москве, с которых «Яндекс» или «Сбер» забирают выпускников к себе.
Само же по себе наличие диплома никак не увеличивает шансы на трудоустройство. Кадровый голод настолько сильный, что диплом вуза отходит на второй план. Гораздо важнее, что человек освоил сам, как он прогрессирует в профессии. Безусловно, знание основ — это всегда классно. Но университет не единственное место, где ты можешь эти основы получить.
— Твоя карьера в IT началась с работы тестировщиком?
— В конце второго курса я начал искать работу. Навыков не хватало. После череды неудачных собеседований в одной из компаний мне предложили вместо позиции разработчика попробоваться в тестировщики. Дали набор тем, которые надо изучить за выходные, и на следующем собеседовании приняли в штат.
Единственный «косяк»: в ходе собеседования на вопрос о желаемой зарплате я ответил «Хоть сколько-нибудь» — мне столько и платили. В отделе техподдержки платили $1,25 в час, мне, как тестировщику, — $1,5. Следующие полгода я так и работал, и было очень грустно.
Решил переходить в разработку. Несколько месяцев перед работой занимался программированием, а потом после новогоднего отпуска вернулся на работу и понял, что больше тестированием заниматься не могу. Большое спасибо директору, который в тот же день согласился меня отпустить. Еще три месяца ушло на систематизацию знаний в iOS-разработке и устройство на стажировку.
— Когда ты начинал в iOS, еще в силе был Objective-C?
— На носу уже был переход на вторую версию Swift. На стажировке обучение шло еще на Objective-C, а первый проект у меня был уже на Swift. Objective-C — это такая надстройка над С, развивался в то же время, что С++. Разные интерпретации очень похожих идей. В универе мы изучали C и C++, потому язык был для меня достаточно понятным. Единственное, у него своеобразный синтаксис. Если показать его разработчику, не знакомому с iOS-платформой, то он, скорее всего, перекрестится. Язык неочевидный. Он задумывался как лаконичный, который бы читался как английский. Но именование переменных и всех остальных значений выглядит очень громоздко, так как все это должно читаться как английский текст. Когда создавался Objective-C, в ходу были страшные вещи: указатели, ручное управление памятью и так далее.
Swift в этом плане ощущается совсем по-другому. Он современный, похож на другие новые языки. Если одним глазом смотреть, то достаточно сложно отличить его от того же Kotlin, который используется в Android-разработке.
Не скажу, что в Swift, как в устройствах Apple, ощущается какая-то магия. Но согласно опросу Stack Overflow, Swift — седьмой в рейтинге любимых языков, а Objective-C — третий с конца. Поэтому в Swift магии явно больше.
— Как считаешь человеку вообще без опыта освоить Swift будет проще, чем какой-нибудь другой язык программирования, например, JavaScript?
— Мне кажется, нельзя рассматривать язык отдельно от его инфраструктуры. С одной стороны, действительно, почти о любом другом массовом языке будет больше русскоязычных материалов, чем о Swift. Однако в сравнении с вебом постижение Swift сильно проще. Веб-разработку я бы не советовал выбирать человеку, совсем не знакомому с IT-индустрией. Это направление гораздо шире, объемнее и сложнее в плане количества технологий.
В этом плане изучение iOS-разработки легче: там проще ориентироваться, не нужно отсеивать фреймворки или технологии, которые уже не используются. Наверное, более корректным было бы сравнение с Android-разработкой. Это более близкие вещи, так как там тоже есть один понятный инструментарий, который ты используешь практически всегда. Но и в данном сравнении я бы советовал Swift, потому что Apple делает очень много для того, чтобы изучение было простым, чтобы оно проходило в игровой форме в Swift Playground — песочнице для исполнения кода.
У Apple настолько четко поставлен процесс передачи знаний от разработчика платформы к разработчикам приложений, что ты просто скачиваешь книги по Swift в предустановленном приложении iBooks и начинаешь учиться. Более доступный путь придумать сложно. К тому же мне кажется, что среда разработки Xcode гораздо более понятна и дружелюбна к пользователю. Банальное подключение сторонних библиотек выглядит лаконично и просто.
Чего ни коснись, получается, что у iOS всего меньше и все проще. Меньше устройств, под которые надо оптимизировать свое приложение. Меньше магазинов: на Android, помимо Google Play, есть еще Huawei App Gallery, Galaxy Store, Amazon Store, и это если не считать еще тех, что не принадлежат крупным платформодержателям. Нужно помнить про весь «зоопарк» производителей смартфонов, дистрибуторов приложений.
Так что да, по моему мнению, iOS-направление чуть ли не самое легкое в разработке вообще. Единственная проблема — нужен английский, чтобы изучать доступные учебные материалы. Сейчас в индустрии без английского в принципе никуда. Но русскоязычных материалов по iOS-разработке становится все больше.
— А в принципе работа программистом — это массовая штука? Или туда идут только гении?
— Существует достаточно распространенное мнение, что модели и категории, которыми ты мыслишь, формируются максимум в подростковом возрасте и дальше их нельзя изменить, перестроить. Мол, гуманитариев нельзя переучить и научить их мыслить абстрактно, математическому или логическому мышлению.
Я с этим совершенно не согласен. Способность к абстрактному мышлению — это вполне себе наша эволюционная особенность. Есть замечательная книга «Думай как математик» Барбары Оакли, которая изучала славянские языки и литературу, потом служила офицером связи в армии, что подтолкнуло ее к изучению математических предметов. Она заинтересовалась переходом от одной модели мышления к другой, получила докторскую степень в технических науках и написала книгу о том, что нужно в себе изменить, чтобы перестроить эти модели и научиться мыслить абстрактно, логически.
Мы же говорим про программирование, а не про учебу в топовых физико-математических университетах. Программирование — это инструмент, и инструмент не сложный. Он просто рассказывает компьютеру, как выполнять команды. Программисты, конечно, бывают разные. Кто-то пишет ПО для беспилотных автомобилей, поисковые системы, запускает ракеты в космос. А есть те, кто делает достаточно простые веб-сайты или погодные приложения. И те, и те программисты нужны. Но сложность определяет не программирование как процесс, а предметная область. Так что мнение о гениальности программистов и сложности этой сферы — это, в моем понимании, миф. Желание дальше развиваться и погружаться в эту сложность определяет, насколько тяжелой для тебя будет работа. А разработка программного обеспечения позволяет тебе самому выбрать необходимую сложность.
— В IT заходит много новичков. Но по той же iOS-разработке субъективно кажется, что вакансий на позицию мидл- или сеньор-программиста больше. Куда деваются «джуны»?
— Деление по таким уровням максимально условное. В каждой стране и компании оно свое. Кто-то предпочитает не повышать сотруднику зарплату, но дать ему новую должность, чтобы предоставить ощущение роста.
Как бы странно это ни звучало, но не все компании могут позволить себе джуниор-разработчика. Это неочевидно, но затраты на джуниора больше, чем его зарплата. Мидл и сеньор — это почти исключительно зарплата специалиста — самостоятельной единицы, которая способна производить понятный объем работы с поправкой на талант.
Джуниор — это разного качества пластилин. Это может быть классный материал, из которого за месяц ты слепишь специалиста, подходящего под твои задачи. Это может быть и дубовый пластилин, на который уйдет три месяца. И чаще всего на этапе собеседования ты этого понять не можешь. Дополнительные расходы на его дообучение, на менторинг — это время более опытного специалиста, который будет отвлекаться от своей работы. Большие и классные компании могут позволить себе наладить подобный процесс. В компаниях масштабом поменьше не всегда сеньор-разработчик может оказаться хорошим ментором.
Нанять мидл- или сеньор-разработчика гораздо проще. Потому даже по вакансиям можно увидеть, что спрос на опытных программистов на порядок выше.
— Вероятно, компании берут в расчет еще и то, что джуниоры «текучи» и через полгода-год человек, в которого было вложено много трудов, уйдет на рынок в поисках новой работы.
— Перед всеми компаниями, которые нанимают джуниоров, встает этот вопрос. Как сделать так, чтобы специалист, в которого ты вложил время и ресурсы, через полгода не сделал тебе ручкой? На нашем рынке принято привязывать контрактами, штрафами, отработками после университета.
Проблема не в том, что джуниоры уходят из компании спустя полгода, потому что они такие ветреные и меркантильные. Компании могут не поспевать за ростом сотрудника. Допустим, ты топ-менеджер прекрасной IT-компании. У тебя в методичке написано, что в среднем джуниор становится джуниором+ через год, через два года он мидл, через пять — сеньор. А тут приходит Вася, который полгода работает в компании, до красных глаз сидел в выходные и теперь может выполнять работу мидл-специалиста. Он хочет соответствующую зарплату. По методичке ему это светит только через полтора года. Он выходит на биржу труда и получает вакансию с соответствующей зарплатой.
Естественно, что в подобных условиях просто невозможно сидеть и ждать. Единицы компаний согласны поспевать за ростом сотрудника. Большинство не задумывается, сколько ресурсов у них уйдет на поиск замены специалисту, переросшему планку, которую для него задали.
В топовых российских компаниях появляется такой тренд, что, если разработчик просит слишком мало для своего навыка, они сами повышают ему зарплату до соответствующего уровня. Если заплатить ему меньше, со временем он в общении с коллегами по индустрии узнает, что за поворотом платят больше, и просто уйдет. А на его привлечение уже были потрачены ресурсы, надо все начинать заново. Это невыгодно.
У нас же все пытаются максимально сбить зарплату, думая, что ты будешь жить в танке, никогда не спросишь, сколько получают коллеги.
— Видишь ли ты какие-то сценарии, при которых зарплаты программистов будет ждать коррекция?
— О ней говорят очень давно — с тех пор, как программисты стали получать зарплаты, несопоставимые с тем рынком, на котором они работают. «Рынок перегрет, программисты слишком много получают» — большинство этих разговоров, как мне кажется, связаны с компаниями, которые не готовы платить больше из-за неоптимизированных процессов. Допустим, у них не самые выгодные заказчики. Или, например, компания работает на субподряде и выполняет заказы через вторые-третьи руки.
Последние два года мы живем в условиях коронакризиса. Все больше компаний учатся работать удаленно. Они расширили область найма, перестали искать на локальном рынке, исчезли условия переезда, появилась возможность работать на западного заказчика напрямую. Какая разница, где сидит твой разработчик: дома в Пало-Альто или в квартире в Гомеле?
У меня есть знакомый, который из Гомеля работал на американский стартап и получил от него процент от компании. В итоге вышло полтора миллиона долларов. Это было четыре-пять лет назад. Сейчас выйти на западного работодателя проще.
Есть мнение, что многие технологические компании переоценены и в Кремниевой долине разработчики получают слишком много в виде акций, бонусов, премий. Некоторые пророчат кризис, сравнимый с пузырем доткомов на рубеже тысячелетия. Даже если зарплаты упадут на глобальном рынке, они все равно не упадут ниже наших, белорусских. По меркам технологического рынка мы получаем еще не много.
— Насколько востребована iOS-разработка в Беларуси?
— Мы нужны. При создавании продукта для мобильной платформы очень велики шансы, что ты начнешь с iOS-приложения. Потому что она, скорее всего, принесет больше денег. Можно посмотреть примеры Instagram и Clubhouse, которые очень долго не выходили на Android. Казалось бы, Android-пользователей в десятки раз больше. Но App Store генерирует в два раза больше прибыли, чем Google Play. Один пользователь на iOS приносит гораздо больше денег, его проще склонить к оплате или подписке. До Android-приложения дело может так и не дойти.
iOS-разработчики нужны, им платят чуть больше. На нашем рынке разница может достигать 10—20%. Но для iOS-разработки тебе нужен компьютер на macOS, а большинство новичков не побежит покупать дорогой компьютер, чтобы войти в IT. Наверняка они будут пробовать учиться на том, что у них есть. Потому конкуренция среди соискателей на начальные вакансии будет меньше.
— Почему кросс-платформенные решения еще не убили нативную разработку под определенную мобильную платформу?
— Последние лет пять только и разговоров, что вот эта кросс-платформенная технология уж точно убьет нативную разработку. Все упирается в банальные вещи: где-то проседает производительность, где-то решает время разработки (отдельно писать на iOS и Android может быть быстрее).
На кросс-платформе всегда удобно делать демку. Но, когда начинаешь писать большой взрослый проект с нестандартными требованиями бизнеса, приходит осознание, почему кросс-платформа еще не победила: она не позволяет реализовать отдельные решения, которые на нативной платформе будут базовыми.
Мне кажется, в ближайшие несколько лет никаких серьезных угроз для нативной разработки нет.
Наш канал в Telegram. Присоединяйтесь!
Есть о чем рассказать? Пишите в наш телеграм-бот. Это анонимно и быстро
Перепечатка текста и фотографий Onlíner без разрешения редакции запрещена. ng@onliner.by