Как учить Java “по-взрослому”?

В период, когда я ещё только начинал изучать программирование я столкнулся с рядом проблем:

java-oracle

 

  • Незнание с чего начать.
  • Не качественные учебные материалы.
  • Отсутстствие качественной программы обучения.

Но главная проблема состояла в том, что хоть как-то изучив теорию я не мог создать более-менее серьёзное приложение. Я мог легко найти примеры простейших приложений уровня – “как создать Hello world на Spring” и т.д. Далее шли приложения уровня Spring Pet Clinic.

И если первые были слишком простыми, то вторые вгоняли меня в депрессию и самокопание в духе “ты никчёмный кусок материи”.

Кое-как создавая свои приложения, усложняя их каждый раз, я наконец-то дошёл до приложений, которые можно использовать для решения реальных бизнес-задач. Этот путь был крайне трудным и изматывающим и его можно было сократить примерно на 40-50 процентов.

Конечно, в этом деле мне крайне помог бы ментор по Java, но став разработчиком, понимаешь, что времени на то, чтобы тянуть ещё кого-то может просто не хватать (хотя, при желании это возможно).

Результатом моих размышлений на тему того, чем я могу помочь таким же ребятам и девчатам, которые, как и когда-то, хотят стать Java-разработчиками, стала идея создания некоего “маршрутного листа” для будущего разработчика.

Да, на данный момент существует множество материала, но часто их авторы просто не замечают тех огромных пробелов, которые присутствуют в их материле. И есть они там не потому, что они плохие авторы, а потому, что для них эти вещи настолько очевидны, что говорить о них считается бессмысленным – а зря…

На данный момент сам проект находится в разработке и завершить его я смогу не ранее, чем через 5-6 месяцев – сил и времени для этого требуется крайне много, именно пожтому я решил дать несколько советов, которые крайне облегчат жизнь людям, которые решили встать на этот путь.

СОВЕТЫ:

  1. Прочитайте только 1 (ОДНУ!!!) книгу по основам языка Java. А дальше изучайте Java Language Specification
    Профессионалы изучают документацию, а не книги. Да, конечно иногда выходят книги, которые являются невероятно полезными и прочитать которые просто обязанность уважающего себя разработчика, но такие книги появляются крайне редко.
    Поэтому, изучив одну из книг (Java 8. Полное руководство (Шилтд) , Философия Java (Эккель) или что-то подобное) приучайте себя изучать документацию. Сайты https://docs.oracle.com/javase/8/https://www.jcp.org/ должны стать для вас хранилищем знаний.
  2. Изучите, как работает JVM (Java Virtual Machine). Естественно, что изучать принцип работы желательно по спецификлации Oracle (Java Virtual Machine Specification).
  3. После основ языка приступайте к изучению основ баз данных и SQL.
    Здесь Вам крайне помогут всеразличные руководства (tutorials) и вот эта документация.
    Книга MySQL 5.0 (Виктор Гольцман) будет тоже полезной.

Далее можно следовать советам, которые приведены в ЭТОЙ СТАТЬЕ.

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

Также не советую идти на различные курсы, в подавляющем большинстве случаев – это попытка срубить денег, а не дать знания.

А самое главное – изучайт код. Читайте много кода. Если Вас “не прёт” читать код, у меня для Вас  плохие новости – чтение кода – 70-80 процентов нашей работы. Без этого никуда.

Крайний совет – ходите на конференции, которые организовываются различными компаниями. Если есть возможность попасть на курсы в одну из компаний – “прогрызайте” себе путь на эти курсы. Это увеличит Ваши шансы дойти до цели в разы.

Мой маленький проект, который (как я надеюсь) поможет будущим разработчиком на стадии создания, поэтому, на данный момент я могу помочь Вам только моими статьями и туториалами.

