На просторах интернета можно найти множество курсов по Java разработке для начинающих разного уровня сложности. Большая часть из них вполне хороши для того, чтобы помочь вам стать неплохим Junior разработчиком (конечно, курсов мало, нужна достаточно длительная практика на продуктиве, но базу они дают). Но что делать, если основы вы уже давно освоили, но не понимаете многих тонкостей и чувствуете, что вам не хватает базы для того, чтобы сделать шаг вперед и подтянуться до Middle? Можно изучать литературу, продолжать практиковаться на работе и учиться у более опытных коллег. Несмотря на то, что это все - тоже хорошие способы, им не хватает одного главного момента - систематичности и актуальности. Опытные товарищи постоянно заняты на сложных проектах и у них не очень много времени для того, чтобы дать вам волшебное ускорение в нужном направлении, да и то это обычно ограничивается кратким "копай сюда". Рабочие задачи на продуктиве - это бомба! Но при этом обычно спектр задач все равно ограничивается теми стеками и приемами разработки, которые в данный конкретный период времени востребованы заказчиком фирмы, в которой вам посчастливилось работать. А ведь экосистема Java очень-очень-очень большая! А заказы в фирме могут очень долго ограничиваться сложным и ценным, но достаточно узким стеком. А как же все остальное? Как же научится если не всему, то хотя бы главному, чтобы продвинуться дальше и стать мидлом? Вот здесь приходит на помощь OTUS. Это редкая образовательная платформа, у которой есть курсы не только для начинающих, но и для профессионалов. Мне довелось испытать это самому на практике - еще два года назад, когда я записался на курс профессиональной Java разработки. И это время я вспоминаю со смешанным чувством радости от того, что я его прошел, и тем ощущением бездны, когда после самых первых предметных лекций (пропуская всякие подготовительные и простые, типа изучения Maven) прочитал текст первого по-настоящему сложного домашнего задания. Это было просто страшно - страшно смотреть в задание и чувствовать, что ты ничего почти не понимаешь, и даже не представляешь себе, как за него взяться. Вот тут я почувствовал всю разницу между задачками для джунов и действительно профессиональной работой! Задания оказались максимально приближенными к реальности и, если и не охватывали полный продуктовый кейс большого сложного проекта, то уж точно разбирали сложные части-элементы такого кейса, действительно полезные на практике и которые точно можно использовать в проде. При этом ранее я изучил только базовые основы Java, а работал вообще на другом стеке - Bitrix - Bitrix24 кто знает, что это такое, - уже все понял. Чтобы решить задачу, мне потребовалось несколько раз пересмотреть нужную лекцию, прочесть документацию к технологиям из этой лекции и еще несколько раз задать в чате разные детальные вопросики как преподавателю, так и коллегам-сокурсникам (среди них были и те, кто намного лучше меня был готов к прохождению курса). В общем, дальше начался настоящий квест, где иногда на одно ДЗ у меня уходило сначала по неделе и дольше, потому что я пока еще ничего не понимал и не знал (потом эти сроки стали постепенно сокращаться). По окончании квеста у меня возникло, как оказалось позже, совершенно ложное чувство паники. Мне казалось, что я тону в обилии изученной информации, а к настоящей работе - готов ли? - я был не уверен. Курс был пройден, все контрольные работы сданы, свидетельство о курсе получено. Было очень страшно заявить себя на какую-то вакансию, но тем не менее, я на это решился - а иначе зачем это все? Я был очень удивлен, когда первый же мой отклик на вакансию вызвал интерес. Теперь я понимаю, что мне очень тогда повезло, многие отправляют десятки резюме работодателям, прежде чем получить приглашение на первое собеседование. Причем откликнулась команда, которая дорабатывала сайт по торговле недвижимостью в США, что меня вообще поразило, я тогда еще полагал, что самые сложные проекты там "за бугром" (совершенно напрасно, как оказалось позже). Команда была сравнительно небольшая, поэтому не было HR, мне позвонил мой будущий прямой руководитель сам и предложил побеседовать. После беседы и полутора часов технических вопросов я получил тестовое задание. А за ним последовал оффер. И если быстрый отклик можно отнести на долю удачи, то успешное прохождение интервью - несомненная заслуга образовательной платформы OTUS. Прошло два года, на данный момент работаю в группе компаний Сател (системный интегратор со всеми прелестями "кровавого энтерпрайза"). Недавно возникло желание заглянуть снова на сайт OTUS, так как мне нужны теперь kotlin, scala и микросервисная архитектура на профессиональном уровне, по ним я и хотел подобрать курсы для себя (кстати, я действительно их там нашел, причем по kotlin - это вообще единственный известный мне курс именно для backend разработки, остальные образовательные платформы в РФ ограничиваются kotlin для Android разработки!). И просматривая сайт, решил по старой памяти заглянуть в программу Java разработки - ведь прошло два года, так много всего появилось нового, многое поменялось, мне стало просто интересно, а как же все это отражено теперь в курсе, поменяли ли программу, сделали ли ее более актуальной? И что же - я был приятно удивлен, и более того - по-хорошему позавидовал тем джунам, которые записываются на программу вот прямо сейчас! Что же интересного я увидел? Вот несколько моментов (все охватить просто невозможно, но опишу хотя бы некоторые). программа стала более структурированной в соответствии с современными тенденциями, например, после подготовительного блока теперь идет изучение gradle, а не maven (очень логично, на мой взгляд, maven сейчас даже джуны знают неплохо, а gradle надо изучать, он в теме). затем сразу идет блок "QA и тестирование" - предполагаю, что это было сделано специально, чтобы лучше подготовить слушателя к правильному стилю разработки с покрытием кода тестами, а возможно и с TDD еще до того, как начнутся другие темы. Ранее этот блок был расположен несколько позже в программе, уже после нескольких других тем. везде в последующих темах программы появилось упоминание многих вопросов, которые два года назад мы не изучали, например, детали Java 13 т. п. появился новый отдельный блок "Java в Docker", которого раньше не было - очевидно, что это must have в наше время. появились блоки "реактивного программирования WebFlux"  и "Kafka", чему раньше уделялось меньше внимания и только мельком. появились отдельные блоки "CI/CD" и "Знакомство с Kubernetes", темы, которые тоже раньше затрагивались кратко только в других блоках. Вот так я убедился, что OTUS продолжает быть "на гребне" изучения актуальных инструментов Java разработки и идет в ногу со временем, постоянно улучшая и развивая курсы. Поэтому еще раз скажу - завидую и желаю удачи тем джунам, которые записались на этот курс. Кстати, прямо сейчас у них проходит набор на новый поток курса и 2 июня будет проходить бесплатный урок, на который может записаться любой желающий. Меня утешает, что есть курсы и для меня, на которые я обязательно запишусь, когда придет мое время заняться этими технологиями.  Software development engineer / Data engineer