Ruby для початківців: чим цікавий цей мову і як його ефективно вивчати

Мене звуть Іван Бондаренко, я Senior Software Engineer і Ruby Technical Lead в CHI Software. Досвід розробки — 6 років, з них останні 5 — я працюю з Ruby. До цього я програмував 1 рік на PHP. Маючи за плечима досвід викладання (я вів курси з Ruby в Spalah), я вирішив максимально доступно розповісти про мову програмування, поділитися досвідом з початківцями і, можливо, зацікавити кого-то з них Ruby.

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

Основні особливості та відмінності Ruby

Часто чую запитання: чи варто вчити Ruby? Як правило, питання заснований на сумніви: наскільки легко знайти роботу з даною спеціалізацією, будуть цікаві проекти і так далі і тому подібне. Ruby — сучасний, постійно розвивається мова програмування, областей застосування йому — маса. Напевно ви чули про Chef, Vagrant, Homebrew, але найчастіше всі ми чуємо про Rails. Ось пост з коментарем самого автора фреймворку про те, чому варто вчити Rails.

Звичайно, кожен сам для себе вирішує, який інструмент йому використовувати. І немає сенсу нескінченно довго сперечатися про те, чому одна технологія краще іншого. Я вибрав Ruby, тому що це неймовірно виразний і гнучкий мову, який дозволяє одну і ту ж задачу вирішити багатьма способами.

Ruby — інтерпретується в microsoft, повністю об'єктно-орієнтована мова програмування з чіткою динамічною типізацією. Він поєднує в собі Perl-подібний синтаксис з об'єктно-орієнтованим підходом. Також деякі риси запозичені з мов програмування Python, Lisp, Dylan і CLU. Платформна реалізація інтерпретатора мови Ruby поширюється на умовах відкритого програмного забезпечення. Код, написаний на Ruby, може бути зрозумілий навіть людині, яка не розбирається в програмуванні. На RoR були створені такі проекти, як Redmine, Twitter, Shopify, Basecamp, GitHub, Kickstarter, Airbnb та інші.

З ростом Node.js популярність Ruby on Rails дещо зменшилася, але технологічні стартапи часто використовують RoR завдяки простоті прототипування. Ruby — 11-й найпопулярніший мова в індексі TIOBE .

Переваги Ruby

А тепер поговоримо про деякі переваги Ruby більш докладно.

Швидкість розробки

Одним з плюсів фреймворку Ruby і RoR вважається швидкість розробки. Особистий досвід і досвід колег показує, що вирішення завдань на Rails відбувається в півтора рази швидше в порівнянні з іншими фреймворками подібного плану. Ruby дуже простий як інструмент, а також існує величезна кількість готових рішень для різного роду завдань.

Штатні засоби кешування даних

При розробці масштабного проекту одним з найважливіших моментів є кешування. Ruby on Rails в основній комплектації має штатні засоби кешування даних. Тобто у вас буде одразу в наявності інструменти для кешування даних на проекті, і ви можете легко кешувати окремі блоки коду або навіть цілі сторінки.

Спочатку тести, потім-код

Часто в процесі розробки великих проектів виникає питання про тестування, і не рідкість, коли немає додаткових коштів на окрему команду тестувальників. У Rails є рішення і цієї проблеми. Якщо порівнювати RoR з іншими фреймворками в контексті тестування програми, то ви знайдете масу готових рішень для будь-якого виду тестів, будь то інтеграційні або юніт. Всі ці бібліотеки працюють «з коробки». В ідеалі в проекті на Ruby on Rails код не пишеться до тих пір, поки під нього не написані тести. RoR ідеологія передбачає початкове використання методів BDD (Behavior Driven Development) або TDD (Test Driven Development).

Загальноприйняті стандарти процесу розробки у Ruby-розробників

Говорячи про переваги Ruby, я не можу знову не згадати співтовариство кубістів. Воно постійно росте, розвивається і завжди готовий прийти на допомогу. Завжди є хтось, хто підкаже, як краще вирішити проблему, поділиться досвідом в якому-небудь питанні.

Також дуже важливий момент — у Ruby-співтоваристві вже багато років є стандарти процесу розробки, якісь правила/угоди співтовариства, за якими ведеться розробка, що дуже сильно спрощує роботу. За рахунок цих стандартів кожен проект дуже структурується, відповідно, новий розробник в команді швидко увійде в курс справи і вже з перших днів роботи зможе бути корисний. І навіть більше: якщо проект починала одна команда, а закінчує інша — це теж зовсім не проблема. Оскільки розробка ведеться за вже згаданим правилами і угодами спільноти, нова команда швидко і без труднощів вникне в проект та успішно його закінчить без особливих втрат часу.

Також в Ruby on rails є велика кількість найрізноманітніших готових рішень у відкритому доступі. Більшість рішень вже були реалізовані ким-то до вас, а також протестовані спільнотою, що зменшує необхідність розробки з нуля. Це можуть бути системи аутентифікації, авторизації, коментування, системи платежів, поштові розсилки і так далі.

