Директор по маркетингу сервисов компании «Яндекс» Андрей Себрант — о том, каким навыкам программистам стоит учиться сейчас, чтобы не остаться на обочине в будущем.

Профессии в программировании, которые можно смело считать профессиями будущего!

Программист-педагог

В первую очередь я бы выделил именно эту профессию. Программист-педагог — тот, кто не столько программирует нейронные сети или другие сложные системы машинного обучения, сколько умеет их обучать.
Здесь на первый план выходит не умение писать код с нуля, а понимание того, что делает код, написанный кем-то другим, и умение модифицировать его под свои цели. Главное — правильно построить процесс обучения сетки. Это отдельное умение, которое сейчас нигде не преподают. Точнее, почти нигде. Есть приятные исключения: Физтех, ШАД, ФКН ВШЭ и еще пара мест.
Такой специалист востребован при самых разных бизнес-задачах. Кому-то в силу универсальности применения машинного обучения нужно будет обучить одну и ту же сеть на DataSet Магнитогорского металлургического комбината для прогнозирования неких результатов металлургической плавки или еще чего-то, а с другой стороны, на данных пользователей World of Tanks и предсказать их отток.
Человек, который умеет обучить сетку, чтобы сегодня она эффективно предсказывала, как менять параметры сталеплавильной печи, а завтра — как изменять тарифные планы игрока в World of Tanks, и есть программист будущего. Понятно, что по мере того, как тысячи компаний, а не единицы, начнут использовать deep learning и нейронные сети в повседневной работе, им нужны будут программисты, которые эти сетки умеют учить, а не писать.
Такие специалисты будут востребованы в промышленности, среди банков, любыми подписными сервисами, начиная от мобильных операторов и заканчивая компьютерными играми. Это только те сферы, что лежат на поверхности.

Эксперт по open source

Вторая профессия будущего находится на стыке менеджмента и IT. Этот человек вместо того, чтобы писать задачу на разработку чего-либо с нуля, знает, где и какой открытый код можно быстро приспособить, или где и какие API могут быть доступны.
Сейчас «изобретением велосипедов» занято огромное количество команд, и в тот момент, когда они показывают созданный код, заказчик узнает, что он уже существует у кого-то (например, в репозитории Google). Нужны будут специалисты, которые являются экспертами по open source и понимают, какие велосипеды не надо изобретать. Они, наоборот, возьмут готовые части, которые лежат, из них быстро соберут — может быть, тот же велосипед, но собственный из готовых частей — и не будут поднимать здесь производство отдельных колес, шин и так далее.
Простой пример. Раньше хороший распределенный алгоритм, который мог распознавать изображения, был доступен пяти большим компаниям и трем большим университетам. На сегодня его найдет любой школьник, потому что в открытом доступе есть Tenzor Flow. Я знаю хороших школьников, которые с ним разбираются. Но и человека, который начнет писать с нуля что-нибудь похожее, я тоже знаю, потому что он плохо ориентируется в том, что бывает на GitHub.
Специалист такой профессии должен быть программистом, хорошо понимать и читать код, но не обязательно блестяще его писать.

Специалист по интерфейсному программированию

Все больше и больше вещей становятся не отдельно стоящими программами, а программами, которые обеспечивают работу двух программных интерфейсов друг с другом. То, что дается нам в облаке, в большинстве является не статическими данными, а рабочим интерфейсом, и с ним надо состыковать какой-то свой интерфейс.
Необходимо уметь работать с API облачных сервисов, знать эти сервисы, уметь их быстро связывать, да и вообще — понимать какой с чем можно связать. Это не написание всего с нуля, а максимальное использование того, что уже доступно и написано другими людьми. Особенно такие умения касаются тяжелых приложений — всего картографического или поискового.
Например, можно объединить социальную сеть и карты от Google или «Яндекс», что позволит создать сетку для поиска приятеля на районе. Будет классное приложение, и только сумасшедший решится писать свою систему авторизации и свою систему карт. Здесь речь идет не о том, чтобы взять готовый код и поднять его на своих серверах, а о том, чтобы твой код взаимодействовал с интерфейсами Google, Facebook, «Яндекс» и так далее.
Такой специалист знает, что происходит в мире, какие новые интерфейсы и где открываются и умеет хорошо с этими интерфейсами работать.
Приведу пример, как эти профессии могут конкурировать друг с другом. Стоит задача — в рамках сервиса нужно распознавать голос человека. Сейчас она решается с помощью нейронных сеток. Можно взять и закупить в Amazon нужные ресурсы, загрузить код того же Tenzor Flow и начать обучать эту сетку.
Здесь будут нужны два человека, которых мы упомянули. Специалист по работе с чужим кодом понимает, как Tenzor Flow поднять на облаке Amazon. Когда он это сделал, то в руки готовый продукт берет тот человек, которого мы назвали программистом-педагогом. И он обучает сетку, понимает, какие DataSet и с какими голосами загнать, чтобы сетка начала распознавать названия улиц на китайском языке.
Но может появиться специалист по интерфейсному программирования и сказать: ребята, есть программы распознавания речи Speech Kit или Nuance, нам не надо адаптировать код и арендовать серверное время, есть просто готовый API — загоняешь туда запись звука, а тебе возвращают текстовый файл в режиме реального времени. Так он может просто их лишить работы.
Почему взлетела Prisma? Ребята не писали код с нуля, знали, где его взять, как его модифицировать, где арендовать сервера подешевле. Это было использование умений профессий каждой из трех указанных мной групп.
Каким профессиям, наоборот, суждено погибнутьЯ бы не ставил так вопрос. Хороший программист умеет учиться. Сама профессия программирования будет модифицироваться, она уже сегодня использует совершенно другие инструменты и другие языки, чем 20 лет назад. И надо сказать, что те, кто им научились 20 лет назад, никуда не исчезли, они просто стали программистами, работающими в другой среде. Так будет и дальше. Некие отдельные умения программиста или некие среды, в которых он работает, будут, несомненно, изменяться.
Можно сказать, что те люди, которые сейчас являются веб-программистами, станут программистами для других устройств, так как важность веб-сервисов становится все меньше по мере роста портативных устройств или интернета вещей. Да, по этой же причине появляются новые языки программирования — Swift или Go. Но они благосклонно приняты программистами.
В общем, программисты, несомненно, останутся, просто будут работать в изменившейся среде, к чему им не привыкать.

Комментарии

Популярные сообщения из этого блога

Как начать майнить, мануал для новичков

TextXpert Phoenix