На этот вопрос существует множество ответов в сети. Некогда мы уже писали статью об этом. Тем не менее, судя по вопросам, которые нам задают в социальных сетях, новички часто теряются в обилии информации и не знают, с чего конкретно начинать. В принципе, мы на JavaRush только тем и занимаемся, что помогаем ответить на этот вопрос. Однако для тех, кто совсем растерялся, мы решили составить приблизительный план действий.
Для начала определись с пулом технологий
- Выбери 2-3 основных источника знаний, а также с десяток дополнительных. Но не забывай «гуглить», если что-то не ясно.
- Выбери среду разработки и установи на свою рабочую машину всё необходимое ПО.
- Определись с тем, что еще учить и где черпать информацию.
А теперь обо всем по порядку.
Для начала определись с языком и пулом технологий
Если ты совсем-совсем ничего не знаешь о программировании, у тебя есть два варианта (на самом деле — больше, но мы тут не для того, чтобы тебя запутать).
Путь первый. Попробовать что-то максимально простое на базовом уровне, и уже потом — определиться.

Например, язык разметки сайтов HTML. Базовое знание HTML — полезный навык для любого айтишника. Однако сам по себе этот язык дает новичку очень смутное представление о программировании как таковом. Разметка — это не вполне программирование, и чтобы дойти от создания страничек до настоящих задач, которые решают не верстальщики, а программисты, нужно изучить очень многое. Тем не менее, получить представление об HTML и его наводящем красоту вечном спутнике CSS — очень просто.
Интерактивные курсы можно найти здесь:
www.codecademy.com/learn/web
htmlacademy.ru/program
В обоих курсах есть платный и бесплатный контент. Бесплатного для начала вполне достаточно.
Не слишком сложно будет изучить основы JavaScript. Это уже самый настоящий язык программирования. Мегапопулярный причем, правда, с одним «но» — это самый популярный «второй язык», то есть такой, который большинство программистов используют как вспомогательный. Основным он является для так называемых «Фронтендщиков», тех программистов, которые создают и привносят интерактивность в интернет-странички.
Справедливости ради заметим: простота JavaScript — палка о двух концах. На начальном уровне всё очень просто, но, запрограммировать относительно сложное многострочное приложение на JavaScript — задача не из легких. Так что его нельзя назвать универсальным языком. Тем не менее, вот тебе пара ссылок на хорошие JavaScript-ресурсы. Пригодятся если не сразу, то немного позднее.
learn.javascript.ru/intro
www.codecademy.com/learn/javascript
Хорошим «учебным» языком сегодня считается Python. Он достаточно прост в освоении, отличается читаемым кодом решает широкий круг проблем, позволяя сфокусироваться на задаче, без постоянных треволнений о том, как в этом самом программировании всё устроено. В какой-то момент эта особенность («высокоуровневость») может сыграть с новичком злую шутку, и он будет пытаться искать у доброй «змейки» руки и ноги, которых нет.

У Python’а есть и другие недостатки, например, медлительность при исполнении программ. И еще масса всяких подводных камней, которые становятся очевидны позднее, когда программист достаточно «набьет руку» на простейших задачах.
Есть еще очень популярный PHP, но вряд ли стоит с него начинать: язык и правда распространён, но к нему у профессионалов масса претензий. Упомянем и Ruby — язык чем-то похожий на Python, но не самый простой для понимания. PHP, Ruby и Python решают примерно одни и те же задачи.
В принципе, если ты уверен на все 200%, что хочешь писать только сайты и ничего более, пул HTML + CSS + JavaScript + Python/PHP/Ruby тебе подходит. Хотя на самом деле, эти прекрасные технологии даже Web не полностью охватывают. Всякие сложные бизнес-программы, которые прячутся за сайтами очень часто написаны на более универсальных языках. Таких как Java или C#.
Помимо всего остального, рекомендуем обязательно посмотреть популярный Гарвардский курс по основам программирования CS50 (мы его перевели на русский недавно, посмотреть можно здесь). Он идеально подходит для новичков.
А что если тебе, обучившись, захочется не сайты клепать, а писать игры, создавать приложения под мобильные устройства, программировать микропроцессоры, или создавать огромные корпоративные программы? А вдруг робототехникой увлечешься? Наукой? Да мало ли, куда занесет… Вспомни, так ли редко жизнь вносила в твои планы свои коррективы? Вот почему мы считаем более рациональным и правильным второй путь.
Путь второй. Изучить универсальный и востребованный язык программирования, умение работать с которым хорошо оплачивается.

