Данная статья зародилась в результате обучения более 50-ти Java разработчиков в течении одного года.

Делюсь выводами к которым пришел, работая с учениками от уровня «знаю только как объявить переменную» до «работаю на проекте с Spring и Hibernate и хочу углубить знания в этих технологиях до уровня эксперта».

В русскоязычном интернете на эту тему практически ничего нет, заполняем пробел.

Зачем оно вам надо??

Учить Java, тратить на это годы своей жизни?

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

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

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

Вот лишь некоторые проблемы которые могу возникнуть на пути к такому опыту:

  • не освоите язык Java на уровне, достаточным для трудоустройства.
  • не научитесь работать с фреймворками. Возможная причина: на проектах, где вы работаете их просто нет.
  • ваш код всегда будет ужасным. Возможная причина: Вы даже не подозреваете, что ваш код плохой и может быть лучше. На проекте нет экспертов, которые пишут «чистый» код.
  • потеряете интерес или влечение к программированию. Возможная причина: не видите куда можно развиваться.
  • на всегда останетесь «вечным»  Junior/Middle/Senior, не достигнете следующего уровня экспертности. Возможная причина: нет стимула развиваться, нет понимания как развиваться дальше.

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

Назовем такого эксперта ментором (mentor — с англ. наставник).

Вы решили, что хотите общаться с такими человеком, и даже нашли его. Как же теперь общаться с ментором по Java, и получать все бонусы такого общения?

Главное, принять для себя модель взаимодействия с ментором. А именно:

С какими вопросами вы можете к нему обращаться, дабы воспользоваться всеми преимуществами такого доступа:

  1. просьбой посмотреть ваш код, указать на ошибки в архитектуре, стиле кода, использования подходов, методологий, фреймворков.
  2. порекомендовать источник для изучения фреймворка, технологии.
  3. попросить дать техническое задание, выполнение которого позволит «погрузиться» в желаемую тему и проработать ее по необходимым «фронтам».
  4. не стесняйтесь спрашивать совета, как решить ту или иную проблему, какие best practices уместны для данного решения.
  5. спросить, есть ли возможность поучаствовать в действующем проекте, с желанными технологиями. Как правило, у ментора широкий круг общения, с большой вероятностью что то подскажет.
  6. спросить совета по трудоустройству. Особенно если эксперт работает, либо связан с крупной компанией, где большое количество открытых вакансий.
  7. попросить просмотреть ваше резюме. Если ему оно не понравиться, то точно не понравиться и интервьюеру на собеседовании. Эксперт точно даст толковые советы, ибо за свою карьеру поведал их десятки. Да и свое резюме, однозначно не раз перерабатывал до приемлемого уровня.
  8. будет хорошо, если ментор даст вам направление развития, если вы не можете выбрать среди великого множества возможностей.
  9. ну и конечно же, наставник мотивирует вас в процессе общения с ним, что значительно поможет вам достичь поставленную цель.

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

Не буду даже оценивать, в сколько раз быстрее вы будете продвигаться к желаемой цели, например Senior Java Developer или Technical Lead или Architect, или даже CTO (Chief technical Officer) компании/направления и т.д.

Если у тебя уже есть Java ментор, напиши, что общение с ним дало тебе?