Сегодня я получил вопрос от одного из новичков на 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 с Шилдта...
Как-то так :-)
возраст - цифра, не более. все остальное - наши страхи и загоны.
ни когда не поздно начинать учиться.
в нормальных странах вопрос на собеседовании сколько вам лет ЗАПРЕЩЕН (за редкими особыми исключениями), тк возраст не влияет на проф уровень.
Я, наверное, отличусь от всех присутствующих) Мне 51 и я решил вернуться в программирование. которое забросил в 33 года. И еще тогда я был сисадмином: С,PERL, PASCAL. Парни, ошибаются те, кто клюет в возраст - он в процессе обучения совсем не при чем, надо только относиться к обучению правильно и не лениться. Очень помогает физическая нагрузка, контрастный душ и для меня, например, обучение с 5 - 6 утра (до работы) с соответствующим ранним отбоем 5 дней в неделю и один день в выходные - 8 -10 часов. Конечно, никаких расслаблений с пивком или чем покрепче ))). Уже целый год в таком режиме обучение идет тяжело, со скрипом, но идет. Наверное, также, как и у всех. Читаю много, ищу "истину", JavaRush на практике помогает понять очень многие моменты, которые в теории и на курсах "Специалиста" просто не смог осмыслить. Чувствую, что с такими темпами мне нужен еще один год на практику. Есть несколько собственных проектов, которые хотелось бы запустить. Найти бы для этого ментора...
По книгам. Мне приходится об одном и том же читать O`Relly, Шилдта, Эккеля и из Инета мануалы. Хорстмана, к сожалению, еще не читал. Наверное, придется 2-3 месяца на него выделить. В разных моментах суть материала доходила только из какого-то одного источника. Сравнивать их между собой, как мне кажется, не очень корректно - это уже индивидуальное впечатление по доходчивости изложенного материала в том или ином источнике.Иногда даже одно корректное слово. сказанное на ютубе каким-то пацаном, превращается в откровение не смотря на массу перечитанного материала по этой теме.
Желаю успехов)
Мне 36, о возрасте не думаю, мозг это единственная мышца, которая не стареет)). По профессии я QA, пришло время изучить авто тестирование с использованием java, а там до программера недалеко). Заходит непросто, как и говорит автор приходится шерстить разные источники. А про возраст париться не надо, да тяжело, но какие перспективы открывает эти старания....особенно удаленная работа..) лежишь под пальмой кодиш..)))
Залили на диск книгу Хорстманна и Корнелла «Java. Библиотека профессионала»
https://drive.google.com/file/d/1kpkEGs0uY-uPmel52hOi4rzdkk1-JIvU/view?usp=sharing
Сам тоже начал читать Шилдта в дополение к JavaRush. Перед этим я проходил CS50 и для изучения С я тоже читал Шилдта. Было доходчиво и вообще книгу считаю удачной. А вот с Java тоже не плохо и пока все понятно, но чего-то не хватает.
Надеюсь, по совету автора, найду это у Хортсманна и Корнелла. Спасибо за статью.
Интересное мнение со стороны) Очень удивлен возрастом автора, т.к. везде в один голос кричат, что чем дальше, тем труднее изучать что-то новое. Сам по этому поводу переживаю (мне 26 лет), за стойкость и постоянное желание автора учиться и совершенствоваться снимаю шляпу)).
Что касается опыта изучения, Java для меня второй язык, первым стал Python, который я освоил благодаря нескольким курсам на stepic.org и книге Лучано Рамальо "Python. К вершинам мастерства".
Видать не я один такой, мне 29, ничего не изучал, но программистом стать хотел с детства, и только сейчас дошел до этого, решил реализовать мечты. И мучает только один вопрос, удастся ли после JR, реализовать себя!
Здравствуйте, посоветуйте нормальный курс по сервлетах, (желательно видео), чтобы было куча примеров, желательно чтобы можно было в конце курса на примерах сделать что-то свое…
Привет!
Категорически не рекомендую читать книги «на скорость». В заданное время может и вложишься, но в итоге в голове останется на порядок меньше.
На мой взгляд, читать лучше «в удовольствие», тогда возникает эффект пылесоса — и тебя самого засасывает в материал книги, происходит полное погружение — от этого и кайф ловишь и все понятно.
Я и не имел в виду на скорость.
Хотел сказать, что это заявление больше похоже на заманухи с форекса или там какого гербалайфа. Это же не произведения Донцовой, на глубинное понимание которых нужно не меньше недели.
Если кто хочет поглубже нырнуть в Java SE 8 почитайте эту книгу: Язык программирования Java SE 8. Подробное описание Гослинг Д., Джой Б., Стил Г., Брача Г., Бакли А. в авторах «отец» Java, книга трудна для чтения так как по сути является спецификацией языка на русском, вообще тем и полезна.
Здорово «видеть» как люди берутся за такое трудное и благородное дело, как обучение.
Классно что даже будучи умудренным опытом в других областях человек идет по выбранному им пути, идет и успешно.
Спасибо за эту статью. Вдохновляет.
З.Ы. Спасибо интернету за то, что позволяет так просто обмениваться мыслями.
Это всё понятно, просто параллельно с программированием нужно учить английский, без него никуда, очень много информации сразу — мозг просто отказывается работать. Вот бы таблетки для ума придумали уже.
Параллельно с курсом javarush читаю книгу — Философия Java Брюса Эккеля. По мне, так книга и курс идеально дополняют друг друга. Но так как я других книг не читал, хочу спросить мнение сообщества об этой книге — что скажите?
Книг много хороших и, как набор теоретических знаний, эта одна из них. Выбирать нужно то, что подходит лично тебе, если тебе нравится по ней учится, то ок.
Из серьезных минусов, я бы отметил отсутствие задач, чтобы натренировать разум на использование этих знаний. Второй момент, почему это минус, это потому, что все мы люди и книга не абсолют. Всегда есть аспекты индивидуальные для каждого человека, которые он поймет правильно только на практике, по этому я считаю, что задачи во время изучения теории это мастхэв. Жаль, что такая хорошая книга их лишена.
И еще может кому пригодиться, если у вас дома есть принтер, то не зачем покупать книги по 500-600 грн для Украины, сколько стоят в России я не знаю.
Я лично покупаю краску(принтер с СНПЧ) и бумагу, плюс после печати делаю переплет.
В итоге краска флакончик 60грн(хватает на 2000-3000 страниц), бумага по 60грн 5 пачек(300грн), и переплет 3 книг(150 грн). В сумму 60грн + 300грн + 150грн = 510 грн.
Имеем 3 книги, Брюс Еккель на 1170 страниц, Хорстман том 1 900 страниц, и Мартин Грубер «Понимание SQL» 300 страниц.
Можно еще сэкономить, дело в том, что распечатанные 1100 страниц раза в 3-4 толще оригинальной книги, поэтому я печатал Еккеля так, сначала пропечатал 600 страниц на одной стороне, потом перевернул, и остальные 600 страниц напечатал на обратной, в итоге после переплета, буду иметь такой вариант чтения, сначала, читаю правую сторону до 600 страниц, потом левую))
А если у вас есть планшет, то и принтер не нужен ;) Особенно для таких целей хороши планшеты серии ноут от самсунгов, там есть стилус и куча приложений, для того, чтобы удобно можно было заниматься по книге)
За ссылку спасибо. Такие задачи это хотя бы что то(странно что в оглавлении указаны упражнения только к одной главе, в то время, как вы и сказали, походу дела они, все же, встречаются), но до уровня интерактивности HeadFirst им очень далеко, я по этому и больше люблю ИХ книги, они все читаются на одном дыхании.
По поводу удобности чтения, для меня почему-то удобней работать с с книжный вариантом, не знаю почему. Просто когда ты читаешь книгу, тебе всего-то и нужно, что пролистать на пару страниц назад, или на 100, что на планшете сделать проблематичнее) Ну это для кого как.
Дело не с том, насколько хорошо отсканировано, текст сам по себе не распознан.
А про удобность чтения, тут у каждого варианта свои плюсы, свои минусы. Только вот в электронном варианте постоянно появляются новые плюшки. Кто то говорит, что в электронном виде нельзя страницу загнуть, другие им отвечают, что уже и для этого есть специальная кнопка ;) Софт тоже нужно знать. Кто знает, вон у нас есть гнущиеся экраны, может кто то из стартаперов скоро универсальную книгу сделает, чтобы угодить как одним, так и другим. 1 книга будет для всего, это уж точно))
Почитал у Эккеля главу про повторное использование классов — вообще бомба! По-моему, даже у Хорстманна нет такого глубокого материала. Начинаешь совершенно по-другому понимать Java.
Очень важно — читать нужно вариант на английском языке. Русский перевод не очень точно передает смысл, не теми словами.
За Эккеля спасибо (правда, не понял, что за издание: все пишут что на русском там полкниги вырезано, перевод ужасный и задач нет, а тут, вот, страниц много; что за издание?), но мне кажется новичку не стоит его читать. Читал его, когда проходил джавараш (там вроде бы давались ссылки на главы), так новый материал понимался с трудом. Мне кажется, что его нужно читать, когда уже прочёл что-то простое и обо всём, так сказать (думаю, это тот хорстманн или хед фёст джава на худой конец; ну или какие-то обзорные статьи по разным темам).
Хочу добавить, что книги нынче совсем дорогие стали. Тот же хорстманн на озоне стоит тысячи 3 (два тома). Посмотрел Хабибулина — 415 рублей за электронную книгу. Как-то дорого. Эх, помню те добрые времена, когда книги стоили по 200, ну в крайнем случае по 400 рублей. Вот, жизнь-то была. Эх. :-/
Оффтоп, но анекдот очень уж в тему.
В храм заходит хамоватого вида молодой человек, подходит к священнику, бьёт его по щеке и ехидно улыбаясь, говорит:
— А что, отче, сказано ведь: «Ударили по правой щеке, подставь и левую».
Батюшка, мастер спорта по боксу, хуком слева отправляет наглеца в угол храма и кротко произносит:
— Сказано также, какой мерой меряете, такой и вам будет отмерено!
Испуганные прихожане спрашивают:
— Что там происходит?
Дьякон с важным видом объясняет:
— Евангелие толкуют.
Не знаю, может перфекционист во мне живет на столько, что я записываю почти все лекции проэкта JavaRush, почти всю информацию, лекции записываю от 80 до 100%, в итоге я сейчас на 19 уровне, скопилось, 2 полных блокнота(на 60 листов), и один наполовину заполненный, и каждые 2 недели, я повторяю все лекции, почти наизусть, в среднем пока повторение занимает около 5 часов подряд, да-да, такое возможно, потом дико не хочется говорить вообще.
Многие тут напишут, заучить не значит применять, но прочитать не значит запомнить, знания которые выучены с блокнотов(лекции JavaRush), теперь при прочтении Хорстмана и Еккеля обростают, новыми дополнениями, нейронами в памяти, и рассказав например лекцию о наследовании с Javarush при повторении(если помните там рассматривалось 2 примера, один наследование в реальной жизни, второй в программировании, потом наводились примеры, как наколдовать пегаса, и т.д) можно еще излить из себя некоторую информацию из книги Хорстмана.
Рассказывать мне, что такой метод не работает, это лишнее, по себе знаю, так я когда в школе учился учил географию(не каждые 2 недели повторял все), из года в год участвуя в олимпиадах повторял материал, в итоге после 11 класса сдал ВНО на 195 баллов.
P.S. еще я так SQL — учу, например прочитал книгу Крис Фиайли Quick Start, написал себе краткое изложение книги во все такой же блокнот на 60 страниц, и все повторяю его, плюс сайт sql-ex.ru, но советую сначала прочитать книгу.
каждые 2 недели, я повторяю все лекции, почти наизусть, в среднем пока повторение занимает около 5 часов подряд, да-да, такое возможно, потом дико не хочется говорить вообще.
У меня такой усидчивости нету. Но тренирую. Есть хорошая программка для составления карточек типа вопрос-ответ — называются Anki — попробуй, может быть, понравится.
Этот метод более чем рабочий. Даже если в самом начале это разрозненные знания, то с течением времени и применением этих знаний на практике, человек получит цельную связанную систему.
Но я бы еще английский поучил, если у кого есть какая информация, или метод обучения.
Например я собрался осваивать английский через видео курс Полиглот (текстовая версия) и видео-версия
Прямое заучивание я использую только для некоторых особых моментов (их не очень много, может примерно 5% от общего объема материала), которые мне понятны, но в силу своей неочевидности, требуют действительно запоминания, т.к. быстро забываются. Заучивать сплошняком весь материал — это жестко :-)
Я использую известную формулу: Знания — Умения — Навыки. Знания нужно получать/усваивать через понимание и дальше уже применять на практике, что приведет уже к автоматическому применению их на практике.
Недавно установил себе упомянутую blacky программу Anki — пробую с её помощью запоминать ускользающие моменты. Вот несколько из занесенных мною в неё карточек:
Вопрос: В чем особенность инициализации локальных переменных? Ответ: Локальные переменные не инициализируются автоматически пустым значением null. Локальную переменную необходимо явно инициализировать с помощью оператора new или присвоив ей пустое значение null.
Вопрос: What does a BigDecimal consist of? Ответ: A BigDecimal consists of
1. an arbitrary precision integer unscaled value
2. 32-bit integer scale
value of the number represented by the BigDecimal is therefore equals (unscaledValue × pow(10, -scale))
Вопрос: К каким полям экземпляра не следует применять ключевое слово final? Ответ: Ключевое слово final не следует применять к ссылочным переменным изменяемых типов (потому что хоть сама переменная и является финальной, но объект, на который она ссылается, можно изменять, что может привести к недоразумениям/ошибкам). Правильно — это применять final к переменным примитивных типов или ссылочных неизменяемых типов (например, String) — тогда переменная действительно становится финальной, т.к. нельзя изменить ни её саму, ни объект, на который она ссылается.
Не знаю, у меня мозг ничем кроме программирования не занят, могу себе позволить много запоминать, утрирую конечно.
Однако добавлю еще раз, лекции на JavaRush, это база, минимум того, что необходимо иметь знаний.
Я даже думаю таких меньшинство, которые что-либо конспектируют, а потом повторяют, люди быстро прочитали лекцию и го-го-го за задачи, а потом создают темы на форуме, где не могут решить задачу, ибо не внимательно читали лекцию, прошлую, позапрошлую, или с предыдущего уровня.
Когда вы будете на собеседовании, вас с вероятностью на 100% наверное, сначала спросят теоретический материал, а потом уже практика.
Конечно, это хорошо, когда материал отскакивает от зубов.
Я если хочу, чтобы какая-то глава из книги осталась в памяти, конспектирую её, но очень сжато. И тогда уже могу к такому конспекту возвращаться и прокручивать все в голове, чтобы запомнилось.
Ага, а давайте теперь поговорим о времени. Сколько времени вы уже изучаете джаву? Джавараш и пару книг по кору не смогут подготовить вас к работе, как бы вы хорошо их не выучил и как бы вы их не понимали. Помимо всего прочего есть ещё энтерпрайз, веб и куча фреймворков которые надо освоить. А такими темпами, пока вы будете учить одну версию, уже выйдет другая. Будете учить 1 фреймворк, уже нужно будет осваивать другой. Пока вы закончите осваивать все технологии джавы, люди уже начнут переходить на скалу. Не вижу ничего хорошего в том, что вы описали. Умение распределять и ценить своё время так же важно как и знание кора, потому что никому не нужны такие узкоспециализированные сотрудники. Везде нужно соблюдать баланс.
Про финальные переменные вы загнули. Лично я не вижу особого повода уделять таким вещам в книге про базу. Почему? Да потому что это «объяснение» само собой образуется в следствии использования знаний основ. А того, чего НЕ нужно делать в программировании можно перечислять бесконечно.
пока вы будете учить одну версию, уже выйдет другая. Будете учить 1 фреймворк, уже нужно будет осваивать другой. Пока вы закончите осваивать все технологии джавы, люди уже начнут переходить на скалу.
Вы написали такой замечательный комментарий, но так и не потратили свое драгоценное время, дабы прочитать мой комментарий и пальчиком тыкнуть, где я написал что учу фреймворки, технологии Java??
Я написал как получаю знания я, учу какую-то базовую информацию, плюс читаю книжки, таким образом базовая информация структурируется, и «обростает» снежным комом.
Не вижу ничего плохого в том, что Хорстманн разъяснил этот момент в самом начале книги. Причем он не просто ради галочки это сделал, а очень уместно вписал в контекст — в разделе про классы, объясняя, что такое неизменяемые поля экземпляра. Одно дело просто перечислить что final для класса — это запрет наследования, для метода — запрет переопределения, а для переменных — запрет их изменять. И совсем другое — дать более глубокое понимание того, как этим можно и нужно пользоваться. Сразу об этом сказать, а не ждать, пока ты сам до этого дойдешь, написав прежде кучу говнокода. Совершенно нормальный обучающий прием — сначала дается теория и сразу пример из практики. В чем криминал?
В этом и хорош Хорстманн, что очень умно и к месту дает понимание, как нужно пользоваться инструментами языка, а не просто перечисляет, какие в Java есть операторы, ключевые слова и т.д. и т.п.
AndreGold, не принимайте близко к сердцу. Vakatsiienko только и сказал, что ваш способ изучения отнимает слишком много времени. У вас сейчас есть такая возможность тратить его на это — и хорошо. Если жизнь поставит новые условия — перестроитесь всего и делов. Кроме того, тем javarush и хорош, что тут можно сравнивать свои успехи с успехами других.
Да не принимаю я близко к сердцу вы что, просто по жизни не переношу сотрясание воздуха в пустую, я изложил свой метод как учу я, человек начал рассказывать, что верно, а что нет.
При этом Vakatsiienko не представил свой метод обучения, ну или написал бы что работает программистом(что маловероятно, хотя все может быть), ну чтобы можно было считать его мнение авторитетным
Вы не совсем поняли, я к тому что final абсолютно одинаково действует на примитивы и на ссылки, именно по этому я не вижу смысла как то особо выделять этот момент, тем более, что вы оценивали книги как первую по джаве. Другой момент — как это использовать и в какой книге это будет уместно — по паттернам, по библиотекам, фреймворкам… Т.е. если существует какая то особенно-особая тонкость применения, то она должна освещаться не в теоретическом коде, который хоть и грамотно написан, но он вырван из контекста работы приложения.
Да уж, ну вы и вспыльчивый.
Нет, я ещё не работаю, но я к этому близок и написал уже не одно работающее веб приложение. Вы можете поднять скролл вверх и прочитать, к примеру, моё мнение, как следует распределять время.
Сообщение, адресованное вам, я писал, чтобы подвести все к одному — везде нужно соблюдать баланс, а прикрываться перфекционизмом это, на самом деле, очень плохо.
Я знаю много людей, которые уже работают программистами и ни один из них не стал им в основном читая книги. Чтобы реально уметь программировать нужно кодить, это как с английским языком, чтобы нормально им владеть нужно разговаривать. Нужно ошибаться и учиться на своих ошибках.
я же вам и говорю, напишите, как делаете это вы, как распределяете время. Как начинали учиться, что читали, как комбинировали все, я об этом речь веду(можно вкратце). Я то говорите, что как-то нерационально расходуется время, а сами информацией не поделились, мне было бы приятно почитать. Если приведете ссылочки еще на приложения, я скажу что пичаль, мой мир рухнул, и буду учиться как вы, ибо до сих про знаю только приведенный мной метод изучения.
Сколько бы я книжек по джава не читал, для первой книги я не могу найти ничего лучше, чем HeadFirst — Изучаем Java. Возможно потому, что я несколько по другому смотрю на обучение. Постараюсь объяснить в нескольких предложениях.
Больше всего я бы советовал не фокусироваться на чем то одном, будь то джавараш или ещё что, потому что в итоге вы будете учить одно, а забывать другое. Если вы задались целью стать разработчиком java, то сколько бы я не читал советов, самым лучшим всегда остается — прочитать ровно 1 книгу по основам(например ту, что я привел выше) решая абсолютно все задачи. После книги начать серьезно заниматься джавараш попутно читая бд, спринг, хибернейт. Где то с середины курса джавараш очень важно начать писать свои первые приложения, в интернете куча примеров заданий, которые даются при устройстве на работу. После написания 1-2 штук начинается самое важное — ваше собственное приложение. Это не только проверка всех накопленных вами знаний, это проверка того, как вы найдете информацию о том, о чем вы понятия не имели и заполнит много пробелов в вашем мозгу. Можно купить себе whiteboard(меня это очень выручило), с ним все процессы написания приложений идут как по маслу. Самое важное не забывать, главное кодить и читать одновременно. Ну и как написано в этой статье, самый лучший источник информации это официальная документация и это касается не только Java core, это касается абсолютно всего, всех фреймворков.
З.ы. процесс обучения, а так же написания приложений очень упростит и ускорит ментор, если вы сможете его себе найти.
Полностью поддерживаю эту идею, и по этому пути я следую. Однако сейчас могу только читать книжки и учиться на JavaRush, при этом раз в 2 недели тратя 5-6 часов на повторение Java.
Одно но, я не покупал подписку за деньги, и использую подписку за инвайты. А как известно заинтерисовать человека изучать Java, очень сложно, поэтому я
бд — Изучаем MySql HeadFirst, спринг — Spring in Action — Manning, hibernate — Java Persistence with Hibernate\Hibernate in Action — Manning. Издания брать самые последние обязательно, особенно это касается книги про спринг. По джаве так же обязательно нужно прочитать что то по паттернам, есть книга headfirst паттерны проектирования, так же есть всем известна «Банда четырех» GoF. Так же, на закуску, Дж. Блох — Java эффективное программирование.
Но опять таки, эти все знания абсолютно ничего не стоят без практики кодинга. Как бы ты хорошо не понял теорию, есть ошибки которые нужно совершить, есть ямы в которые нужно попасть, чтобы в будущем с уверенностью сказать «Плавали — знаем».
В процессе изучения Java уровня так с 5ого я завел себе «библиотеку ссылок», сохраняю самые полезные (на мой взгляд) ссылки по различным материалам, стараюсь их перечитывать по пути и обратно на работу.
По поводу первой книги — это Head First, которую мне посоветовал, как первую, Zapp, за что ему большой respect)
Шилдт — справочник, не учебник. До Хорстманна даже не добрался еще. Туториалы и Oracle API рулят по-любому. А еще сто тыщ блогов и форумов очень помогают. Материала полно, было бы время и желание ))
Справочником в некоторой степени в учебнике Шилдта является Часть 2. Первая часть — это на 100% учебник.
Ну и вообще использовать печатную книгу в качестве справочника — сомнительное занятие, когда под рукой всегда есть интернет.
Купил Шилдта, прочитал уже половину. Заказал Философию Java(( Интересно и как теперь быть, остановиться с Шилдтом и начать читать «HeadFirst — Изучаем Java» или «Java. Библиотека профессионала»?
Если да, то кто-нибудь читал обе эти книги? Какую все таки выбрать?
Или уже не париться?
Если «HeadFirst — Изучаем Java» для вас не первая книга, то я бы посоветовал просто решать из нее примеры и там, где у вас возникают вопросы — уже читать главы, поскольку книга предполагает наличие практически нулевых знаний в ООП и java core.
После 19 если только почитать про NIO, java.io и сервлеты.
Шилдт «Полный справочник» именно как справочник еще сойдет, но в качестве книги для самообучения не советую. Книги Хорстмана и Корнела — там добротный перевод, хороший материал, легко усваивается. HeadFirst Java — отличное издание. Если дочитал до 19 главы в Шилдте, то HeadFirst покажется достаточно простым.
Сколько бы я книжек по джава не читал, для первой книги я не могу найти ничего лучше, чем HeadFirst — Изучаем Java. Возможно потому, что я несколько по другому смотрю на обучение. Постараюсь объяснить в нескольких предложениях.
Больше всего я бы советовал не фокусироваться на чем то одном, будь то джавараш или ещё что, потому что в итоге вы будете учить одно, а забывать другое. Если вы задались целью стать разработчиком java, то сколько бы я не читал советов, самым лучшим всегда остается — прочитать ровно 1 книгу по основам(например ту, что я привел выше) решая абсолютно все задачи. После книги начать серьезно заниматься джавараш попутно читая бд, спринг, хибернейт. Где то с середины курса джавараш очень важно начать писать свои первые приложения, в интернете куча примеров заданий, которые даются при устройстве на работу. После написания 1-2 штук начинается самое важное — ваше собственное приложение. Это не только проверка всех накопленных вами знаний, это проверка того, как вы найдете информацию о том, о чем вы понятия не имели и заполнит много пробелов в вашем мозгу. Можно купить себе whiteboard(меня это очень выручило), с ним все процессы написания приложений идут как по маслу. Самое важное не забывать, главное кодить и читать одновременно. Ну и как написано в этой статье, самый лучший источник информации это официальная документация и это касается не только Java core, это касается абсолютно всего, всех фреймворков.
З.ы. процесс обучения, а так же написания приложений очень упростит и ускорит ментор, если вы сможете его себе найти.
HeadFirst «Изучаем Java» тоже классная книга — согласен! Не упомянул её, т.к. не довелось по ней позаниматься, только недавно она попала в мое поле зрения. Вот выиграю сейчас в лотерею — тогда отпишусь :-)
И как, выйграл?
Серия HeadFirst вообще вся классная. Читал книгу по SQL. Блин, в стиле диалога с книгой. Даж открыл пару новеньких вещей для себя (а ведь это только 2/3 книги прочитанно).
Тоже прочитал эту книгу. Как-то не очень ей остался доволен. Слишком всё поверхстно и только основ. Плюс систематизации знаний нет. Доинство этой книги, что всё рассказывается на простом уровне и с понятными примерами (из жизни).
Ну тоже странно, если об этом сказано в одной книжке с расчетом что их надо читать обе, тогда зачем во второй дублировать ту же тему, да ещё и пропуская важные моменты. Я привел это сравнение просто как пример. На самом деле там очень много других отличий не в пользу Шилдта.
Я читаю Хорстманна, там довольно подробно описывают каждую задачу. Проблема вот только в том, что некоторые классы которые там описываются в скором времени могут заменить на другие классы и как всё это отслеживать я пока с трудом представляю.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Категорически не рекомендую читать книги «на скорость». В заданное время может и вложишься, но в итоге в голове останется на порядок меньше.
На мой взгляд, читать лучше «в удовольствие», тогда возникает эффект пылесоса — и тебя самого засасывает в материал книги, происходит полное погружение — от этого и кайф ловишь и все понятно.
Хотел сказать, что это заявление больше похоже на заманухи с форекса или там какого гербалайфа. Это же не произведения Донцовой, на глубинное понимание которых нужно не меньше недели.
Спасибо и вам за благодарность!
Классно что даже будучи умудренным опытом в других областях человек идет по выбранному им пути, идет и успешно.
Спасибо за эту статью. Вдохновляет.
З.Ы. Спасибо интернету за то, что позволяет так просто обмениваться мыслями.
а лучше сразу укольчиков, типа: «Java Core», «Hibernate», «Spring MVC»,…
Из серьезных минусов, я бы отметил отсутствие задач, чтобы натренировать разум на использование этих знаний. Второй момент, почему это минус, это потому, что все мы люди и книга не абсолют. Всегда есть аспекты индивидуальные для каждого человека, которые он поймет правильно только на практике, по этому я считаю, что задачи во время изучения теории это мастхэв. Жаль, что такая хорошая книга их лишена.
Полистайте книжку найдете задачки в каждой главе, предположу, что у вас книжка Еккеля на 600-700 страниц, там на сколько я знаю таких задачек нет.
Я лично покупаю краску(принтер с СНПЧ) и бумагу, плюс после печати делаю переплет.
В итоге краска флакончик 60грн(хватает на 2000-3000 страниц), бумага по 60грн 5 пачек(300грн), и переплет 3 книг(150 грн). В сумму 60грн + 300грн + 150грн = 510 грн.
Имеем 3 книги, Брюс Еккель на 1170 страниц, Хорстман том 1 900 страниц, и Мартин Грубер «Понимание SQL» 300 страниц.
Можно еще сэкономить, дело в том, что распечатанные 1100 страниц раза в 3-4 толще оригинальной книги, поэтому я печатал Еккеля так, сначала пропечатал 600 страниц на одной стороне, потом перевернул, и остальные 600 страниц напечатал на обратной, в итоге после переплета, буду иметь такой вариант чтения, сначала, читаю правую сторону до 600 страниц, потом левую))
В подтверждение моих слов, 900 страничный том 1 Основы Java Хорстман справа напечатанный с одной стороны, и 640 страничная Высшая математика слева))
Но еще раз повторюсь, если распечатать с 2-х сторон, то книга получится в 2 раза тоньше.
За ссылку спасибо. Такие задачи это хотя бы что то(странно что в оглавлении указаны упражнения только к одной главе, в то время, как вы и сказали, походу дела они, все же, встречаются), но до уровня интерактивности HeadFirst им очень далеко, я по этому и больше люблю ИХ книги, они все читаются на одном дыхании.
По поводу удобности чтения, для меня почему-то удобней работать с с книжный вариантом, не знаю почему. Просто когда ты читаешь книгу, тебе всего-то и нужно, что пролистать на пару страниц назад, или на 100, что на планшете сделать проблематичнее) Ну это для кого как.
А про удобность чтения, тут у каждого варианта свои плюсы, свои минусы. Только вот в электронном варианте постоянно появляются новые плюшки. Кто то говорит, что в электронном виде нельзя страницу загнуть, другие им отвечают, что уже и для этого есть специальная кнопка ;) Софт тоже нужно знать. Кто знает, вон у нас есть гнущиеся экраны, может кто то из стартаперов скоро универсальную книгу сделает, чтобы угодить как одним, так и другим. 1 книга будет для всего, это уж точно))
Очень важно — читать нужно вариант на английском языке. Русский перевод не очень точно передает смысл, не теми словами.
В храм заходит хамоватого вида молодой человек, подходит к священнику, бьёт его по щеке и ехидно улыбаясь, говорит:
— А что, отче, сказано ведь: «Ударили по правой щеке, подставь и левую».
Батюшка, мастер спорта по боксу, хуком слева отправляет наглеца в угол храма и кротко произносит:
— Сказано также, какой мерой меряете, такой и вам будет отмерено!
Испуганные прихожане спрашивают:
— Что там происходит?
Дьякон с важным видом объясняет:
— Евангелие толкуют.
Многие тут напишут, заучить не значит применять, но прочитать не значит запомнить, знания которые выучены с блокнотов(лекции JavaRush), теперь при прочтении Хорстмана и Еккеля обростают, новыми дополнениями, нейронами в памяти, и рассказав например лекцию о наследовании с Javarush при повторении(если помните там рассматривалось 2 примера, один наследование в реальной жизни, второй в программировании, потом наводились примеры, как наколдовать пегаса, и т.д) можно еще излить из себя некоторую информацию из книги Хорстмана.
Рассказывать мне, что такой метод не работает, это лишнее, по себе знаю, так я когда в школе учился учил географию(не каждые 2 недели повторял все), из года в год участвуя в олимпиадах повторял материал, в итоге после 11 класса сдал ВНО на 195 баллов.
P.S. еще я так SQL — учу, например прочитал книгу Крис Фиайли Quick Start, написал себе краткое изложение книги во все такой же блокнот на 60 страниц, и все повторяю его, плюс сайт sql-ex.ru, но советую сначала прочитать книгу.
Этот метод более чем рабочий. Даже если в самом начале это разрозненные знания, то с течением времени и применением этих знаний на практике, человек получит цельную связанную систему.
Если изучишь своим методом статьи ниже, то можешь смело идти на собеседования и тебя почти сразу возьмут:
1. Java собеседование. Коллекции
2. Структуры данных в картинках. LinkedHashMap
3. Структуры данных в картинках. HashMap
4. Структуры данных в картинках. LinkedList
5. Структуры данных в картинках. ArrayList
6. Сравнение объектов: теория [skipy]
7. Сравнение объектов: практика [skipy]
И, вдогонку, хорошие истории:
1. Общие соображения по архитектуре ПО или Пособие для Главного Плотника (часть 1: что такое хорошо)
2. Общие соображения по архитектуре ПО или Пособие для Главного Плотника (часть 2: что такое плохо и что с этим делать)
3.
Например я собрался осваивать английский через видео курс Полиглот (текстовая версия) и видео-версия
Я использую известную формулу: Знания — Умения — Навыки. Знания нужно получать/усваивать через понимание и дальше уже применять на практике, что приведет уже к автоматическому применению их на практике.
Недавно установил себе упомянутую blacky программу Anki — пробую с её помощью запоминать ускользающие моменты. Вот несколько из занесенных мною в неё карточек:
Вопрос: В чем особенность инициализации локальных переменных?
Ответ: Локальные переменные не инициализируются автоматически пустым значением null. Локальную переменную необходимо явно инициализировать с помощью оператора new или присвоив ей пустое значение null.
Вопрос: What does a BigDecimal consist of?
Ответ: A BigDecimal consists of
1. an arbitrary precision integer unscaled value
2. 32-bit integer scale
value of the number represented by the BigDecimal is therefore equals (unscaledValue × pow(10, -scale))
Вопрос: К каким полям экземпляра не следует применять ключевое слово final?
Ответ: Ключевое слово final не следует применять к ссылочным переменным изменяемых типов (потому что хоть сама переменная и является финальной, но объект, на который она ссылается, можно изменять, что может привести к недоразумениям/ошибкам). Правильно — это применять final к переменным примитивных типов или ссылочных неизменяемых типов (например, String) — тогда переменная действительно становится финальной, т.к. нельзя изменить ни её саму, ни объект, на который она ссылается.
Вот кстати последний
Однако добавлю еще раз, лекции на JavaRush, это база, минимум того, что необходимо иметь знаний.
Я даже думаю таких меньшинство, которые что-либо конспектируют, а потом повторяют, люди быстро прочитали лекцию и го-го-го за задачи, а потом создают темы на форуме, где не могут решить задачу, ибо не внимательно читали лекцию, прошлую, позапрошлую, или с предыдущего уровня.
Когда вы будете на собеседовании, вас с вероятностью на 100% наверное, сначала спросят теоретический материал, а потом уже практика.
Я если хочу, чтобы какая-то глава из книги осталась в памяти, конспектирую её, но очень сжато. И тогда уже могу к такому конспекту возвращаться и прокручивать все в голове, чтобы запомнилось.
Не зря говориться повторение мать учения.
В принципе так же и английский хочу учить, выучить/заучить/зазубрить базовые конструкции языка, а потом добавлять и добавлять, еще и еще.
Вы написали такой замечательный комментарий, но так и не потратили свое драгоценное время, дабы прочитать мой комментарий и пальчиком тыкнуть, где я написал что учу фреймворки, технологии Java??
Я написал как получаю знания я, учу какую-то базовую информацию, плюс читаю книжки, таким образом базовая информация структурируется, и «обростает» снежным комом.
В этом и хорош Хорстманн, что очень умно и к месту дает понимание, как нужно пользоваться инструментами языка, а не просто перечисляет, какие в Java есть операторы, ключевые слова и т.д. и т.п.
При этом Vakatsiienko не представил свой метод обучения, ну или написал бы что работает программистом(что маловероятно, хотя все может быть), ну чтобы можно было считать его мнение авторитетным
Нет, я ещё не работаю, но я к этому близок и написал уже не одно работающее веб приложение. Вы можете поднять скролл вверх и прочитать, к примеру, моё мнение, как следует распределять время.
Сообщение, адресованное вам, я писал, чтобы подвести все к одному — везде нужно соблюдать баланс, а прикрываться перфекционизмом это, на самом деле, очень плохо.
Я знаю много людей, которые уже работают программистами и ни один из них не стал им в основном читая книги. Чтобы реально уметь программировать нужно кодить, это как с английским языком, чтобы нормально им владеть нужно разговаривать. Нужно ошибаться и учиться на своих ошибках.
Полностью поддерживаю эту идею, и по этому пути я следую. Однако сейчас могу только читать книжки и учиться на JavaRush, при этом раз в 2 недели тратя 5-6 часов на повторение Java.
Одно но, я не покупал подписку за деньги, и использую подписку за инвайты. А как известно заинтерисовать человека изучать Java, очень сложно, поэтому я
Но опять таки, эти все знания абсолютно ничего не стоят без практики кодинга. Как бы ты хорошо не понял теорию, есть ошибки которые нужно совершить, есть ямы в которые нужно попасть, чтобы в будущем с уверенностью сказать «Плавали — знаем».
По поводу первой книги — это Head First, которую мне посоветовал, как первую, Zapp, за что ему большой respect)
Ну и вообще использовать печатную книгу в качестве справочника — сомнительное занятие, когда под рукой всегда есть интернет.
Если да, то кто-нибудь читал обе эти книги? Какую все таки выбрать?
Или уже не париться?
Шилдт «Полный справочник» именно как справочник еще сойдет, но в качестве книги для самообучения не советую. Книги Хорстмана и Корнела — там добротный перевод, хороший материал, легко усваивается. HeadFirst Java — отличное издание. Если дочитал до 19 главы в Шилдте, то HeadFirst покажется достаточно простым.
Видимо, главное — желание.
Больше всего я бы советовал не фокусироваться на чем то одном, будь то джавараш или ещё что, потому что в итоге вы будете учить одно, а забывать другое. Если вы задались целью стать разработчиком java, то сколько бы я не читал советов, самым лучшим всегда остается — прочитать ровно 1 книгу по основам(например ту, что я привел выше) решая абсолютно все задачи. После книги начать серьезно заниматься джавараш попутно читая бд, спринг, хибернейт. Где то с середины курса джавараш очень важно начать писать свои первые приложения, в интернете куча примеров заданий, которые даются при устройстве на работу. После написания 1-2 штук начинается самое важное — ваше собственное приложение. Это не только проверка всех накопленных вами знаний, это проверка того, как вы найдете информацию о том, о чем вы понятия не имели и заполнит много пробелов в вашем мозгу. Можно купить себе whiteboard(меня это очень выручило), с ним все процессы написания приложений идут как по маслу. Самое важное не забывать, главное кодить и читать одновременно. Ну и как написано в этой статье, самый лучший источник информации это официальная документация и это касается не только Java core, это касается абсолютно всего, всех фреймворков.
З.ы. процесс обучения, а так же написания приложений очень упростит и ускорит ментор, если вы сможете его себе найти.
Серия HeadFirst вообще вся классная. Читал книгу по SQL. Блин, в стиле диалога с книгой. Даж открыл пару новеньких вещей для себя (а ведь это только 2/3 книги прочитанно).
А вообще, на самом деле, странного ничего в этом нет, поскольку книги предполагают разный уровень знаний.