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

Этот вопрос нам прислал студент третьего курса факультета информационных технологий и полностью он звучит так: “Учат всему понемногу и теперь остро встал вопрос: на чём программировать-то? Язык программирования не столь существенен, ибо можно разобраться во всем. Конкретно интересует следующее: в какой отрасли программирования можно добиться большего успеха и лучше зарабатывать на жизнь?”

Передаём слово экспертам.

Александр Горный

Александр Горный, директор по информационным технологиям, руководитель департамента внутренней информационной разработки Mail.Ru Group

Мы советуем Интернет и всё, что с ним связано. Лучше строить карьеру в том, что растет, а именно интернет-сервисы выросли в десятки раз за последние десять лет и нет никаких признаков, что это развитие остановится.

Андрей Зырянов

Андрей Зырянов, руководитель научно-исследовательской лаборатории Parallels Lab в МФТИ

Конечно, есть области разработки, которые представляют определенную «модную» тему. Сейчас это мобильные приложения, облачные вычисления, Big data. Какое-то время назад были мега-популярны игры. Однако это не самая правильная постановка вопроса, потому что технологии быстро меняются.  Для того чтобы была перспектива роста, нужно иметь хорошую фундаментальную подготовку — хорошего знания языка и алгоритмов недостаточно. Поэтому следует подумать на счет стажировки в какой-то компании. При этом непременно нужно сочетать работу без ущерба для учебы.  Обратите внимание на кафедры отдельно взятых компаний в своем вузе. У больших компаний, как Parallels, есть свои научно-исследовательские центры в МФТИ, Бауманке, Санкт-Петербургском Академическом Университете, РосНОУ, Новосибирском Государственном университете. Там  создаются условия, даются исследовательские задачи, которые моделируют для студентов реальную работу в компании.

Владимир Юнев

Владимир Юнев, Technology Evangelist в Microsoft. Докладчик IT-конференции «Стачка»

Больше всего зарабатывают мобильные приложения — стартапы, которые взлетают с крутой идеей.

Кирилл Калмыков

Кирилл Калмыков, руководитель проектов в AT Consulting

Сейчас в нашем мире очень много всего связано с Интернетом, поэтому для хорошего заработка лучше выбрать какой-нибудь язык, позволяющий создавать web-приложения. Если конкретизировать, то Ruby + JavaScript. Ruby позволяет создавать приложения очень быстро, а в нашем динамически развивающимся мире это очень важно. Если ты можешь сделать приложение за несколько дней, это очень ценится. Не советую Java или PHP потому, что идеологии первого уже устарели, а второй — язык быдлокодеров и зашел в тупик в своем развитии. Рекомендую изучать Javascript, а еще лучше CoffeeScript (в случае использования Ruby): без них никакой динамики на фронтенде не будет, а значит ваше приложение будет уныло. Не советую учиться на Flash’еров — эта технология умирает.

Обязательно нужно учиться пользоваться фреймворками: для Ruby — это Ruby on Rails, для JavaScript — Angular.js или Ember.js (но ни в коем случае Backbone.js или Spring.js). Фреймворки позволяют лепить приложения не за дни, а за часы!

Вы точно не останетесь без работы и будете зарабатывать достаточно (чтобы, например, обеспечить семью), если начнете развиваться в этом направлении.

Еще одна, на мой взгляд, прибыльная отрасль — мобильные приложения. Думаю, не надо объяснять почему: смартфоны есть даже у бомжей. Но тут есть нюанс: если вы собираетесь писать сами какие-то приложения, то, скорее всего, много на этом не заработаете — для приложений всегда нужна качественная идея. Но тем не менее вы всегда сможете устроиться на работу и зарабатывать.

Также хочу посоветовать сосредоточится на разработке под Android. Устройств на этой платформе очень много, а Apple в последнее время не внушает перспектив для разработчиков под iOS. Но это мое субъективное мнение.

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

Также я советую обратить внимание на DevOps. Такие специалисты действительно много зарабатывают, но в институтах этому не учат. Подробно рассказывать о методологии не буду: если интересно, почитайте сами.