Вышеупомянутый Python в какой-то мере подходит, но есть куда более мощные в своей универсальности языки. Среди них — Java, C#, C++. Первые два во многом похожи и решают похожие задачи. По сути, они решают какие угодно задачи. Web, десктопные и мобильные (с оговорками, о которых позднее) приложения, работа с консолью и графикой. Учебный код на них тоже вполне комфортно писать. Какой выбрать? В принципе, любой из них хорош. Но давай действовать рационально (это очень полезно для программиста!). Вбиваем в Google что-то вроде «самые востребованные языки программирования» и смотрим на результат.
Вот несколько интересных ссылок:
dou.ua/lenta/articles/language-rating-jan-2016/
hh.ua/article/13333
itdistrict.ru/kakoy-yazyik-programmirovaniya-samyiy-vostrebovannyiy-v-2016-godu/
dev.by/lenta/main/top-15-samyh-vostrebovannyh-yazykov-programmirovaniya-v-2015-m
www.3dnews.ru/926356
В первой статье подведен итог традиционного опроса разработчиков (6181 человек, 91,5% респондентов проживает в Украине, 8,5% — за ее пределами), посвященного востребованности языков программировании.
Во второй — опрос HR-менеджеров (это те, кто персонал подбирают), о том, какие специалисты в сфере разработки им больше всего нужны.
Последние три статьи содержат выводы экспертов, речь идет о глобальном рынке труда.
Если тебе лень переходить по ссылкам, вот выжимка из статей:
Судя по источникам, самым востребованным языком является Java. Также в лидерах числятся кое-где JavaScript и PHP. JavaScript по причине его распространённости в вебе и потому, что его очень часто используют в качестве «второго» языка (это тоже отображено в исследовании из первой ссылки). Причина распространения PHP следующая: очень много сайтов было написано именно на этом языке, их нужно как-то поддерживать, поэтому специалисты всё ещё нужны. Однако их количество, согласно тому же исследованию и здравому смыслу (язык имеет массу недостатков, с этим тезисом согласно большинство разработчиков), продолжает сокращаться. Стало меньше и тех, кто пишет на C#, в то время как количество людей, использующих Java, возросло, JavaScript — тоже. Выросло и число программистов на Python, но процент опрошенных по рынку пока невелик: 8%, в то время как доля Java составляет 26.3%.
Далее — опрос рекрутеров. Из него тоже можно сделать однозначный вывод, что самые востребованные разработчики сегодня — те, кто владеет языком программирования Java. Их назвали нужными все опрошенные HR-ы без исключения. Вторыми по востребованности по мнению специалистов по найму являются те, кто программирует на C#.
Ссылки на статьи, в которых описаны мировые тенденции не внесли никакого разнообразия в стройную картину: Java, Java и снова Java.
Или вот еще подробный видеоролик, в котором умудренный программист поясняет, какой язык и для чего нужен. Сам программирует на C#, C, Python. В качестве первого языка рекомендует Java:www.youtube.com/watch?v=T70qJndjYi0
Популярность языка связана в первую очередь с его спецификой: именно на Java реализуется множество бизнес-приложений, он универсален и не зависит от платформы, на которой запускается программа. Язык отлично подходит для создания больших и маленьких программ. Кроме того, на основе Java создан Android. Java существует уже довольно давно, и за время, прошедшее с её рождения, язык оброс множеством полезных библиотек, и при этом активно развивается и обновляется. Так что для работы с Java нужны специалисты и для разработки новых продуктов, и для поддержки/обновления уже существующих.
Ну хорошо, допустим, Java. Как платят специалистам по этому языку?

Чтобы это выяснить, есть много прекрасных сайтов, например, DOU. Кроме всего прочего на этом сайте собирается статистика о том, сколько зарабатывают специалисты по разработке и другие «айтишники» в Украине. Итак, переходим по ссылке, выбираем там, например, город Киев и должность Junior Developer (или просто Developer), выбираем Java и сравниваем с другими языками. Если ты живешь не в Киеве, не переживай: мы отслеживали разницу стоимости работы в разных городах и в статье «Путь программиста», приводили таблицу с приблизительными данными. Скопируем её сюда, вот она:

Это — докризисная таблица. В настоящий момент ситуация несколько изменилась, киевские зарплаты остались примерно на том же уровне, а вот московские приблизились к киевским.
Если ты изучил ссылку с DOU, то, вероятно, заметил, что Java-программисты — не только самые востребованные, но также и одни из самых высокооплачиваемых специалистов.
А, может, Java — это слишком сложно?
… На самом деле, нет. Есть языки, которые на первом этапе обучения покажутся проще. Однако у Java есть огромный жирный плюс: он массовый, нужный и присутствует на рынке уже много лет. Соответственно материалов для обучения, лекций, книг, форумов как для новичков, так и для матерых программистов — великое множество. Комьюнити очень помогает учебе. Главное во всем этом разнообразии не запутаться и подобрать учебные материалы. Об этом мы напишем в следующем пункте.
Ты решил, что точно хочешь разрабатывать игры и прочитал, что большинство суперхитов написано на C++. Так может сразу его и учить, этого старейшину мира универсальных языков? Можно попробовать, но идея не лучшая: С++ чрезвычайно сложен для новичка. А вот после подготовки на Java ты без проблем сможешь перейти на C++, если захочешь.
Кстати, далеко не все «большие» игры написаны на C++. Знаменитый Minecraft, например, создан на Java.
Краткие выводы

- Самые востребованные разработчики пишут на Java и потребность в них постоянно растет;
- У Java-разработчиков высокие зарплаты;
- Java — универсальный язык. На нем можно писать почти что угодно. Игры в том числе;
- Java относительно прост в изучении;
- После Java несложно перейти на C#, совсем просто изучить JavaScript, Ruby, Python. После Java программист готов к подробному знакомству со сложным С++;
- Android основан на Java;
- Реализация многопоточности в Java доставляет. Если ты новичок, ты, скорее всего, пока не понимаешь, как это классно. Просто запомни эту фразу=);
- Подавляющее большинство программистов владеет JavaScript в качестве второго языка.
Исходя из всего вышеперечисленного, наш рекомендуемый пул технологий для изучения на начальном уровне:
Основной язык: Java. Учим ту его часть, которую называют Java Core;
Дополнительно: HTML, CSS, JavaScript. Подключай их постепенно, начиная со второго-третьего месяца учёбы для отвлечения и отдыха от Java.
