JavaRush /Java блог /Архив info.javarush /Как стать программистом (часть 1)
Bender
1 уровень
Маунтин-Вью

Как стать программистом (часть 1)

Статья из группы Архив info.javarush
как стать программистом Итак, ты испытываешь острое желание стать программистом. Куда теперь бежать? На этот вопрос существует множество ответов в сети. Некогда мы уже писали статью об этом. Тем не менее, судя по вопросам, которые нам задают в социальных сетях, новички часто теряются в обилии информации и не знают, с чего конкретно начинать. В принципе, мы на JavaRush только тем и занимаемся, что помогаем ответить на этот вопрос. Однако для тех, кто совсем растерялся, мы решили составить приблизительный план действий.

Для начала определись с пулом технологий

  1. Выбери 2-3 основных источника знаний, а также с десяток дополнительных. Но не забывай «гуглить», если что-то не ясно.
  2. Выбери среду разработки и установи на свою рабочую машину всё необходимое ПО.
  3. Определись с тем, что еще учить и где черпать информацию.
А теперь обо всем по порядку. Для начала определись с языком и пулом технологий Если ты совсем-совсем ничего не знаешь о программировании, у тебя есть два варианта (на самом деле — больше, но мы тут не для того, чтобы тебя запутать). Путь первый. Попробовать что-то максимально простое на базовом уровне, и уже потом — определиться. HTML CSS JS Например, язык разметки сайтов HTML. Базовое знание HTML — полезный навык для любого айтишника. Однако сам по себе этот язык дает новичку очень смутное представление о программировании как таковом. Разметка — это не вполне программирование, и чтобы дойти от создания страничек до настоящих задач, которые решают не верстальщики, а программисты, нужно изучить очень многое. Тем не менее, получить представление об HTML и его наводящем красоту вечном спутнике CSS — очень просто. Интерактивные курсы можно найти здесь: https://www.codecademy.com/learn/web https://htmlacademy.ru/program В обоих курсах есть платный и бесплатный контент. Бесплатного для начала вполне достаточно. Не слишком сложно будет изучить основы JavaScript. Это уже самый настоящий язык программирования. Мегапопулярный причем, правда, с одним «но» — это самый популярный «второй язык», то есть такой, который большинство программистов используют как вспомогательный. Основным он является для так называемых «Фронтендщиков», тех программистов, которые создают и привносят интерактивность в интернет-странички. Справедливости ради заметим: простота JavaScript — палка о двух концах. На начальном уровне всё очень просто, но, запрограммировать относительно сложное многострочное приложение на JavaScript — задача не из легких. Так что его нельзя назвать универсальным языком. Тем не менее, вот тебе пара ссылок на хорошие JavaScript-ресурсы. Пригодятся если не сразу, то немного позднее. http://learn.javascript.ru/intro https://www.codecademy.com/learn/javascript Хорошим «учебным» языком сегодня считается Python. Он достаточно прост в освоении, отличается читаемым кодом решает широкий круг проблем, позволяя сфокусироваться на задаче, без постоянных треволнений о том, как в этом самом программировании всё устроено. В какой-то момент эта особенность («высокоуровневость») может сыграть с новичком злую шутку, и он будет пытаться искать у доброй «змейки» руки и ноги, которых нет. python У Python’а есть и другие недостатки, например, медлительность при исполнении программ. И еще масса всяких подводных камней, которые становятся очевидны позднее, когда программист достаточно «набьет руку» на простейших задачах. Есть еще очень популярный PHP, но вряд ли стоит с него начинать: язык и правда распространён, но к нему у профессионалов масса претензий. Упомянем и Ruby — язык чем-то похожий на Python, но не самый простой для понимания. PHP, Ruby и Python решают примерно одни и те же задачи. В принципе, если ты уверен на все 200%, что хочешь писать только сайты и ничего более, пул HTML + CSS + JavaScript + Python/PHP/Ruby тебе подходит. Хотя на самом деле, эти прекрасные технологии даже Web не полностью охватывают. Всякие сложные бизнес-программы, которые прячутся за сайтами очень часто написаны на более универсальных языках. Таких как Java или C#. Помимо всего остального, рекомендуем обязательно посмотреть популярный Гарвардский курс по основам программирования CS50 (мы его перевели на русский недавно, посмотреть можно здесь). Он идеально подходит для новичков. А что если тебе, обучившись, захочется не сайты клепать, а писать игры, создавать приложения под мобильные устройства, программировать микропроцессоры, или создавать огромные корпоративные программы? А вдруг робототехникой увлечешься? Наукой? Да мало ли, куда занесет… Вспомни, так ли редко жизнь вносила в твои планы свои коррективы? Вот почему мы считаем более рациональным и правильным второй путь. Путь второй. Изучить универсальный и востребованный язык программирования, умение работать с которым хорошо оплачивается. Java Вышеупомянутый Python в какой-то мере подходит, но есть куда более мощные в своей универсальности языки. Среди них — Java, C#, C++. Первые два во многом похожи и решают похожие задачи. По сути, они решают какие угодно задачи. Web, десктопные и мобильные (с оговорками, о которых позднее) приложения, работа с консолью и графикой. Учебный код на них тоже вполне комфортно писать. Какой выбрать? В принципе, любой из них хорош. Но давай действовать рационально (это очень полезно для программиста!). Вбиваем в Google что-то вроде «самые востребованные языки программирования» и смотрим на результат. Вот несколько интересных ссылок: https://dou.ua/lenta/articles/language-rating-jan-2016/ https://hh.ua/article/13333 http://itdistrict.ru/kakoy-yazyik-programmirovaniya-samyiy-vostrebovannyiy-v-2016-godu/ https://dev.by/lenta/main/top-15-samyh-vostrebovannyh-yazykov-programmirovaniya-v-2015-m http://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: https://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. Вторую часть статьи читайте здесь. Третью часть статьи читайте здесь. Четвертую часть статьи читайте здесь.
Комментарии (48)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
boyarskiy Уровень 21
17 июля 2016
В одной из лекций JavaRush было сказано, что читать книги ради чтения — потерянное время. Полностью согласен, и на себе это уже прошёл. Иными словами, к книгам нужно обращаться только тогда, когда наболели вопросы на которые ты постепенно находишь в книге ответы. Так вот найденные таким образом ответы уже на 100% остаются в твоей голове, иначе — в одно ухо вошло, из другого вышло. Есть запрос — ищи ответ, нет запроса — нечего тратить время.
Что касается Шилдта, Эккеля и курса JavaRush: сначала я тоже плевался на книгу Эккеля, так как считал её слишком мудрёной, и перешёл на Шилдта. Но со временем выработал такую систему: когда я в JavaRush дохожу до предела имеющихся знаний (то есть ты уже решаешь задачу наугад, неосознанно) — я погружаюсь в Эккеля, причём штудирую его пример за примером, упражнение за упражнением, набирая всё ручками, иногда даже на листке бумаги, так бывает быстрее озаряет. Причём штудирую его последовательно, не прыгая по главам, поскольку его курс очень грамотно построен, и проходить его нужно последовательно. Так вот когда ты прошёл нужный материал, и возварщаешься на JavaRush, то все страшные до этого задачи автоматически становятся детскими, и ты с пониманием сути довольно быстро идёшь дальше.
Что же касается Шилдта, полный курс — то я его читаю последовательно в свободное время, и использую уже как закрепление пройденного, или восполнения пробелов. Примеры в его книге не такие мудрёные, но некоторые вещи он очень грамотно и просто объясняет.
Smetchik Уровень 15
8 июля 2016
-Android основан на Java;