А теперь в какую сторону смотреть не советую:

  1. Повторюсь, это языки с устаревшей идеологией: Java, PHP и т. д. Работу вы найдете, но рано или поздно поймете, что нужно что-то менять. Так было со мной в 2007 г., когда я перешел с PHP на Ruby.
  1. Системные языки типа C или низкоуровневые языки. Причина проста: мало предложений, но если они есть, то платят там хорошо. Правда, я давно не мониторил тот рынок, могу ошибаться.
  1. Сверхновые модные языки: Erlang, Scala и т. д. Пока непонятно, займут ли они какую-нибудь свою нишу или нет. Представьте, что вы потратите силы на их изучение, а они уйдут.
Роман Юферев

Роман Юферев, руководитель направления ИТ-менеджмента и мониторинга в компании VIAcode

Окей, если говорить про «бабло», то лучше бросайте эту работу и всерьез займитесь изучением финансов, потому что на Wall Street вы заработаете гораздо больше, чем программируя на Python. Еще у современных подростков популярна идея работать «менеджером в «ГазПроме». Хотя я опять несколько утрирую ситуацию. Конечно, мир ИТ — это тоже сообщество довольно прилично зарабатывающих людей и есть определенная статистика по зарплатам, например, разработчики на Java сейчас могут рассчитывать на большие зарплаты, чем разработчики .Net. Так что могу порекомендовать почитать статистику из уважаемых источников, таких, как например hh.ru.

Михаил Адигеев

Михаил Адигеев, начальник отдела проектов ГК «ГЭНДАЛЬФ», доцент ЮФУ, эксперт международной олимпиады «IT-Планета»

Успех программиста определяется, действительно, не столько языком, сколько его способностью решать конкретные прикладные задачи. Важно глубоко разбираться в предметной области, понимать потребности клиента (или потенциального/реального пользователя программы) — причём понимать их даже глубже и шире, чем сам клиент. Что касается областей, то сейчас на подъёме облачные технологии, интеллектуальный анализ данных. И, конечно, «вечная» область — автоматизация бизнеса. Для последней области, на мой взгляд (не совсем объективный, конечно) наилучший выбор — 1С. Эта система предоставляет большой выбор возможностей для роста — и в качестве программиста, и в качестве эксперта-консультант по автоматизации и оптимизации бизнес-процессов.

Сергей Терлецкий

Сергей Терлецкий, менеджер по работе с образовательными учреждениями в компании Embarcadero

Наша компания постоянно мониторит рынок и опрашивает профессиональных разработчиков, чтобы развивать наши продукты в востребованных направлениях. Будущий тренд – это связь облачных технологий, мобильных приложений и интернет вещей. Особенно будет востребована кроссплатформенная разработка и создание связанных приложений. Попробуйте RAD Studio XE7.

Сергей Зефиров

Сергей Зефиров, программист с широким опытом работы, энтузиаст и евангелист языка Haskell

Есть такая военная максима: хороший выбор приводит к большим возможностям хорошего выбора.

Поясню. В районе конца 70-х бурное развитие среднего класса США привело к большому спросу на бухгалтеров из-за появления большого количества небольших фирм. Поэтому бухгалтерские курсы пользовались невероятным спросом и было выпущено невероятное количество бухгалтеров. Всё это цвело и пахло до середины 80-х, когда распространение персональных компьютеров позволили большому количеству народа пользоваться программами бухгалтерского учета. Нужда в бухгалтерах отпала.

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

Если вы выберете сейчас финансы и пойдёте работать в банк, то вы заработаете довольно много. Но! В западной прессе раздаются голоса, подтверждаемые исследованиями, что финансовая сфера на самом деле вредит развитию экономики. И что её надо сокращать.

Поэтому вероятна ситуация, что ваш текущий выбор финансовой сферы будет провален.

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

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

Кирилл Мокевнин

Кирилл Мокевнин, технический директор образовательного проекта Hexlet.io

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

Алексей Михайлишин

Алексей Михайлишин, руководитель отдела разработки ПО компании ОС3

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

