Как учить язык программирования Java

Каждый неофит Java ставит перед собой вопрос, как ему освоить данный язык? Ответов в сети предостаточно, я же попытаюсь объединить часть из них и приправить все это своим опытом. Как говорится летс гоу:

  1.  В чем залог успеха изучения языка программирования?

В понимании того, зачем вам это нужно. Тут такие дефиниции как «программировать круто» или «буду делать компьютерные игры» или «ща выучу по быстрому и буду бабки нормальные получать» не прокатит. Нужна мощная мотивация и выход из зоны комфорта, которые помогут вам избежать прокрастинацию и лень. Нужна четкая цель с пошаговым планом и с датами. Лучше потратить на такую проработку неделю, чем просто начать хвататься за все подряд. На своем примере скажу — выучить язык мне мешает моя заработная плата, просто не каждый синиор девелопер в нашей стране достигает таких высот — поэтому для меня это хобби, а от сюда соответствующие результаты.

  1. Что лучше: учить самостоятельно, записаться на курсы или найти ментора?

Мое мнение — надо задействовать максимум возможных способов обучения исходя из вашего свободного времени. Можно конечно возразить, дескать, зачем проходить на курсах то, что написано в учебнике или в официальной документации, да еще и денег в десятки раз больше отдать. НО, не забывайте, что повторение — мать учения, кроме того, на курсах вам сто процентов сделают акцент на какой-нибудь важный нюанс, который вы пропустили при самостоятельном обучении. Еще на курсах вы сможете найти себе будущего партнера на реализацию собственного проекта, пусть и в учебных целях, но все же согласитесь — хороший бонус. Ментор (персональный наставник) это вообще самый отличный путь из всех возможных. Еще хотелось бы сказать, что если вы учитесь самостоятельно по книгам, то, в принципе, вы сможете выучить язык на требуемом уровне, а вот ходить на курсы и не читать книги — не получится.  Итак, еще раз, учим ВСЕМИ возможными способами:

  • Читаем книги и документацию (обязательно!!!).
  • Ходим на курсы/вебинары (если нет денег — качаем в записи).
  • Консультируемся у ментора (дорого, зато эффективно).
  • Пишем свои мини программы (обязательно!!!).
  • Участвуем в open source проектах на java.
  • Устанавливаем обучающие программы на свой смартфон.
  • Помогаем отвечать на вопросы других неофитов java.
  • Заводим блокнот, в который записываем все то, что дается вам сложно.
  • Участвуем в онлайн соревнованиях по решению задачек на языке.
  • Смотрим обучающие видео в интернете и подписываемся на тематические группы в социальных сетях.
  • После первых же пройденных занятий начинаем отвечать на вопросы, которые задают на собеседованиях на junior java программиста (в интернете куча вариантов).
  • Окружаем себя всем тем, что поможет вам изучить язык, хоть магнитики на холодильник вешайте, главное, чтобы помогало.

Страшно? Не бойтесь, далее обо всем поподробней.

  1.  Столько много литературы по теме, с чего начать, что читать?

Книги это ваш основной источник знаний. О том, что без книг не обойтись я уже сказал. Книги по Java, условно, можно поделить на две группы — для профессионалов и для новичков. Книги для профессионалов обычно содержат в себе информацию по узкоспециализированному вопросу языка, например «Лямбда-выражения в Java 8», или описывают принцип работы (архитектуру) виртуальной машины, где рассказывается почему разработчики языка стали использовать такой подход в решении вопроса, а не иной. Понятно, что они нам не подходят. Наша цель — книги для новичков. Тут лидерами являются 3 книжки:

  • Java 8. Полное руководство. (Java: The Complete Reference, Ninth Edition) / Герберт Шилдт. — 9 издание. — 2016 — 1376 с.
  • Java. Библиотека профессионала. Том 1. Основы. (Core Java Volume I — Fundamentals) / Кей С. Хорстманн. — 2016 — 864 с.
  • Изучаем Java. (Head First Java ) / Кэти Сиерра, Берт Бейтс. — 2016 — 720 с.

Шилд показался более структурированный в части последовательности подачи материала. У Хорстманна часто дается код с комментарием «это вы узнаете в следующей главе», зато примеры более сложные и близкие к реальности. Выбирая между этими двумя книгами я бы сказал так — если вы никогда ничего не слышали про программирование — то ваш выбор Шилд (хотя я советую Head First Java). Если вам не надо читать в википедии что такое «цикл», «переменная», «оперативная память» и вообще у вас математический склад ума и вы всегда интересовались техникой и IT отраслью — то я бы посоветовал Хорстманна (более сжатая и информация, меньше времени потратите на учебу). «Изучаем Java» — книга в первую очередь для визуалов и гуманитариев, хотя я лично планирую обучаться далее по ней. Книга похожа на конспект лекций по программированию от дизайнера. На каждой странице будут смешные запоминающиеся картинки с принципами написания кода. По ходу текста присутствуют вставки с наиболее часто встречающимися вопросами и заблуждениями учащихся по описываемой теме. Кроме того, в конце каждой главы есть тестовое задание и / или кроссворд из терминов пройденного материала.

  1.  Где найти книги, на каком языке читать?