Он не основан на Java, он использует синтаксис Java(да как бы частями там Java есть), и использует собственный байт код и виртуальную машину. При этом для Android внезапно с тем же успехом можно писать на C++, C#, ruby, Ada(есть компилятор под Freebsd) и куча всего еще, так что это лучше убрать из плюсов.
Joysi Уровень 41
30 июня 2016
Старая баян-картинка думаю таки к месту в этом топике:
Torin Уровень 27
29 июня 2016
А у меня другая проблема. Никак не могу поставить себе внятной задачи по домашнему проекту. Т.е. нЕчто весомое, но не сильно толстое, чтоб не забросить. Гуглопоиски сводятся к чату, но имхо это уже настолько баян, что можно собрать чат не разрабатывая, а просто копируя код с гугловыдачи.

1) Задание должно быть интересным (вызывать азарт, бессонные ночи)
2) Готовый проект должен быть таким, чтоб его захотел юзать хоть кто-то, кроме меня.
3) Игры не подходят, писать игры это фан, но не профессиональная разработка
Iskandar Уровень 23
29 июня 2016
То, что названо «первым путем» — паразитное предложение, которое скорее сформирует апатию к этому делу, даже если есть склонности, имхо. Особенно если говорить о CS50 :) Думаю, этот гарвардский курс хорошо проходить в Гарварде с реальными одноклассниками и коучами, чем по инету. Говорю это, т.к. сам его пробовал и понял, что если бы я его увидел до того, как мне мой приятель предложил попробовать джаву (а я к тому моменту уже был на 17 левеле) и когда мне в руки попала книга Шилдта («Java. Полное руководство»), то я бы здесь не присутствовал бы и даже не пытался бы что-то освоить из программирования. Тоже самое — попытки ковыряться в языках — без хороших книг и задачек для закрепления теории — это будет пар в свисток (были такие на паровозах).

Второй путь предлагает более рациональное зерно — взять ходовой язык (джаву или сишарп) и учиться по нему. Бонусы здесь в том, что много хорошей литературы и легко найти задачники (тот же джава-раш), легко найти ответы на вопросы.

В любом случае — очень важно понимать следующее — когда спрашиваете, какую литературу взять, увидите несколько разных предложений — так вот здесь важно понимать, что книга, которая кому-то подошла, вам может не подойти (та же Философия Джава, которая многих восторгает — она больше как справочник для тех, кто уже несколько в теме, а не для тех, кто ноль! Тут гораздо доступнее поясняет Шилдт в своем «полном руководстве»), так что не стесняйтесь пробовать другие варианты.