1. Обучение на основе практики

Обучение java на основе практики

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

Программирование — это навык. Никто не говорит «я знаю, как программировать»: все программисты говорят «я умею программировать». Это именно навык, как плавание, как игра в шахматы. И прокачивать его можно только постоянной практикой.

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


2. Типы задач

На JavaRush вас ждет целый ворох разнообразных заданий. Перечислим основные из них:

Задачи на написание кода по образцу

Это самое простое практическое задание. Цель этих задач — потренировать ваш навык написания кода. Чтобы решить такую задачу, вам будет нужно написать такой же код, как в коде-образце. Очень полезно, но быстро надоедает. Таких задач почти не осталось: мы заменили их на более интересные студентам JavaRush задачи.

Карточки таких задач маркируются буквой Т:

Задачи на написание программы

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

Цель таких задач — написать программу, которая соответствует условию и определенным требованиям. Это самая большая группа задач. Для удобства студентов JavaRush, мы маркируем такие задачи уровнями сложности: EASY, MEDIUM, HARD и EPIC.

Эпические (EPIC) задачи часто основаны на материале будущих, еще не открытых лекций. Они нравятся студентам JavaRush, которые чувствуют, что курс для них слишком легкий. Остальные же могут просто пропустить такие задачи и вернуться к ним позже, когда уже познакомятся с соответствующей теорией.

Проекты

Минус обычных задач в том, что они маленькие. Сделал и забыл, как говорится. Поэтому редко получается сделать их очень интересными. А большую программу сложно проверить: слишком многими способами ее можно сделать.

Поэтому на JavaRush появились задачи-проекты — большие задачи, разбитые на 5-35 обычных подзадач. Вы последовательно выполняете все подзадачи, и на выходе получаете большую программу.

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

Тесты

Тестов долгое время не было на JavaRush: создатель JavaRush придерживается мнения, что правильно пройденные тесты вызывают у людей «иллюзию знания». Люди реально программировать не умеют, но уверены в обратном — тесты же они сдали. Такие люди перестают учиться, ведь «они уже все знают».

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

Видео

И наконец, самый последний тип задач — это просмотр видео. В лекции JavaRush добавлено много полезного и интересного видео об ИТ-индустрии.

Кроме того, мы перевели на русский все видео курса по основам программирования Гарвардского Университета — Computer Science (CS50). Их вы так же найдете на нашем сайте. Основная их цель — познакомить вас с разными областями программирования и вдохновить на дальнейшее самостоятельное обучение.


3. Статусы задач

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

Каждая задача на JavaRush прикреплена к какой-то лекции. Сначала все задачи вам недоступны, и решать их вы не можете.

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

Если вы хотя бы раз отправили задачу на проверку, ее статус изменится с «Доступна» на «В прогрессе».

И наконец, когда вы успешно выполните все требования и валидатор примет вашу задачу, ее статус изменится на «Решена».

Пользователям с подпиской Premium Pro даётся еще 3 дня, чтобы попробовать написать другие решения задачи. По истечении этого времени, задача переходит в статус «Закрыта», и этот статус больше не изменится.


4. WebIDE

Чтобы вам было удобно решать задачи, мы написали специальный виджет — WebIDE. Выглядит он примерно так:

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

Ну а сверху вы видите кнопки:

  • Проверка: отправить ваше решение на тестирование.
  • Помощь - выпадающий список, который содержит:
    • Подсказка: вывести подсказку по решению текущей задачи.
    • Помощь сообщества: задать вопрос по вашему решению в сообществе JavaRush.
    • Правильное решение: показать авторское решение задачи.
    • Вернуть мой код: вернуться к вашему коду после просмотра правильного решения.
    • Обнулить решение: сбросить решение задачи — начать все сначала.
  • Обсуждение: обсудить задачу с другими пользователями.
  • Запуск: запустить программу без отправки на проверку (не увеличивается счетчик проверок).
  • Анализ кода: получить подсказки по стилю кода вашего решения.

5. Требования

В первые годы существования JavaRush проверка каждой задачи выдавала один простой результат: да или нет. Программа или проходила все тесты, или нет. Очень просто, но не очень полезно.

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

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

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

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

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


6. Рекомендации

А можно ли еще как-то улучшить задачи? Было бы классно, если бы после каждой проверки вам говорили, что именно в вашей программе неправильно и намекали, как это исправить. Да, это было бы круто! И знаете что? Мы в JavaRush сделали это 🙂

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

Вдумайтесь. Сейчас в JavaRush около 1200 задач, суммарно в которых содержится где-то 10,000 требований. И на каждое требование есть несколько рекомендаций. У некоторых требований их десятки. Валидатор JavaRush содержит более 50,000 рекомендаций к решениям пользователей.

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