Читайте, учите и будьте целеустремлёнными. Удачи Вам.

  • Володимир Запальський

    Для начинающих есть курс:
    http://javarush.ru/user/reference/74f5a9e1-e6f0-4da4-8c7e-f4c67990d7a1
    Там все понятно описывается от принципов программирования до изучения самого языка. А самое ГЛАВНОЕ – множество заданий для закрепления материала.

  • Andrey Bel

    Большое спасибо Евгений за Ваш труд и желание помочь новичкам!

  • Denis Savenko

    Добрый день. Хотел бы задать банальный вопрос, но просто интересно Ваше мнение.
    Стоит ли браться за Java?
    Правда есть одно “но”. Я веб разработчик с опытом 10+ лет, сейчас Node Angular, раньше Python/Django, RoR, php, когда-то cms разные. Немного С++.
    Плюс я работаю только удалённо (ну вот такой пунктик, семья и всё такое). Чувствую, что во многом уже упёрся в потолок в своей нише. Чем дальше уходил в область тем больше нравиться Java, когда на неё посматриваю. Впринципе, так как все языки в целом имеют одни основы понимаю в целом код Java, даже не зная её, поэтому думаю кривая обучения будет попроще чем, если бы я начинал с начала. Изучал вакансии, в целом конечно в Java фриланса совсем мало, мало кто что-то отдаст на удалёнку, скорее все будет в компании, а это к сожалению мне не подходит. Плюс немного пугает что надо проштудировать весь стек (Spring и т.д.). В целом я понимаю, что для чего, но всё-таки в Java всё по своему реализовано. Так же не знаю многие корпоративные вещи и SQL чисто на уровне ORM :(

    Вопрос, стоит ли мне переучиваться? Я понимаю что уйдет минимум года 2-3 до первой более или менее приемлемой работы. В своей отросли у меня наверное все хорошо, разве что времени не хватает на всё сразу, а так рост по зп только ограничен часами, но не покидает ощущение, что всё это “детский сад”:(

    • proselytear

      Добрый день, Денис.
      Здесь нужно смотреть на то, что именно вам интересно.
      Сам работаю только remote – и с этим особоых трудностей, на данный момент, не возникало.
      Стоит отметить, что большинство remote позиций, которые я видел, только для людей с опытом разработки на Java. Обычно, хотят от 3 лет опыта.

      По поводу самой работы – тут как повезёт, есть очень достойные и интересные проекты, но, они требуют серьёзной подготовки. Есть и саппорт антикварных систем.

      Так, что если готовы просесть по ЗП до уровня джуна, то имеет смысл, но, учитывая, что у вас семья … (Сейчас это ~250-300 у.е.).

      А поводу работы, то на любом инструменте, можно показывать достойный результат.
      Надеюсь, ответ был полезен.

      • Denis Savenko

        Спасибо за быстрый ответ. Ну семья это далеко не 250-300 :)

        Хотел уточнить, видел во многих позициях от 3 лет Java, в данном случае всегда имеется ввиду по трудовой в офисе какой-то компании? Просто я могу спокойно взять и начать другой проект не на Express Node, а к примеру на том же Spring или вести свой какой-то проект на GitHub на Java, это считается за тот самый опыт? Просто в среде Java всегда пугала бюрократия ( возможно это просто стереотип), хотелось узнать так ли там всё жутко? Так ли сводит с ума энтерпрайз или задачи как везде бывают разные и в целом отношение более или менее лояльное?

        • proselytear

          У меня трудовую ещё не спрашивали ни разу :)
          Просто указывал в резюме. На обеседовании, практически всегда, сразу видно, сколько и как человек работал с указанными технологиями.

          Бюрократии не так много, всё крайне зависит от проекта. На моём текущем проекте – её нет от слова совсем.

          Обычно, интересует опыт коммерческой разработки на Java.

          Если есть возможность использовать сейчас Java в реальных проектах (я так понял, это фриланс), то конечно, это будет плюсом.

          Отношение тоже крайне зависит от компании, но плохое отношение, обычно, проскакивет уже на этапе собеседования.

          • Denis Savenko

            Спасибо большое, хотелось конструктивного ответа от человека, который в теме:) Как раз то что нужно… Буду думать, думать и ещё раз думать) Но всё равно дико хочется в Java (подкупает JVM и вообще сам уровень развития платформы, раньше не понимал какой это плюс)

  • Анастасия Капкова

    А практика как же? В смысле узучаешь доки, а реальные проекты как одному писать. Как в анекдоте: “Куда коня впрягать?”