Поради сеньйорів: як прокачати знання 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» є, безумовно, якісними творами, але, читаючи їх, людина змушена наслідувати приклади з книги, замість написання і осмислення коду самостійно. Тому якщо ти недавно почав вивчати програмування, то пачка книг тільки сповільнить прогрес. Краще опиратися на документацію і постійно практикуватися.
Language Ruby
Спершу потрібно мати чітке розуміння мови програмування, оскільки це дозволить правильно використовувати фантастичні можливості 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.
Дотримання певних правил стосовно колбеків, скоупів, сервісів — це більш конкретні поради, але засвоївши їх з самого початку, ти значно полегшиш життя у майбутньому собі і своїм колегам.
Кілька корисних статей:
- 5 Simple Important Tips for Ruby on Rails
- How To Get Started With Ruby
- What advice/rules I may give to junior developers about the Ruby on Rails app design?
Деякі Rails тематичні ресурси, які також раджу додати в закладки:
- weblog.rubyonrails.org — офіційний блог Rails-команди
- Engine Yard — тематичний блог
- This week in Rails — Rails-аналог вищезгаданої щотижневої розсилки новин
- Drifting Ruby
- RailsZilla
RSpec testing
Написання тестів є надзвичайно важливими для джуніорів, особливо якщо працювати в команді. Тести додадуть впевненості під час рефакторінгу і відразу повідомлять, як тільки ти щось зламав. Раджу спробувати проганяти тести з певним інтервалом під час розробки нової фічі — таким чином ти будеш співак, що новий функціонал не поламав існуючого.
Корисні ресурси:
- RSpec
- Better Specs
- Tutorials Point
- How to setup a Rails app for Test-Driven - and Behavior-Driven Development with Rspec and Capybara
Постійне вдосконалення англійської мови
Програмісти, незалежно від їх технічного рівня, постійно контактують із замовниками і повинні вміти пояснити або аргументувати певне рішення.
Практика, практика і ще раз практика
Тільки так можна якнайшвидше і найефективніше розвивати знання мови і фреймворку. Мабуть, найкращий спосіб — написати свій маленький тестовий проект (наприклад, дошка оголошень) і з годиною придумувати і реалізовувати нові фічі. Також суперефективною буде наявність ментора — можливо, хтось з друзів або колег, хто має вищий технічний рівень, погодиться ставити вам задачі, робити code review, практикувати хлопця програмування.
Дмитро Семенов , Senior Ruby Розробників в 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-синтаксисом, пропоную почитати:
- Jay McGavren «Head First Ruby: A Brain-Friendly Guide» 1st Edition
- Peter Cooper «Beginning From Novice to Professional» 2nd Edition
Занурення у Ruby on Rails framework. Повинно бути розуміння MVC концепції цього фреймворку. Також важливим є знання HTTP/HTTPS протоколів і розуміння REST. У сучасному світі існують мільйони проектів на Ruby on Rails лише з backend-розробкою, тому варто добре знати, що таке API та JSON.
Рекомендована література за Rails:
- Michael Hartl «Ruby on Rails Tutorial (Rails 5)» ;
- Glenn Goodrich «Rails: Novice to Ninja: Build Your Own Ruby on Rails Website» ;
- Leonard Richardson «RESTful Web APIs: Services for a Changing World» .
Без знання та розуміння баз даних (БД) складно стати хорошим рубістом.PostgreSQL/MySQL — дві найбільш поширені реляційні бази даних. Рекомендую розібратися у їхніх відмінностях та налаштувати їх на твоєму комп'ютерній комп'ютері, а після цього вивчити основи SQL. Це дуже проста мова запитів, яку використовують для вибірки даних. Для початківців рекомендую книгу «SQL QuickStart Guide» . Варто згадати ще й нереляційні бази даних NoSQL. У них є свої плюси, та їх потрібно розуміти, щоб знаті, в яких ситуаціях використовувати.
Я вже згадував про backend розробка — «невидимий двигун» сторінки. Та є ще таке поняття, як front-end — це «гарна сторона» аплікації, яка створюється за допомогою HTML, JavaScript, CSS. Відповідно, щоб вільно почувати себе у цьому напрямку, потрібно мати базові знання структури веб-сторінки HTML.Тоді ти будеш розуміти, як цю сторінку можна «зафарбувати», використовуючи CSS і як її зробити динамічною за допомогою JavaScript.
Постійне тестування. Для того щоб переконатись, що написаний тобою код працює і буде успішно працювати у майбутньому, то прямо в структурі проекту при кожній зміні пишуться додатково тести на Ruby. RSpec-тестування є дуже поширеним підходом для проектів, створених за допомогою Ruby on Rails. І початківцю обов'язково потрібно всю свою роботу тестувати. Тому що, покривши код тестами, ти забезпечуєш себе від проблем, які можуть виникнути у майбутньому з реальними користувачами. Дізнатися більше про тестування можна у таких джерелах:
- Introduction to Testing — RSpec Language ;
- про Rspec також згадується у туторіалі Michael Hartl ;
- «Everyday Rails Testing with RSpec» — книга про основи.
Звичайно, у переліку необхідних інструментів для Ruby on Rails є GIT.Це система зберігання та керування файлами для спільної роботи в команді. Ти винен знаті і розуміти створення branch та базові команди («git pull», «git push»). Цікавий туторіал — try.github .
А далі йде — практика, практика і ще раз практика:) Вісь відеокурси, де можна побачити код і практикуватись:
І ще одна дуже важлива рекомендація. Не лінуйся відвідувати курси чи тренінги, навіть якщо тобі здається, що ти вже все знаєш. Гарантовано, що на таких зустрічах ти зможеш почути щось нове та цікаве, а постійний обмін досвідом із досвідченими рубістами дасть тобі можливість розвиватися в правильному напрямку. Одне із найкрутіших Ruby-ком'юніті — цє #pivorak . Вони проводять безкоштовні курси і дають хороше розуміння мови. Тому обов'язково приєднуйся до них!
Опубліковано: 19/04/18 @ 07:00
Розділ Блоги
Рекомендуємо:
Мій звіт про конференції Страйк 2018 в Ульяновську
DOU Hobby: Історичний бій — видовищні змагання у середньовічних обладунках
Дослідник нейромереж — про півсотлітню історію штучного інтелекту, свідомість АІ та розвиток людства
Android дайджест #30: Android P, Flutter, RxJava
Готові рішення для QA: як писати автотесты на Groovy