1. Проблема всіх мобільних програм

Довгий час студенти JavaRush просили мобільну програму для навчання. І ми їх розуміємо — у сучасному світі телефон набагато доступніший, ніж повноцінний комп'ютер із IntelliJ IDEA. Значно простіше протягом дня виділити кілька разів по 15 хвилин, ніж сісти за навчання на 1–2 години.

Навчання на JavaRush було б значно ефективнішим, якби ми придумали, як використовувати всі наявні можливості. От тільки як увіпхнути в телефон IDE?

Ми довго вважали, що це неможливо в принципі. Це підтверджувалося й на прикладі конкурентів: з усіх своїх комп'ютерних програм, які навчають програмування, вони викинули написання коду й замінили його на тести.

Проте на початку 2019 року ми зробили прорив. Замість того, щоб копіювати великі IDE, ми вирішили зосередитися на проблемах, з якими стикаються користувачі під час написання коду. Наше рішення ґрунтувалося на декількох простих принципах:

  • Читання коду важливіше за написання коду
  • Введений код важливіший за спосіб його введення
  • Керування курсором має бути простим та інтуїтивно зрозумілим
  • Немає одного-єдиного правильного способу розв'язання задачі.

2. Наше рішення

Нам вдалося створити досить гарне рішення, яке відповідало всім принципам.

Перегляд коду

По-перше, ми вирішили розділити режим перегляду коду й режим редагування коду. У режимі перегляду коду проведення пальцем слугує не для переміщення курсору, а для прокручування тексту. Та й переглядати код зручніше, коли клавіатура не займає пів екрана.

Підказки

Для кожної задачі було створено набір ключових слів, з яких користувач міг би скласти розв'язання. Тепер не має потреби набирати слова літеру за літерою: можна просто тицяти слова-підказки в правильному порядку, і все. Натомість завжди можна перемкнутися на звичний спосіб набору коду: з клавіатури по літерах.

Слів-підказок має вистачати для того, щоб користувач міг написати свій варіант розв'язання задачі. Водночас їх не повинно бути надто багато: зайві слова просто заважатимуть. Якщо таких слів багато, їх слід розділити на категорії, якщо мало — відображати всі разом.

Ну і певна річ, слова-підказки мають бути унікальними для кожної задачі. Для кожної з 1500 задач, які є на JavaRush. Ми витратили два місяці тільки на вдосконалення алгоритму генерації підказок. І все одно потім довелося обробляти підказки для кожної задачі вручну.

Результат вражає, однак ми, мабуть, і надалі працюватимемо над його покращенням.

Курсор

Керування курсором заслуговує окремої розповіді. Пересувати курсор пальцем незручно. По-перше, палець закриває код, а по-друге, найчастіші дії з курсором — це його переміщення на 1–2 символи назад або вперед.

Ми створили спеціальну кнопку-джойстик, яка дає змогу керувати курсором, не закриваючи код. А ще додали спеціальні кнопки для посимвольного переміщення курсора. І все це для того, щоб, набираючи код, ви думали про код, а не про те, як же його таки набрати!


3. Огляд мобільної програми

Спочатку в нашій мобільній програмі було чотири розділи:

  • Курс Java
  • Задачі
  • Допомога
  • Групи

А тепер розкажемо про ці розділи докладніше.

Курс Java

У розділі «Курс Java» відображається список усіх рівнів JavaRush, згрупованих за квестами. Для кожного рівня відображається список його лекцій. Ви легко можете перейти до останньої лекції: для цього є спеціальна кнопка «Почати/Продовжити».

Задачі

У цьому розділі відображаються всі задачі, які доступні користувачеві. Їх розподілено на три списки: «нові задачі», «задачі в прогресі» та «розв'язані задачі».

Після дотику до певної задачі відкривається мобільне середовище розробки MobileIDE, де ви можете переглянути умову задачі, вимоги до неї та код, а також написати своє розв'язання. Надіслати задачу на перевірку також можна одним дотиком.

Допомога

У цьому розділі відображаються запитання щодо задач. Ви можете переглядати запитання інших користувачів і написані ними коди розв'язання, давати їм поради й рекомендації. Робити це майже так само просто, як і на сайті.

До того ж, ви можете ставити свої запитання щодо задач. Ваш код буде додано до запитання автоматично: нічого нікуди копіювати не потрібно.

Групи

У розділі «Групи» ви можете приєднатися до тематичних груп, а також читати й публікувати статті. Набирати текст у телефоні не дуже зручно, тому зараз цей розділ призначений здебільшого для читання матеріалів, розміщених у вебверсії розділу.

Станом на грудень 2020 року в мобільній програмі вже 11 розділів.