article-spots
article-carousel-spots
programs
Технології

Японський стиль програмування: погляд на Ruby-розробку зсередини

14 черв 2020

Сьогодні ми хотіли б поговорити більше про Ruby, що це за мова та чи варта вона вашого часу. Нашим провідником у світ Ruby-розробки став Senior Software Engineer ЕРАМ, Олександр Шагов. В статті ми розкриємо плюси і мінуси цієї мови програмування, розвіємо міфи та підкажемо, де навчатися на Ruby-розробника і як отримати перший досвід роботи.


Ruby — лаконічна мова програмування, яка була створена в середині 90-х в Японії. Часто Ruby називають японським стилем програмування. Країна жодним чином не вплинула на стиль самої мови. Якщо почитати історію Ruby, то серед її пращурів можна побачити такі мови, як Smalltalk і Lisp. Ruby успадкувала всю модель цих мов в певному вигляді, проте з Японією це ніяк не пов’язано. Програмування взагалі не має відмінностей за національною ознакою.

Чим Ruby відрізняється від інших мов програмування? Виразністю. Навіть людина, яка в житті не програмувала, може прочитати гарний код на Ruby як англійський текст та інтуїтивно здогадатися, про що йде мова.

Чи варто обирати Ruby як першу мову програмування?

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

З якої мови почати, щоб потім було легше вивчати Ruby?

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

Чому ти свого часу обрав Ruby?

Я ще в університеті познайомився з хлопцями, які зацікавилися цією мовою програмування, і пішов за ними. Це був цілковито неусвідомлений вибір. І ось я прийшов на курс БДУІРу, а мені там стали розповідати речі, які я не те що не знав, а ніколи не чув. І моя перша рекція була «Що це взагалі таке?» Було забагато незрозумілого, хоча я мав певний бекграунд: знав цикли, змінні і т.д. В цілому, я не зрозумів абсолютно нічого і не зміг закінчити курс. Пішов і став самостійно читати історію мови, заглиблюватися. Через деякий час почав розуміти більше. Але питання все одно збиралися в голові: у нас є деяка конструкція, чому вона така, звідки це прийшло. Почав сам розкручувати клубок і доходити істини. Але було складно, чесно. Тому я звернувся по допомогу до Ruby-ком’юніті. Рік готувався, читав, шукав відповіді на свої питання, повернувся на курс і закінчив його. Прийшов до того, що маю зараз, навпевне, саме завдяки питанням «як», «навіщо», «чому» і «звідки це взялося».

Що пишуть на Ruby?

Якщо людина набере в пошуку Google слово Ruby, то щвидше за все вона наштовхнеться на статті про Ruby on Rails. Це фреймворк, який написаний на Ruby. Цю мову в 80% випадків використовують для створення веб-додатків. Але є ще саме ті 20%, які займають інструменти для автоматизаціїї серверів, пакетний менеджер OS X і незначна кількість додатків. Наприклад, GitHub, Ask.fm, SoundCloud і Bloomberg використовують Ruby on Rails. Якщо зобразити дерево, то на верхівці будуть розташовані веб-додатки, скрипти для автоматизації, потім парсинг сайтів (скрапінг), а після цього — різноманітні системні утіліти.

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

Наскільки Ruby популярний на ринку?

Мені складно відповісти на це питання. Я б не порівнював Ruby з фундаментальними мовами, як Java або C#. Там зовсім іншого розміру ком’юніті, Ruby в цьому плані менша. Проекти Enterprise-рівня на Ruby не роблять. Найчастіше її використовують в стартапах, які на певному етапі виросли і стали просто великим проектами.

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

За що ти любиш Ruby?

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

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

З якою освітою буде легше опанувати Ruby?

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

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

Чи можна навчатися на Ruby-розробника самостійно?

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

Не бійтеся бути самоуком. Зі свого досвіду скажу, що на співбесіді ніхто не дивиться на сертифікати про закінчення курсів. Як сказав один мій колега: «Обличчя розробника — це його GitHub. Якщо кандидат хоче потрапити до нас і надсилає нам не просто резюме, а ще й GitHub-профіль, де видно його активність, його стиль — це добрий знак».

Де отримати перший досвід роботи?

Зараз на ринку потреба у кандидатах з досвідом. Знайти гарного досвідченого Ruby-розробника складно, тому що часто Senior в резюме не означає Senior на ділі. Якщо ви новачок в професії, і вам потрібен досвід, пропоную такий варіант. Будь-який проект заснований на певних залежностях, бібліотеках. Вони, як правило, з відкритим кодом. Рекомендую вам відкривати репозиторії бібліотек, намагатися зрозуміти, як вони працюють і вдосконалювати їх. Таким чином у вас з’явиться досвід розробки, по суті, реального проекту. І рядок open source contribution experience в резюме матиме більший вплив, ніж будь-які курси. Тому що людина проявила ініціативу, самостійно розібралася в тому, як бібліотека працює (отже і з проектом розбереться), внесла зміни (отже вміє аналізувати і знаходити недоліки), зміни підтвердили інші розробники цієї бібліотеки (отже працювали в команді), дуже ймовірно, що це були інженери з інших країн (отже має непогану розмовну англійську), цими змінами тепер користуються по всьому світі. Ось це справжній досвід, живий і безкоштовний. Просто потрібно трохи часу на те, яку бібліотеку обрати, що змінити і як. Але результат буде.

 Поради розробникам-початківцям на Ruby:

  • Читайте історію індустрії, вашого напрямку та мови. Гарний розробник знає не лише як користуватися тим чи іншим інструментом, але й чому він з’явився, які завдання вирішує, і чому виникла необхідність ці завдання вирішувати.
  • Спілкуйтеся з іншими розробниками. Комунікація — це найбільш активний процес навчання. Знайдіть цікаву спільноту, ставте питання, діліться досвідом і вчіться один в одного.
  • Розвивайтесь і накопичуйте контакти. Відвідуйте Ruby-мітапи та конференції. Тут завжди можна знайти людей з палаючими очима, завести знайомства, зарядитися енергією, отримати корисні знання і дозу мотивації.