Тут все просто — в интернете всего этого полно, но нормальное качество только на английском языке. Смеритесь с тем фактом, что читать техническую литературу (книги, официальную документацию, статьи по актуальным подходам программирования) вам в любом случае, придется на английском языке,  поэтому начинайте прямо с учебного процесса! Конечно, если вы в школе изучали немецкий и про английский не слышали, то это — беда и боль. Сначала придется познать азы английского языка и грамматики, после чего попытаться сесть за техническую литературу со словарем. Как вариант — можно приобрести книжное издание на русском языке, но на перевод не пожаловался только ленивый, да и потенциальный работодатель сильно посомневается, прежде чем связаться с вами.

  1.  Какие курсы посоветуешь?

Не забываем, что курсы это не обязательный элемент в вашей схеме обучения. Курсы бывают онлайновые (интерактивные без участия преподавателя), в виде вебинаров и классические оффлайновые. На последние нужно много времени и денег, из интерактивных мне еще  не встречались варианты, которые покрывали бы большую часть java core. По моему мнению вебинары являются золотой серединой. Перед выбором вебинара я советую вам почитать отзывы о преподавателе, это очень важно.

  1.  В интернете встречал(а) много лекций и пошаговых обучалок, их достаточно для изучения Java?

Нет. Еще раз, полное описание языка есть только в книгах и официальном мануале. На многих ресурсах такие обучалки содержат тонну ошибок, вдобавок они плохо структурированы. Из всего многообразия посоветую https://www.tutorialspoint.com/java/ Хотя, материала по данному языку ежегодно выходит море и все на отследишь.  Не могу утверждать, что не появилось что-то более адекватное и стоящее. Если вбить в гугл learn java или java tutorial, то просто глаза разбегаются, все пересмотреть просто невозможно! Вот еще два блога, которые мне понравилсьи, правда их уже почти не ведут http://pr0java.blogspot.ru/p/blog-page.html и http://kostin.ws/java/

  1.  В смартфонах тоже есть приложения обучающие программированию?

Куда же без смартфонов. У меня Android и я установил для себя с десяток программ, большая часть из них представляет собой какие-то нарезки из официальной документации с ужасным интерфейсом и шрифтом. В целом могу посоветовать вам следующие: SoloLearn, Learn Java, JavaSamples, Enki, Algorithms. Уверен что и на iOS можно будет найти похожий арсенал ПО.

  1.  Стоит ли смотреть видеоуроки? И если да — то какие?

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

  1.  Как-то нудно все, есть ли интересные формы обучения java?

Тадам, вам повезло, за окном 21 век и все смотрят в сторону поколения Z, а оно, как известно, без игровой формы вообще мало что переваривает :) Искали? Держите!

https://javarush.ru
https://www.codewars.com
https://www.codingame.com

  1. А почему все ресурсы в интернете ссылаются на какой-то github?

Хотите вы того или нет, а современное программирование не представляет свою жизнь без системы контроля версии. Она позволяет делать ответвления в программном коде (вилки в разработке), облегчает работу в команде, а так же позволяет вернуться к сохранной точке в программном коде (если вы вдруг поняли, что направление которое вы выбрали — тупиковое, и надо вернутся к коду, который был 3 часа назад). Гитхаб — это как раз такой оналйновый сервис.

  1.  Вы советовали отвечать на вопросы новичков в программировании на Java, но я же сам только начал учить язык!

Нет лучшего способа что-то запомнить, чем научить этому кого-то другого. Смело топаем на такие форумы и площадки как :

cyberforum.ru 
programmersforum.ru
codeby.net
sources.ru
ru.stackoverflow.com

И пытаемся отвечать на вопросы пользователей

  1.  Где на просторах интернета можно взглянуть на вопросы на вакансию junior java программиста? С ответами кАнеШнА  :)

Да пожалуйста:
http://javastudy.ru/category/interview/
https://javatalks.ru/topics/9373?page=1
http://wizardjava.com/java/java-voprosy-na-sobesedovanii-i-otvety-chast-1
http://wizardjava.com/java/java-voprosy-na-sobesedovanii-i-otvety-chast-2

Тут вроде нет ответов:
http://becomejavasenior.com/blog/2015/07/01/327-interview-questions-java-developer/

  1.  Какие материалы и ресурсы в интернете еще можно посмотреть, почитать, изучить?

Их много, все и не перечислишь. Можно порыться на coursera.org плюс udemy.com или посмотреть лекции от MIT.

На этом все. Обещаю постепенно дописывать статью, а вы не стесняйтесь — задавайте вопросы, по возможности отвечу :)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *