Советы сеньоров: как прокачать знания junior Ruby

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

Елена Моргун, Ruby Team Leader в Rails Reactor

10 лет опыта, из них 5 в Ruby

Проблема многих начинающих Ruby-разработчиков в том, что они обычно бросают все силы на изучение фреймворка Ruby on Rails в ущерб навыкам работы с языком Ruby, СУБД и прочим базовым вещам. На выходе мы получаем человека, который может воспроизвести туториал по решению какой-то задачи (например, может сделать какую-нить страничку с формой). Но при этом любой шаг в сторону от туториала, требующий минимального понимания теории, вгоняет этого человека в ступор. Например, необходимость написать простенький SQL-запрос.

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

Если у вас есть базовые знания языка — начните с книги «The Well-Grounded Rubyist». Она местами читается сложно, но если вы честно осилите ее и проработаете все примеры — вы забудете такое словосочетание, как «рельсовая магия». Вы будете смотреть на код совсем другими глазами. Кстати, это очень поможет вам при прохождении собеседований и выгодно выделит вас на фоне кандидатов, которые вызубрили список валидаций в моделях, но не понимают, что такое инстанс и что такое класс (это не шутка, если что).

Микола Бохонко, Competence Lead у Perfectial

6 років досвіду у Software Development

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

Звідки ж брати інформацію?

1. Документація

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

2. GitHub Issues, GitHub Pull requests та інші канали зв’язку з розробниками

Ок, ти відкрив офіційну документацію, зробив все, як у ній написано, але проклятий redis все ніяк не хоче запускатися. Ось тут ти думаєш — пора гуглити!

Але ні. Наступний крок — подивитися відкриті і закриті issues на гітхабі, переглянути pull requests. Якщо проблема і справді не була наслідком неуважності, то або на неї вже є тікет в репозиторії проекту, або його потрібно створити. У багатьох великих технологій є навіть окремі форуми та чати, в яких можна задати своє питання. Заодно ще й в англійській мові попрактикуватися.

3. А як же книги?

Я не особливо підтримую занурення в читання книг на початкових етапах вивчення технології. «Agile Web Development With Ruby on Rails» і «Rails Tutorial» є, безумовно, якісними творами, але, читаючи їх, людина змушена наслідувати приклади з книги, замість написання і осмислення коду самостійно. Тому якщо ти недавно почав вивчати програмування, то пачка книг тільки сповільнить прогрес. Краще опиратися на документацію і постійно практикуватися.

Ruby language

Спершу потрібно мати чітке розуміння мови програмування, оскільки це дозволить правильно використовувати фантастичні можливості Ruby. Для того, щоб постійно бути up-to-date з Ruby-спільнотою, рекомендую на постійній основі відвідувати ці ресурси:

  • RubyFlow — Ruby community blog;
  • Awesome Ruby — колекція Ruby гемів, інструментів, фреймворків;
  • Ruby Koans — шпаргалка по Ruby — синтаксис, структура та деякі загальні функції та бібліотеки;
  • Ruby Weekly — щотижнева розсилка новин у світі Ruby;
  • Ruby — офіційний сайт Ruby.

Також дуже важливо розуміти Ruby Object Model — це маркер, який відразу показує рівень знань девелопера і загалом дозволяє використовувати Ruby правильним чином.

Rails framework

Декілька важливих пунктів, які повинен знати кожен джуніор:

  • Парадигма MVC — вам потрібно знати, який рівень несе відповідальність, за що і як структурувати додаток так, щоб ви знали, де слід поставити бізнес-логіку і де представлення.
  • ​​Haml/Slim — препроцесори HTML, дозволяють швидко писати структурований псевдокод, перетворений в HTML за допомогою інтерпретатора.
  • ActiveRecord — потрібно знати, що таке ORM, як реалізовані міграції, асоціації, валідації.
  • API + JSON — Ruby on Rails дуже часто використовується як API провайдер, тому вам потрібно знати API як концепцію та JSON як формат.
  • Основи REST та HTTP.

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

Кілька корисних статей:

Деякі Rails тематичні ресурси, які також раджу додати в закладки:

RSpec testing

Написання тестів є надзвичайно важливими для джуніорів, особливо якщо працювати в команді. Тести додадуть впевненості під час рефакторингу і відразу повідомлять, як тільки ти щось зламав. Раджу спробувати проганяти тести з певним інтервалом під час розробки нової фічі — таким чином ти будеш певен, що новий функціонал не поламав існуючого.

Корисні ресурси:

Постійне вдосконалення англійської мови

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

Практика, практика і ще раз практика

Тільки так можна якнайшвидше і найефективніше розвивати знання мови і фреймворка. Мабуть, найкращий спосіб — написати свій маленький тестовий проект (наприклад, дошка оголошень) і з часом придумувати і реалізовувати нові фічі. Також суперефективною буде наявність ментора — можливо, хтось з друзів або колег, хто має вищий технічний рівень, погодиться ставити вам задачі, робити code-review, практикувати парне програмування.

Дмитрий Семенов, Senior Ruby Developer в Dev-Pro

6 лет опыта

Если вы собираетесь стать разработчиком, который всегда под прицелом у самых крутых рекрутеров — придется постараться. В первую очередь убедитесь, что базовые понятия из Computer Science вам знакомы. Для этого можно просмотреть онлайн-курсы вроде лекций-бестселлеров CS50.tv от ребят из Гарварда.

Во-вторых, будьте готовы, что в коммерческой разработке навыки программирования не являются решающими на собеседовании. Если вы еще не признанный гений, вас будут оценивать по многим критериям, которые не относятся к написанию кода. Английский, умение уживаться с другими людьми (работа в команде), стрессоустойчивость, понимание, кем вы видите себя через 5 лет, — должны дополнять ваши безупречные навыки разработчика.

Если это все не проблема, можно уже и про Ruby поговорить. Многие новички пренебрегают изучением стандартной библиотеки Ruby и при первом же знакомстве пробуют использовать Ruby on Rails — я считаю это ошибкой. «Народ, не знающий своего прошлого, не имеет будущего». Так же и разработчики, которые не понимают, на что опирается их любимый фреймворк, не станут лучшими из лучших. Начинайте изучение языка с его истории и ценностей, пройдите туториал «Ruby in Twenty Minutes» и почувствуйте, поэкспериментируйте с возможностями языка, не используя лишних зависимостей.

Изучив синтаксис и базовые конструкции, можно разбираться с экосистемой и комьюнити, благо, у Ruby с этим проблем нет. Познакомьтесь с тем, как комьюнити договаривается писать красивый и стандартизированный код. По статистике скачивания гемов, можно посмотреть, какие задачи чаще всего решают ваши будущие коллеги и заодно узнать самые популярные расширения (некоторые из которых, конечно же, и являются кусочками Rails). Наконец откройте уже Rails Guides — отличные гайды посвятят в детали работы с RoR.

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

Систематизируйте свои знания. В этом очень помогают конференции и митапы: даже если темы давно вами освоены, услышав ту же информацию от другого человека в новом контексте, вы чему-то научитесь! Используйте чужой опыт, читая статьи. RubyFlow — хороший ресурс для отслеживания заметок, связанных с Ruby и RoR.

Для тренировки решайте задачи. Например, Codewars не просто дает задания для решения, но и возможность посмотреть, как его выполнили другие пользователи. Изучение этого материала откроет знакомый язык с новой стороны.

Не будьте RoR, будьте Ruby!

Дмитро Комісарик, Senior Software Engineer в EPAM Ukraine (Lviv)

6 років досвіду

Більшість Ruby-розробників, з якими я знайомий, починали з основ об’єктно-орієнтованої мови Ruby, хоча деякі відразу переходили до Ruby on Rails. Це потужний фрейморк, тому опишу декілька важливих навичок, які тобі стануть у нагоді саме у світі Rails:

Знання англійської мови обов’язкове. Ruby дуже швидко розвивається, а більшість сучасних книжок, блогів та відео, які допомагають «рубістам» — англомовні. Тому тобі доведеться багато спілкуватися та читати англійською, якщо хочеш і надалі розвиватися.