Готові рішення для багатомовності проекту

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

Високий рівень захисту даних

Зараз нерідко в мережі публікуються статті про зломи різних ресурсів. Розробники фреймворку Ruby on Rails дуже серйозно поставилися до проблеми захисту даних. У RoR споконвічно присутня шифрування паролів, даних кредитних карт і інших особистих даних користувача, також виключені SQL ін'єкції і XSS атаки. Всі вхідні параметри екрануються за замовчуванням.

Вивчення Ruby

А тепер поговоримо, як саме можна освоїти Ruby.

Теорія

Почати варто, звичайно ж, з літератури. Я рекомендую ці джерела:

Далі я рекомендую вивчити хоча б базові поняття SQL, тому що СУБД хоч і відрізняються між собою, але найчастіше використовують один і той же мову.

Ось парочка ресурсів, з яких можна почати:

Англійська

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

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

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

Практика

Після вивчення декількох ресурсів варто перейти до більш важливої частини, а саме до практики. Прикладів завдань з інтернет-магазином або простим блогом в мережі маса (ось один з них ), особливо якщо говорити про Rails. В ході виконання завдань, вже трохи наближених до реальних, ви зіткнетеся з якимись проблемами і тоді перейдете до тренування одного з головних якостей — це вміння гуглити. На жаль, мені не вдалося знайти якийсь туторіал або курси, присвячені цьому навику, але він виразно грає дуже важливу роль в повсякденній роботі.

Курси

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

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

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

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

На період курсу у вас буде ментор , який буде робити рев'ю вирішення ваших завдань і вказувати на слабкі місця і помилки.

Зворотній зв'язок . На уроці ви можете задати питання викладачеві або однокурсникам або просто поділитися досвідом. Звичайно, те ж саме можна зробити і на конференції або митапе, але на відміну від відвідування конференцій, на курсах у вас буде можливість робити це частіше (зазвичай курси проводяться 2-3 рази в тиждень).

Мотивація . Це в першу чергу для тих, кому потрібна допомога з самодисципліною. Часом досить важко змусити себе щось робити, які б перспективи не бовваніли на обрії. При відвідуванні курсів у вас буде чіткий графік, яким потрібно слідувати, і завдання, які потрібно виконувати, інакше вас виключать. Фінансова мотивація також грає тут роль, платних курсів. Адже коли віддаєш свої кровні, то вже зовсім по-іншому ставишся до справи, і думки просто прогуляти виникають набагато рідше.

Ще одна перевага — сертифікат . Ясна річ, що в результаті вас будуть оцінювати за знаннями, а не за наявністю папірців в резюме. Але тим не менше це буде плюсом, особливо, якщо буде кандидат з схожим рівнем знань, але без їх документального підтвердження.

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

І найголовніше — працевлаштування . Говорячи про курсах, я не маю на увазі тільки ті, за які треба платити гроші. Часто компанії самі проводять набір на навчання, щоб потім кращих взяти до себе на роботу. Це можуть бути внутрішні курси або стажування/інтернатура. Такий варіант — найкращий, так як вам не потрібно ні за що платити, ви отримуєте досвід і всі вище перераховані плюси і до того ж — реальну перспективу працевлаштування. Потрапити на них складніше, але перспективи значущішим.

Разом

Ruby — це мова, яка дозволяє працювати без великої кількості незручностей і церемоній, які приходять зі суворо типізований мовами. З Ruby легко почати працювати, особливо якщо у вас вже є досвід розробки на інших мовах програмування, ви зможете швидко створювати прототипи з Ruby on Rails. В Японії, звідки він з'явився, Ruby використовувався для створення ігор. Ruby лаконічний і читається як англійська, що робить код зрозумілим для новачків.

Що стосується вивчення Ruby, хочу ще раз повторити: треба почати з малого. Прочитайте кілька книг, зробіть самостійно декілька завдань, а потім, якщо відчуваєте необхідність отримати більше знань і досвіду або додаткову мотивацію — можна йти на курси, вже маючи певний багаж знань, отриманих самостійно.

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

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

Удачі у вивченні! А в наступній статті ми поговоримо про коді.


Підписуйтесь на наш Telegram-канал для джуніорів , щоб не пропустити цікаві вакансії, стажування, курси, статті.

Опубліковано: 15/01/18 @ 11:00
Розділ Блоги

Рекомендуємо:

Information Security дайджест #7: наскільки ви довіряєте вендорам?
QA дайджест #32: ТОП 10 інструментів автоматизації тестування 2018, антипаттерны в тестах і навантажувальне тестування
Test Lead Катерина Несмелова — про Full Advanced Level ISTQB, проблеми професії QA та релокацію до Нової Зеландії
Гід ІТ-спеціальностями КНУ імені Шевченка
Вникайте в процеси, або Що не так з sales в IT