У моих друзей сын студент технического вуза. Мне они задали казалось бы простой вопрос: какой язык программирования имеет смыл изучить, чтобы быть актуальным на рынке труда через 10 лет… хотел сразу ответить что-нибудь типа С++, Java или С#, но задумался… Наверное отвечу как-то так:

 

Прежде чем ответить на вопрос, есть несколько замечаний:

•             Наше будущее (и уже настоящее) – это многопроцессорные системы, распределенные вычисления, виртуальные среды. Соответственно, чтобы писать эффективный код, надо понимать как работает код в многопроцессорной системе. Для этого надо понимать как ОС работает с процессором, как компилятор оптимизирует код, ну и вообще понимать многопоточное программирование. Необходимо разобраться с распределенными и облачными вычислениями и понимать, какой код будет эффективно работать как локально, так и в виртуальном облаке.

•             Программы они работают не вакууме – они что-то получают на вход, что-то с этим делают и выдают результат. На вход обычно приходят какие-то данные, полученные из DB или сети. Соответственно, нужно хорошо понимать структуры данных, их возможности и эффективность. Разумеется, нужно знать алгоритмы обработки и преобразования данных. Еще надо изучить SQL и NoSQL базы данных, чтобы понимать, как эффективно получать, использовать и модифицировать данные.

•             Современный программист – это не просто человек, пишущий код, он активно взаимодействует с окружающим миром. Сейчас все больше команд, в которых люди работают удаленно. Нужно уметь эффективно взаимодействовать с людьми, где бы они ни находились. И в будущем значение, так называемых, soft skills будет только расти.

•             Если хочется заниматься наукой, то видится, что в будущем значение следующих областей будет только расти: алгоритмы обработки данных (BigData), Machine Learning, переводчики, распознавание всего (речь, образы).

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

 

Из сказанного получается вывод, что то по большому счету все равно какой язык программирования изучать. Нужно в первую очередь прокачивать вышеперечисленные компетенции, тогда любой язык программирования будет просто новым синтаксисом! Но есть еще один вывод, что все-таки какой-то язык программирования изучить придется! ;) Вот свежий индекс TIOBE: http://www.tiobe.com/tiobe-index/  , брать надо что-то сверху списка.

 

Далее я хотел дать совет, что когда с синтаксисом языка будет покончено, пойдет следующий уровень: паттерны проектирования / программирования и далее еще много интересного на пути настоящего программиста: http://grompe.org.ru/static/prog_comp_matrix_ru.html , но не буду, чтобы пугать молодежь заранее! ;)