Стать востребованным на рынке труда: какие темы нужно знать Java разработчику?

    Нам часто задают вопросы про программу обучения: почему мы предлагаем именно такую программу и почему считаем, что именно специалисты, изучившие темы, которые мы рассматриваем на курсе, будут востребованы на рынке.

    При подготовке программы курса “Java — разработчик” мы, в первую очередь, отталкивались от требований работодателей на вакантные позиции уровня middle, начало senior на рынке. Мы сотрудничаем с большим количеством крупных IT-компаний: систематизация их требований к специалистам вместе с собственным опытом собеседований Java SE разработчиков позволили нам составить максимально объективную картину потребностей рынка труда и заключить соглашения с компаниями-партнерами о собеседовании лучших студентов на вакантные позиции.

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

    Мы пришли к выводу, что кроме core-java нужно обязательно учитывать специальности:

    • специалист по веб серверам на java:
    • специалист по работе с базами из java приложений;
    • специалист по сетевому взаимодействию java приложений и т.д.

    В результате у нас получилась таблица уровней знаний java и специальностей: колонки таблицы отражают специальности: core java, DB, web/net, devops; столбцы таблицы: уровни сложности. Программа курса «Разработчик Java» в Otus.ru основана на этой таблице.



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

    Программу обучения на первом месяце мы начинаем с настройки окружения и особенностей настройки в различных ОС, обзора работы систем сборки и управления зависимостями, а также с запуска приложений и параметров запуска. Эта тема крайне важна если вы собираетесь создавать приложения с нуля, скажем для своего стартапа. Впрочем, присоединившимся к существующему проекту тоже не помешает навык настройки среды и проекта. Некоторые темы из core java базового уровня мы все же включили в программу и рассматриваем их глубже, чем обычно принято в курсах по Java: мы рассматриваем содержимое jar файлов — метаданные и байткод, подробно разбираем загрузку классов на старте приложения и виды класслоадеров, внутреннее устройство контейнеров и эффективность их алгоритмов. Мы считаем, что глубокое понимание принципов работы JVM, работы с памятью и типами данных важно для специалиста, который претендует на позицию уровня middle, начало senior. На позициях такого уровня специалист должен применять самое эффективное решение из возможных, а для этого необходимо понимать какое решение наиболее эффективно.

    Несколько раз в течение курса мы рассматриваем работу сборщиков мусора, организацию памяти и алгоритмы GC. GC это все, что у вас есть для освобождения памяти. Если вы не хотите гадать от чего у вас на сервере раз в час stop-the-world паузы по 5 минут — вы должны понимать какие GC использовать и как их настроить.

    От настроек среды разработки и разбора базовых принципов мы переходим к настройкам запуска приложений и вопросам их тестирования. Мы разбираем популярные тестовые фреймворки, принципы их работы и способы использования. Может ли приложение без тестов работать правильно? Может, но только до первой правки. Мы подробно разбираем аннотации, создание своих аннотаций и обработку аннотаций в runtime, на стадии компиляции и при загрузке классов. Аннотации — очень важный элемент работы многих фреймворков: тестовых, для сервлетов и вебсокетов, для работы с базой. Даже инструмент для обработки аннотаций на стадии компиляции понимает настройку аннотациями.

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

    Следующий блок тем курса посвящен взаимодействию с окружением: работе с файлами при помощи IO и NIO, работе с базами при помощи JDBC и ORM фреймворков и работе с особым типом клиента – веб браузером. К теме про файлы мы добавили сокеты, к теме про реляционные базы – NoSQL и кэширование, к теме про веб серверы – то как запуститься в контейнере и как встроить веб сервер к себе в приложение. Само по себе java-приложение (особенно сервер) мало интересно пользователю. Важно чтобы приложение могло отвечать на запросы и взаимодействовать с окружением. В этой теме мы разбираем наиболее распространенные решения задачи взаимодействия с наиболее востребованными системами и серверами.

    Последними, и наиболее сложными темами курса, являются темы многопоточности, межпоточного и межпроцессного взаимодействия. Мы разбираем как создавать потоки, как управлять их жизненными циклом, как безопасно организовать взаимодействие потоков при помощи библиотеки и средствами JMM. Современные Java-приложения обычно распределены по серверам в сети и содержат в себе несколько десятков потоков, без понимания принципов работы многопоточных и распределенных систем невозможно сделать их надежными и безопасными.
    Курс не включает темы Java EE. Почему? Потому что Java EE мы планируем рассказывать в отдельном курсе :)

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

    Заинтересовались? Приходите к нам учиться. Новая группа Java начинает обучение уже 3 июня!

    Отус

    286,46

    Профессиональные онлайн-курсы для разработчиков

    Поделиться публикацией

    Похожие публикации

    Комментарии 19
    • НЛО прилетело и опубликовало эту надпись здесь
      • НЛО прилетело и опубликовало эту надпись здесь
          +1
          скоро выкатим новый сайт. старый, факт, не очень.
        +1
        Даже шрифты глаз режут. Да и стоимость космос. Для крупных городов видимо. Сделайте 10000 за весь курс и будет всем хорошо.
          0
          со шрифтами поиграем (с)
          а что касается стоимости, то как Вы себе видите себестоимость курса с живыми преподами? Конечно, мы можем пригласить каких-нибудь долдонов, которые вам начитают книжку по Java. А нормальному разрабу, который практикует, надо нормально и платить. Такие дела
            0
            Ну ок, сделайте что-нибудь вроде распродажи. Пусть будет в половину стоимости. Думаю что «профит» финальный будет выше в разы.
              0
              мы разыгрываем на каждую группу 4 бесплатных места. по поводу распродажи — нельзя делать большую группу, резко снижается качество обучения. поэтому здесь вопрос в балансе стоимости и размера группы, но мы еще ищем его. пока кажется, что 9500 в месяц — не много, скорее надо поднимать еще выше
            • НЛО прилетело и опубликовало эту надпись здесь
                –1
                вы не поверите )
              +1
              Стоимость космос? 700 евро за 5 месяцев: Вы шутите? Вы посмотрите, сколько возьмут за такой курс за рубежом — будете приятно удивлены. Для примера — я преподаю в Ирландии курс java для новичков — за 52 часа (~2+ месяца) стоимость составляет 1200 евро. Причем курс был не фонтан, мне пришлось многое менять и добавлять, чтобы сделать его ближе к реальному рынку. Этот курс же охватывает все актуальные технологии и фреймворки, очень даже симпатично
                0
                Я правильно понял, что Вы призываете поднять средний чек?
                  0
                  Никак нет, так как я не знаю глубину курса, его качество и т.д. Список технологий очень хороший и актуальный. Из Европы цена выглядит смешной, но равняться нужно на местный рынок.
                  А еще у нас в России любят критиковать много, в Европе люди намного мягче. Вот и уважаемый Lany нашел недочеты. Я же помню, сколько я усилий потратил, чтобы привести древний курс в более-менее достойный и актуальный вид, это адский труд. Поэтому поддерживаю вас в ваших начинаниях :)
                    0
                    большое спасибо. весьма неожиданно и приятно
              +2

              А что у вас в табличке всё как попало написано? Язык программирования Java пишется с большой буквы. CSV, XML — только большими буквами. Или JUnit, или по крайней мере junit, но никак не Junit. Правильно — IntelliJ IDEA, а не Intellij Idea. Я уж молчу про javasist вместо javassist. Понимаете, это не просто придирки. Если человек со всем этим каждый день работает, у него написание этих слов в подкорке отложилось, неправильный регистр ему сразу бьёт в глаза. Профессионал бы не сделал такую табличку. А так складывается ощущение, что как раз не нормальный разраб будет, а «долдон начитает книжку по Java».


              Кстати, javassist же устарел морально. Почему не ByteBuddy, например?

                0
                Замечательно прошёл день открытых дверей )) по присланным на почту ссылкам ни докладчик, ни кто-либо из организаторов так и не удосужился появиться. Саппорт молчит как партизаны )).
                  0
                  ДОД идет сейчас, я его смотрю. Скиньте мне в личку ссылку, по которой вы пытаетесь зайти, пожалуйста
                  0
                  Пройдите наши курсы за 700 евро и вы станете зарабатывать миллион баксов в месяц! Не упускайте шанс разбогатеть заплатив всего 700 евро. Уровень ваших доходов зависит толтко от вас! Становитесь нашим платиновым партнером и с каждого затащенного на наши курсы получайте процент!
                    –1

                    С чем я столкнулся при использоавнии java-кодеров.
                    1) не понимают что такое транзакции и sequence. Это наследие mysql скорее всего.
                    2) не пишут тесты, например не умеют ускорять таймер.
                    3) не владеют jenkins.
                    4) В линуксе не разбираются.
                    5) В восторге от ORM.
                    6) не пользуются swagger'ом


                    В Вашем курсе это каким-то боком упомянуто, кроме, кажется, тестирования, но наверно в рамках общего ознакомления.

                      0
                      а swagger'ом пользоваться обязательно?

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое