Як я вчив Ruby on Rails за три ночі
Зависла задача
Я вже давно хотів вивчити Ruby on Rails на базовому рівні. Без конкретної мети. Швидше просто для себе, щоб краще зрозуміти, що ж у ньому такого особливого (на відміну від 100 500 інших технологій та фреймворків), що дозволяє швидко створювати та масштабувати досить навантажені інтернет-проекти. Вторинною причиною стало бажання спробувати нові підходи до навчання. Коли я навчався на програміста, у нас були тільки книги та форуми, де можна запитати поради. Зараз є інтерактивні підручники та онлайн-школи програмістів, величезна кількість скринкастів (майже мрія: дивитися, як програмують гуру), бази знань на кшталт stackoverflow.com та тонни вихідних кодів на GitHub, де можна годинами вивчати справжні профі. Наступні кілька ночей (а вдень банально ніколи) я вирішив виділити те, щоб спробувати нові способи навчання у дії.
Ніч перша
Починати вчити Ruby on Rails без хоч би мінімального знання безпосередньо Ruby було б дивним. Я колись брався за інтерактивний гід ruby-lang.org. Але як пройшов його, так і одразу все забув. Його творці обіцяють, що на проходження та засвоєння синтаксису Ruby піде п'ятнадцять хвилин. У мене пішло тридцять. Щоправда, із постійним відволіканням на Twitter. Процес виглядає приблизно так. Тобі кажуть: «Масиви в Ruby оголошуються так, а дані з масивів витягують ось так. Тепер давай спробуй зробити масив та витягти з нього N елементів. А ми перевіримо». Читаєш, як усе влаштовано, і одразу пробуєш. Ruby ти так, звісно, не вивчиш. Найкраще це сприймати як супер-експрес-курс, який працює.
Ніч друга
Одна з причин, чому після Rails for Zombies з'являються деякі базовізнання, але не з'являється впевненості, - це віртуальне середовище, в якому проходить навчання. З одного боку, вона до краю зменшує поріг входу: можна не дбати про оточення. З іншого боку, нічого реального в ході справи ти не створюєш - ніякого тобі Hello World на виході. І головне, з якого боку підступатись до його створення, незрозуміло. З цього моменту я хотів спробувати Ruby on Rails у справі, реально встановивши його в системі (до цього можна було навіть не намагатися), і з нуля створити простий додаток.
У голові остаточно закріпилася картинка, як генерується додаток, як працювати з рейковою консоллю, як створити моделі та міграції, як оновлювати моделі та як валідувати в них дані, RESTful-контролери і так далі. Дивлячись кожен з епізодів, я відразу пробував все в дії, вибудовуючи повністю робочу рейкову програму. Стало зрозуміло, як у принципі влаштовані рейки.
Ніч третя
На третю ніч залишилися останні епізоди скрінкастів, які вдалося подивитися в один присіст: робота з рейками вже не здавалася такою дикою. У цей момент мені хтось розповів про те, що курс Rails for Zombies має розумне і набагато глибше продовження. Щоправда, курс вже платний і хоститься у рамках школи програмування Code School www.codeschool.com. Віддати 25 доларів, щоб отримати доступ до всіх курсів школи, було не шкода. Це вартість на місяць, тому, якщо не сподобається, не забудь скасувати передплату.
Курс Rails for Zombies 2 справді виявився дуже вдалим. Щоправда, багато що стало повторенням того, що я побачив у скринкастах, але це було навіть частково приємно. П'ять рівнів та п'ять блоків вправ, які робиш прямо в інтерактивній консолі. До цього моменту рейки вже здавалися логічними, зрозумілими та придатними довикористання.
У Code School можна програмувати прямо у браузері, виконуючи завдання курсу
Що далі?
Чи навчився робити складні проекти? Ні. Але точно усвідомив підходи, що використовуються в рейках, і зрозумів їхню зручність. Навчився швидко створювати прості програми та в суперкороткий термін нарощувати його функціонал за допомогою гемів, написаних спільнотою. Я спіймав кураж і далі із задоволенням навчаюсь найкращим практикам за програмами Code School (зараз дивлюся курс з юніт-тестів). І мене страшенно тішить те, що вивчати технології стало так просто.