Как стать Junior Java Developer, имея немалый опыт разработки на этом же языке?
=================================================================================

 Добрый день. Я пишу на **Java** уже практически два года, при этом почти не потратив времени на изучение самого языка. Все знания сами приходили с постоянной практикой и с доброй помощью всем хорошо известного StackOverFlow, чужого кода, в конце концов. Работая над более менее серьезными проектами, я постоянно сталкиваюсь с нехваткой знаний или опыта и не удивляюсь этому, ведь язык я толком-то и не учил. Понимая, что далеко я таким образом не уйду, а уж о трудоустройстве речи вообще не может идти, я решил освоить язык заново, нудно изучая каждую тему и закрепляя пройденное решением практических задач. Я полагаю, что это поможет мне залатать откровенные дыры в текущих знаниях, обрести массу новых и выйти на другой уровень программирования. Естественно, главная цель для меня, стоящая за всем этим - успешное прохождение собеседования и, как следствие, трудоустройство. Параллельно я планирую изучать то, что необходимо любому разработчику, а в частности **Java Junior-у**: HTML, CSS, MySQL и далее по списку.  
  

Казалось бы, задача вполне решаемая - просто взять и заново выучить язык, просто подойдя к вопросу более серьезно. Наверное, так оно и есть, но тут же встает главный вопрос - как это ЛУЧШЕ сделать?  
  

Передо мной множество вариантов траектории обучения:  
  

1) Изучение языка с ментором. Плюсы: есть человек, контролирующий процесс твоего обучения и чуть что тебя исправляющий. Минусы: дорого, крайне мало вариантов в рунете + навряд ли кто-нибудь согласится ежедневно тратить на тебя часы своей жизни.  
  

2) Самостоятельное обучение по книгам/материалам в сети + практика. Плюсы: книга - не ментор и даже не вебинар, её можно "переспрашивать" до тех пор, пока не усвоишь материал. Не понравилось объяснение темы - быстро нашел вариант получше. Освоил тему - решил практические задачи - пробежался по вопросам с собеседования на этот раздел - пошел дальше. Не получилось - все заново, и так пока не усвоишь. Минусы - практически не к кому обратиться в случае тотального непонимания.   
  

3) Обучение по курсам. С одной стороны, один из самых эффективных способов, с другой, самый опасный - ознакомившись с мнением опытных людей об онлайн-курсах программирования, у меня сложилось ощущение, что вся эта сфера - сплошная афера или образование крайне сомнительного качества. Тем не менее, среди сотен различных онлайн-курсов мне всё-таки удалось найти несколько, о которых я не нашел ни негативных отзывов, ни громких разоблачений. Среди них - **ITVDN, Hexlet, LevelUP**. Что вы думаете об этих курсах, возможно, кто-то пользовался их услугами или просто обладает информацией? Есть ли у вас опыт работы с курсами на английском языке, какие-либо рекомендации по этой теме?  
  

Кажется, вариантов больше нет. Или есть?  
  

Хотел бы услышать ваше мнение по поводу каждого из вариантов, выслушать предложения и советы, в конце концов, получить ответ на вопрос - как лучше учить, точнее, переучивать язык в моей ситуации, если ближайшая цель - становление Junior-ом? Заранее спасибо вам за ваши советы. 

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

Пишешь резюме, указываешь свой опыт, идешь на собеседование:  
  

1) Либо тебя берут  

2) Либо тебе говорят, что бы безрукий мудак (уточняешь почему).  
  

Учишь, тыкаешь то, где у тебя были проблемы - повторяешь снова.  
  

Если ты не конченный тип, то одной книжки по языку и один учебный проект(который ты делал сам примерно месяц) достаточно для того, чтобы тебя взяли джуном на работу. 

 Самый быстрый и правильный способ получить знания - это работать над реальными задачами в компании, где есть более квалифицированные коллеги. С грамотным тим-лидом, правильно построенным рабочим процессом и код ревью, ваш скилл будет расти с космической скоростью.  
  

Если вы пишете уже 2 года, у вас уже должен быть достаточный опыт для того, чтобы бы устроится стажёром или джуном на реальную работу. Это практически вариант с мертором, только лучше.  
  

Самостоятельное обучение будет хорошо только плюсом. С двумя годами опыта я бы уже не делал на него основную ставку.  
  

Курсы категорически не советую. Комбайн по выманиванию денег. Какой-то эффект могут дать только тем, кто пришёл с 0 знаний. 

 Курсы штука весьма специфичная, и в основном нужны для изучения очень узкой направленности ,потому в твоём случае нужно упираться в книги. 

> 1) Изучение языка с ментором. 

  

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

> 3) Обучение по курсам. 

  

Худший из возможных вариантов. Во-первых, курсы помогают только их создателям. Во-вторых, посмотреть на те же курсы от itvd, ребята просто начитывают сухую теорию, которая разбавлена скудным видеорядом. Пустая трата денег.  
  

Единственно правильный вариант - это пойти на внутренние курсы/стажировки компаний, туда, как правило, не требуют особо глубоких знаний. Таких, к твоему счастью, в достатке. Только там тебя обучат и научат реальным знаниям необходимых для разработки.  
  

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