Также замечу, что хотя опыт реальной разработки очень важен, не стоит уходить в работу слишком рано и переносить её на более приоритетное место по сравнению с учёбой. Как только срабатывает этот переключатель, вернуться обратно к полноценному обучению довольно сложно. У вас появятся определённые зарплатные ожидания и перейти на хуже оплачиваемую стажировку будет хотя бы психологически сложнее, хотя она и могла бы дать вам намного больше для дальнейшего развития. Пока вы студент, у вас есть время на участие в мероприятиях вроде Google Summer of Code, есть возможности продолжить обучение за рубежом и ещё много других открытых дверей. Конечно, для большинства вещей никогда не будет поздно, но скорее всего вы многое пропустите, если начнёте работать слишком рано.

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

Василий Кобзарь

Василий Кобзарь, преподаватель GeekBrains, специализируется на администрировании Linux

Программист должен писать код постоянно, ибо только этим достигается профессиональное развитие. Если у вас нет готовой задачи, которая требует решения, научитесь находить такие задачи самостоятельно. Большая часть таких задач будет лежать в области персональных предпочтений. Например, подумайте, чего вам не хватает в вашем телефоне, каких сайтов, полезных вам лично ещё нет в Интернете и т.п.

Чанг Ку

Чанг Ку, доцент факультета Компьютерных технологий Университета Иннополис

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

Владимир Голованов

Владимир Голованов, ведущий Java-разработчик ГК «Центр Финансовых Технологий», партнёра международной олимпиады «IT-Планета»

Тут однозначного ответа нет — в разное время требования рынка разные. И также необходимо не забывать, стоимость проекта для заказчика и та сумма, которая достается разработчику — разные вещи. Поэтому я думаю, что не стоит гоняться за журавлем в небе, а выбрать какое-нибудь перспективное направление — и двигаться в эту сторону. Например, такие направления, как 3D-графика и создание web-приложений, еще довольно долго будут востребованы.

Здесь также есть варианты: двигаться в сторону узкой специализации по какой-нибудь технологии, или брать широтой спектра. Узкая специализация позволит быть экспертом в выбранной области, но создает трудности, если будет необходимо что-либо иное. Широкий спектр позволяет выбирать из более широкого списка предложений по трудоустройству (особенно хорошо на первых порах), но, как правило, при этом новички не учатся разбираться в том, как эти системы работают — в итоге в долгосрочной перспективе начинают проигрывать. Так что, IMHO, лучше всего быть экспертом в нескольких областях, но при этом иметь представление об остальных технологиях, чтобы не пропустить удачный момент, когда знание какой-то конкретной технологии сможет принести существенный плюс.

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

Булат Гайфулин

Булат Гайфулин, ведущий программист Acronis по облачным технологиям

Если вам интересны варианты, наиболее перспективные с точки зрения развития и дохода, то я бы советовал смотреть в сторону распределенных вычислений, облачных сервисов и Big data (хранение, обработка и анализ больших данных). С облачными приложениями также очень тесно связан рынок мобильных технологий. Еще одно перспективное направление — интернет вещей. Учитывая, с какой скоростью появляются умные телевизоры, часы и автомобили можно предположить, что недалек тот день, когда обычный холодильник или микроволновка тоже будут подключены к Интернету.

Если вы выберете облачные вычисления — сферу, которая очень активно растет все последние годы, – то здесь возможны два пути. Можно создавать сами технологии, а можно — находить им прикладное применение. Востребованы разработчики, которые пишут инфраструктуру для обработки миллионов, а то и миллиардов запросов в секунду, обеспечивают надежное хранение огромных объемов данных и управление ими. Тут можно привести в пример google appengine: мне кажется, это яркий образец того, как будет вестись разработка в будущем. Но с другой стороны, не меньше ценятся специалисты, которые могут использовать все эти технологии для решения самых разных задач. Для этого тоже требуется понимание, где и какой инструмент можно применить, а это возможно лишь при очень хорошем знании предмета.

Из языков программирования я бы все-таки отдельно отметил C/C++. На мой взгляд, если вы знаете этот язык, то выучить любой другой не составит труда. В последнее время также становится модным язык «go»: его активно продвигает Google.

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