Сегодня я получил вопрос от одного из новичков на javarush.ru: «Я на джавараше новичок и интересует мнение старожилов. Стоит ли покупать платный курс и оправдывает он себя?»
Пока писал ответ, понял, что получается целая статья :-) Написал её на одном дыхании, наверное, потому что не столько человеку хотел ответить, сколько для себя искал понимания в правильности своего пути.
Итак, мой ответ-статья
Добрый день! Правильно сделали, что написали. Выскажу свое мнение.
Джавараш является альтернативой стажировкам/обучению в ИТ-компаниях. Если у вас низкие шансы на попадание в одну из таких программ при текущей вашей ситуации (возраст, уровень знаний, предыдущий опыт и прочее), то джавараш будет хорошим подспорьем, а может даже единственным шансом попасть в отрасль.
Главное преимущество джавараш — это большое количество практических задач. На них хорошо набиваешь руку. Очень полезно также обсуждать задачи, помогать другим в поиске решения — это один из основных навыков программиста — уметь читать чужой код.
Но не могу сказать, что после того, как вы оплатите подписку, уровень ваших знаний сразу неуклонно пойдет вверх. Материал лекций специально подается в таком виде, чтобы немалую часть информации вам приходилось искать самому — таким образом у вас вырабатывают ещё один необходимый навык — по любому вопросу лезть в интернет. Т.е. если что-то будет непонятно — придется корпеть, а это может занимать немалое время — день, два, три, неделю — и соответственно будет откладываться достижение верхних уровней курса.
Опишу свой случай. Сейчас мне 41 год. Я начал изучать джаву в феврале 2014-го. К джавараш присоединился в октябре. До того момента успел почитать Шилдта, ООАП и Паттерны проектирования из серии HeadFirst, порешать простые задачки на javaranch.com, послушать разные видеоуроки — т.е. уже немало продвинулся в изучении Core Java.
Задачи начал решать в ноябре и до начала января прошел 24 уровня. Но почувствовал, что слишком быстро лечу, накопилось несколько не совсем понятых (недопонятых) тем. Кроме того, в январе я для разнообразия переключился на изучение HTML/CSS/Javascript, походил на собеседования в феврале интенсивно, попробовал немного QA — в общем, отвлекся от изучения непосредственно Java. А сейчас вот опять вернулся. Но сейчас я ставлю себе целью не пройти максимально быстро уровни, а систематизировать то, по чем уже галопом пробежался раньше. Чтобы знания устаканились и появилась ясность :-) Пока не читаю новые лекции — курю некоторые темы, решаю оставленные на потом бонусные задачи.
Так вот,
самое сложное при изучении Java, как по мне — это найти правильные книги/туториалы/видеоуроки, которые раскроют и донесут сложную тему так, чтобы не оставалось неясностей. В какой-то момент при изучении ты обязательно сталкиваешься с каким-нибудь вопросом, который в той книге, которую ты читаешь, описан так, что ты никак не можешь его понять, что-то в нем остается неясным, а автор об этом не пишет. Тогда ты берешь другую книгу, ищешь видеоурок, видеолекцию, статью, обсуждение на форуме — и так перебирать можно долго, пока не найдешь то, что нужно, что действительно покажет тебе вопрос с другой стороны и уже не останется темных мест.
Для меня например, одной из таких непростых тем является тема потоков. Читал я про неё во многих местах, все никак не мог понять до конца, пока не решил почитать
официальные оракловские туториалы — честно, это было для меня настоящим откровением. Нигде так просто, так доходчиво и сразу по делу про них не написано. Каждое слово наполнено смыслом и написано совершенно не напрасно — ты просто читаешь и просто понимаешь, от простого к сложному. Впитываешь, так сказать, чистые знания :-) Тут немного добавлю, что оракловские туториалы не просто по другому написаны, в них была одна фраза, которой не было ни у Шилдта, ни у Хорстманна, и которая буквально стала для меня ключом к пониманию потоков (streams). Вот эта фраза —
«The Java platform stores character values using Unicode conventions». Не буду здесь вдаваться в подробности, может, попозже напишу об этом ещё одну статью, здесь же о другом.
О том, что часто при изучении Java не хватает правильной подсказки — мол, смотри здесь и да пребудет с тобой Сила. На мой взгляд, это настолько важный вопрос для ускорения процесса обучения, что джавараш стоило бы проработать его тщательнее, чем это сделано на данный момент. Можно мониторить, какие темы чаще всего являются «камнем преткновения» для учащихся. По каждой такой теме можно предлагать вниманию максимально полный список источников и устраивать голосование с обсуждением, какой из источников лучше всего помогает в понимании темы.
Такое мое пожелание к администрации javarush.ru :-) Тем более, я ещё не принял участие в опросе на тему «Как улучшить javarush.ru» — дам в нем ссылку на этот мой опус.
В общем, подытожу. По жизни, каким бы делом ни занимался, я всегда опирался на знание основ, базы. В Java базой является Core Java. Технологиями ты не сможешь пользоваться, не зная основ. Ведь фактически, что такое, например те же сервлеты — это просто java-классы, помещенные в определенную папку, в ту папку, которую предусматривает веб-сервер. И что сервлет делает — вызывает метод другого java-класса, помещенного в другую папку, которую тоже предусматривает веб-сервер. Вся технология сервлетов, если упрощенно, сводится к тому, чтобы правильно разместить классы по папкам, а остальное — Core Java.
Поэтому, если у вас стоит четкая цель научиться Java — не сомневайтесь, оплачивайте курс и дерзайте. Дорогу осилит идущий. Решайте задачи, разбирайтесь в сложных темах, общайтесь в обсуждениях.
Надеюсь, статья не будет воспринята как заказная рекламная. Все изложил от души, как есть :-)
И ещё дам свой совет относительно
первой книги по Java — на мой взгляд,
это должна быть книга Хорстманна и Корнелла «Java. Библиотека профессионала». Ни в какое сравнение с ней не идет книга Шилдта «Java. Полное руководство». Пишу об этом, потому что сам начал изучать джаву с Шилдта, и считаю, что если бы кто-то мне тогда подсказал, то я бы минимум на месяца два-три быстрее продвинулся в изучении. Так сказать, восстанавливаю историческую справедливость :-)
Дело в том, что Шилдт "идет по верхам", не объясняя очень многие моменты, которые сами по себе неочевидны. Хорстманн и Шилдт — это по сути два учебника одного типа, но Хорстманн при том же объеме подает материал гораздо глубже и "по делу". Шилдт просто "гонит объем", лишь бы что-нибудь написать, лишь бы было похоже на Java. Приведу маленький пример. У Шилдта нет слов о том что "/" с целыми числами — это целочисленное деление. Вместо этого он дает пример использования основных операторов деления, который мало того, что бестолковый по своей сути и занимает целую страницу, так ещё и не облегчает новичку понимания — из него не сразу становится понятно, о чем хотел сказать автор.
Хорстманн ставит своей целью максимально выверенным текстом донести максимум информации. Можете просто сравнить страницы 98-99 Шилдта 8-е издание (Это 3 подраздела "Основные арифметические операторы", "Оператор деления по модулю" и "Составные арифметические операторы с присваиванием") и страницу 69 Хорстмана 9-е издание (подраздел "Операции"). Указанные подразделы в двух учебниках — об одном и том же, только у Шилдта это 2 с четвертью страницы, а у Хорстмана — 1/3 страницы. При этом у Хорстмана — понятнее и без лишней воды. И так везде, очень много, поверьте, моментов не раскрыто у Шилдта. Это как если провести аналогию с велосипедами, то Шилдт — это китайский ашан-байк, а Хорстманн — качественный брендовый маунтинбайк уровня Скотта или Кадейла.
Один из основных советов начинающим велосипедистам — не покупать китайский хлам, иначе — отобьешь себе изначально желание кататься на велосипедах. Шилдт, как я понял, изначально сделал себе имя на книгах по С, С++ и С#, а Java — уже решил на волне популярности просто "подмахнуть не глядя".
Не ходите дети в Африку Не начинайте
изучать Java с Шилдта...
Как-то так :-)
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