При подготовке программы курса “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 июня!
Комментарии (18)
MaximusWork
26.05.2017 12:50+1Даже шрифты глаз режут. Да и стоимость космос. Для крупных городов видимо. Сделайте 10000 за весь курс и будет всем хорошо.
Dmitry21
26.05.2017 12:51со шрифтами поиграем (с)
а что касается стоимости, то как Вы себе видите себестоимость курса с живыми преподами? Конечно, мы можем пригласить каких-нибудь долдонов, которые вам начитают книжку по Java. А нормальному разрабу, который практикует, надо нормально и платить. Такие делаMaximusWork
26.05.2017 13:25Ну ок, сделайте что-нибудь вроде распродажи. Пусть будет в половину стоимости. Думаю что «профит» финальный будет выше в разы.
Dmitry21
26.05.2017 13:41мы разыгрываем на каждую группу 4 бесплатных места. по поводу распродажи — нельзя делать большую группу, резко снижается качество обучения. поэтому здесь вопрос в балансе стоимости и размера группы, но мы еще ищем его. пока кажется, что 9500 в месяц — не много, скорее надо поднимать еще выше
bitec
01.06.2017 13:31+1Стоимость космос? 700 евро за 5 месяцев: Вы шутите? Вы посмотрите, сколько возьмут за такой курс за рубежом — будете приятно удивлены. Для примера — я преподаю в Ирландии курс java для новичков — за 52 часа (~2+ месяца) стоимость составляет 1200 евро. Причем курс был не фонтан, мне пришлось многое менять и добавлять, чтобы сделать его ближе к реальному рынку. Этот курс же охватывает все актуальные технологии и фреймворки, очень даже симпатично
Dmitry21
01.06.2017 13:39Я правильно понял, что Вы призываете поднять средний чек?
bitec
01.06.2017 13:43Никак нет, так как я не знаю глубину курса, его качество и т.д. Список технологий очень хороший и актуальный. Из Европы цена выглядит смешной, но равняться нужно на местный рынок.
А еще у нас в России любят критиковать много, в Европе люди намного мягче. Вот и уважаемый Lany нашел недочеты. Я же помню, сколько я усилий потратил, чтобы привести древний курс в более-менее достойный и актуальный вид, это адский труд. Поэтому поддерживаю вас в ваших начинаниях :)
lany
27.05.2017 11:53+2А что у вас в табличке всё как попало написано? Язык программирования Java пишется с большой буквы. CSV, XML — только большими буквами. Или JUnit, или по крайней мере junit, но никак не Junit. Правильно — IntelliJ IDEA, а не Intellij Idea. Я уж молчу про javasist вместо javassist. Понимаете, это не просто придирки. Если человек со всем этим каждый день работает, у него написание этих слов в подкорке отложилось, неправильный регистр ему сразу бьёт в глаза. Профессионал бы не сделал такую табличку. А так складывается ощущение, что как раз не нормальный разраб будет, а «долдон начитает книжку по Java».
Кстати, javassist же устарел морально. Почему не ByteBuddy, например?
coursar
27.05.2017 12:47Замечательно прошёл день открытых дверей )) по присланным на почту ссылкам ни докладчик, ни кто-либо из организаторов так и не удосужился появиться. Саппорт молчит как партизаны )).
Dmitry21
27.05.2017 12:48ДОД идет сейчас, я его смотрю. Скиньте мне в личку ссылку, по которой вы пытаетесь зайти, пожалуйста
webmascon
04.06.2017 04:36Пройдите наши курсы за 700 евро и вы станете зарабатывать миллион баксов в месяц! Не упускайте шанс разбогатеть заплатив всего 700 евро. Уровень ваших доходов зависит толтко от вас! Становитесь нашим платиновым партнером и с каждого затащенного на наши курсы получайте процент!
Pilat
04.06.2017 05:37-1С чем я столкнулся при использоавнии java-кодеров.
1) не понимают что такое транзакции и sequence. Это наследие mysql скорее всего.
2) не пишут тесты, например не умеют ускорять таймер.
3) не владеют jenkins.
4) В линуксе не разбираются.
5) В восторге от ORM.
6) не пользуются swagger'ом
В Вашем курсе это каким-то боком упомянуто, кроме, кажется, тестирования, но наверно в рамках общего ознакомления.
izzholtik
Сайт абсолютно неинформативен.
Сколько длится занятие? Какова стоимость месяца/курса? Каков формат обучения, просмотр записи лекции за денежку и отправка Д/З на мылко, или будет какая-то интерактивность? Есть ли примеры курсов, чтобы оценить качество материала?
izzholtik
Хотя, пожалуй, я передумал. Вёрстка на странице тестирования кривая настолько, что часть вопросов оказывается за границами экрана, и скроллбаров нет.
Dmitry21
скоро выкатим новый сайт. старый, факт, не очень.