Розуміння синтаксису мови Ruby. Чим краще ти вивчиш синтаксис, тим швидше зможеш розуміти код більш досвідчених фахівців і набиратися досвіду від них. Також слід розуміти базові речі: цикли, класи, умовні вирази, модулі, блоки. Як розробник Ruby, ти будеш в основному використовувати об’єктно-орієнтоване програмуванням. Отже, потрібно знати деякі поняття OOP: інкапсуляція, поліморфізм, наслідування та абстракція. Щоб добре ознайомитись із Ruby-синтаксисом, пропоную почитати:

Занурення у Ruby on Rails framework. Повинно бути розуміння MVC концепції цього фреймворку. Також важливим є знання HTTP/HTTPS протоколів і розуміння REST. У сучасному світі існують мільйони проектів на Ruby on Rails лише з backend-розробкою, тому варто добре знати, що таке API та JSON.

Рекомендована література по Rails:

Без знання та розуміння баз даних (БД) складно стати хорошим рубістом. PostgreSQL / MySQL — дві найбільш поширені реляційні бази даних. Рекомендую розібратися у їхніх відмінностях та налаштувати їх на твоєму комп’ютері, а після цього вивчити основи SQL. Це дуже проста мова запитів, яку використовують для вибірки даних. Для початківців рекомендую книгу «SQL QuickStart Guide». Варто згадати ще й нереляційні бази даних NoSQL. У них є свої плюси, та їх потрібно розуміти, щоб знати, в яких ситуаціях використовувати.

Я уже згадував про backend розробку — «невидимий двигун» сторінки. Та є ще таке поняття, як front-end — це «красива сторона» аплікації, яка створюється за допомогою HTML, JavaScript, CSS. Відповідно, щоб вільно почувати себе у цьому напрямку, потрібно мати базові знання структури веб-сторінки HTML. Тоді ти будеш розуміти, як цю сторінку можна «зафарбувати», використовуючи CSS і як її зробити динамічною за допомогою JavaScript.

Постійне тестування. Для того щоб переконатись, що написаний тобою код працює і буде успішно працювати у майбутньому, то прямо в структурі проекту при кожній зміні пишуться додатково тести на Ruby. RSpec-тестування є дуже поширеним підходом для проектів, створених за допомогою Ruby on Rails. І початківцю обов’язково потрібно всю свою роботу тестувати. Тому що, покривши код тестами, ти забезпечуєш себе від проблем, які можуть виникнути у майбутньому з реальними користувачами. Дізнатися більше про тестування можна у таких джерелах:

Звичайно, у переліку необхідних інструментів для Ruby on Rails є GIT. Це система зберігання та керування файлами для спільної роботи в команді. Ти повинен знати і розуміти створення branch та базові команди («git pull», «git push»). Цікавий туторіал — try.github.

А далі йде — практика, практика і ще раз практика :) Ось відеокурси, де можна побачити код і практикуватись:

І ще одна дуже важлива рекомендація. Не лінуйся відвідувати курси чи тренінги, навіть якщо тобі здається, що ти вже все знаєш. Гарантовано, що на таких зустрічах ти зможеш почути щось нове та цікаве, а постійний обмін досвідом із досвідченими рубістами дасть тобі можливість розвиватися в правильному напрямку. Одне із найкрутіших Ruby-ком’юніті — це #pivorak. Вони проводять безкоштовні курси і дають хороше розуміння мови. Тому обов’язково приєднуйся до них!

Похожие статьи:
В официальном российском блоге компании Google появилось сообщение о том, что в ближайшие несколько недель в России заработает обновление...
20 сентября стартует курс тестирование ПО. Курс для тех, кто хочет освоить новую профессию с нуля и стать тестировщиком ПО. Наши...
Привіт, я Володимир, Java-розробник в Perfectial, Java Lead в LITS і ментор на Cursor Education. Готуючись до доповіді на JavaDay Lviv 2020, я розбирав...
Оператор мобильной связи и компания «Связной» и объявили об урегулировании всех спорных вопросов, связанных с...
Депутати розробили новий законопроєкт, який змінює процес бронювання співробітників, повідомляє видання Forbes, яке...
Яндекс.Метрика