x
 
Николай Стебунов
4 июля 2019
Советы почтой каждую неделю
Пожалуйста, получите наше письмо, чтобы подтвердить свой адрес:
Вы подписаны на «Советы за неделю»:

Василий, здравствуйте.

Подскажите, есть ли смысл учить Ruby и Ruby on Rails в 2019 году? Цель — веб-разработка для проектов, похожих на сайт бюро, маркетплейсов вроде catery.ru и подобных.

Если нет, то какие альтернативы будут хорошими для начинающего?


Николай!

Это зави­сит от ваших целей и ситу­а­ции. Если все ваши дру­зья про­грам­ми­руют на Питоне, учите Джанго: будет кому ревью­ить ваш код, быст­рее осво­ите. Если в ком­па­нии вашей мечты исполь­зуют Node.js, учите Node.js и Express.js: будет проще устро­иться. Но если фак­то­ров, скло­ня­ю­щих вас в пользу дру­гих фрейм­вор­ков, нет, я сове­тую начи­нать с Руби‑на‑рель­сах. И у меня на это пять причин.

Рельсы научат базовым вещам

У Руби‑на‑рель­сах отлич­ная офи­ци­аль­ная доку­мен­та­ция, кото­рая за руку про­во­дит по основ­ным ком­по­нен­там фрейм­ворка. Разо­брав­шись с нею, вы полу­чите базо­вые зна­ния об устрой­стве веб‑фрейм­вор­ков: как устроен роутинг, как рабо­тает веб, зачем фрейм­ворку база дан­ных и как менять её устрой­ство, как исполь­зо­вать шаб­лоны, как интер­на­ци­о­на­ли­зи­ро­вать и лока­ли­зо­вы­вать при­ло­же­ния. Если при­дётся сме­нить фрейм­ворк, зна­ния при­го­дятся: и в Рель­сах, и в Джанго роутинг — та же функ­ция для сопо­став­ле­ния запроса и кода, кото­рый его дол­жен обработать.

Кроме того, из базо­вой доку­мен­та­ции вы полу­чите зна­ния о смеж­ных с веб‑раз­ра­бот­кой обла­стях: о тести­ро­ва­нии, отладке и без­опас­но­сти. Научи­тесь пра­вильно и без­опасно кон­фи­гу­ри­ро­вать при­ло­же­ния, отправ­лять и при­ни­мать почту, загру­жать и хра­нить файлы в облач­ные хранилища.

Рельсы научат писать хороший код

В Руби и Рель­сах есть всё, чтобы научиться писать акку­рат­ный, под­дер­жи­ва­е­мый и после­до­ва­тель­ный код. Нач­ните со стайлгайдов:

Чтобы научиться опре­де­лять, какой код плох, почему и как это исправ­лять, изу­чите Ruby Science и POODR:

Пра­вила, прин­ципы и методы, опи­сан­ные в этих кни­гах, фун­да­мен­тальны. Раз­бе­рё­тесь с ними в Руби и Рель­сах, будете при­ме­нять и в дру­гих язы­ках программирования.

В Рельсах всё есть

Гем — архив с библиотекой, набором функций, из которых, как из кирпичиков, можно сложить то, что нужно

В Рель­сах есть всё, что нужно, чтобы быстро собрать и запу­стить любое веб‑при­ло­же­ние: ОРМ, мигра­ции, кеши­ро­ва­ние, отправка и полу­че­ние почты, веб­со­кеты, интер­на­ци­о­на­ли­за­ция, отло­жен­ные задачи, АПИ для работы с облач­ными хра­ни­ли­щами. Если чего‑то нет, для этого есть гемы: нужна аутен­ти­фи­ка­ция через почту и соц­сети с вос­ста­нов­ле­нием пароля, берите Devise; нужен деп­лой и откат вер­сий одной кноп­кой, берите Capistrano; нужна админка, берите ActiveAdmin.

Гем — архив с библиотекой, набором функций, из которых, как из кирпичиков, можно сложить то, что нужно

Какую бы задачу вы не выбрали для пер­вого про­екта на Рель­сах, вы быстро полу­чите рабо­та­ю­щий про­то­тип. Будет, что пока­зать на собеседовании.

Современный фронтенд

См. Webpacker

Рельсы дру­жат с совре­мен­ной эко­си­сте­мой фрон­тенда и под­дер­жи­вают все мод­ные фрейм­ворки. Если решите заодно попро­бо­вать и фрон­тенд, берите React, Vue или Svelte — всё отлично рабо­тает в Рель­сах. Не при­дётся дер­жать фрон­тенд и бэкенд отдельно. А если решите пере­пи­сать бэкенд на Го, без про­блем извле­чёте фрон­тенд из проекта.

См. Webpacker

Программистское счастье

Это самая субъ­ек­тив­ная при­чина начи­нать про­грам­ми­ро­вать на Руби и Рельсах.

Я верю, что про­грам­ми­ро­ва­ние ближе к лите­ра­туре и редак­туре, чем к точ­ным нау­кам. Чем лако­нич­нее и понят­нее код, чем он ближе к есте­ствен­ному, а не фор­маль­ному языку, тем легче и при­ят­нее с ним рабо­тать: люди пишут код для людей.

Руби очень лако­нич­ный и выра­зи­тель­ный язык. Ясно выра­жать на нём соб­ствен­ные мысли мне проще, чем на дру­гих язы­ках про­грам­ми­ро­ва­ния. Напри­мер, чтобы выве­сти на экран 5 раз «Ура» в Явас­крипте при­дётся исполь­зо­вать цикл for или forEach:

for (var i = 0; i < 5; i++) {
  console.log('Ура')
}
​
[1, 2, 3, 4, 5].forEach(() => console.log('Ура'))

А в Руби — напи­сать, как думаю, 5 times print «Ура»:

5.times { print "Ура" }

Когда я начи­нал изу­чать Руби и Рельсы, они настолько понра­ви­лись мне, что я, как в дет­стве, не мог дождаться утра, чтобы поско­рее запро­грам­ми­ро­вать на Рель­сах что‑нибудь ещё. И до сих пор, про­сы­па­ясь по утрам, я счаст­лив, что сегодня попро­грам­ми­рую на Руби.

Наде­юсь, и вас Руби и Рельсы сде­лают счастливым.

P. S. Это был совет о веб‑разработке. Хотите знать всё о коде, тестах, фронтенд‑разработке, цеэсэсе, яваскрипте, рельсах и джейде? Присылайте вопросы.
Вёрстка и прототипирование — дисциплина Школы дизайнеров. Набор закрыт. Опоздавшим: оставьте нам почту, и мы напишем вам, пока есть свободные места.
 

Поделиться
Отправить

Комментарии

Дмитрий Марков
4 июля 2019

JavaScript тоже продвинулся в лаконичности: 'Ура'.repeat(5)


4 июля 2019

Мне не очень нравится тема про итератор times.

Во-первых, ничто не мешает писать такие штуки самому, если нужно:
Number.prototype.times = function() ...
Думаю, у типичного матёрого разработчика полно такого синтаксического сахара.

Во-вторых, тут непонятно, что мерить. Цикл на ассемблере тоже лаконичен:
MOV CL, 5
L1:
DEC CL
JNZ L1
Вот только ни фига не понятно. Когда видишь for, foreach или while, то сразу понимаешь, что сейчас будет цикл. А когда видишь 5.times, то это тот же MOV CL, 5, потому что не сразу врубаешься, что это вообще значит. Даже если интуитивно понятно, то полезешь в доку уточнить.

Я очень люблю синтаксический сахар, но он помогает быстрее писать код, а не понимать программирование. Не думаю, что задача разработчика — писать много кода. Наоборот, меньше кода — лучше. И дело тут не в количестве инструкций и символах, а в количестве программируемой логики.

Андрей Никифоров
17 июля 2019

Рельсы учить стоит. Легко войти, много работы, большое сообщество разработчиков.

Говоря о программистском счастье, для меня было счастьем открыть для себя Эликсир и Феникс. Для меня это как следующая ступень развития Руби и Рельс: всё очень знакомо, но лучше реализовано архитектурно.

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


Цель рубрики — обсуждение вопросов дизайна всех видов, текста в дизайне и взаимоотношений дизайнеров с клиентами.

Мы публикуем комментарии, которые добавляют к уже сказанному новые мысли и хорошие примеры. Мы ожидаем, что такие комментарии составят около 20% от общего числа.

Решение о публикации принимается один раз; мы не имеем возможности комментировать или пересматривать свое решение, хотя оно может быть ошибочно. Уже опубликованные комментарии могут быть удалены через некоторое время, если без них обсуждение не становится менее ценным или интересным.

Вот такой веб 2.0.

Как отслеживать и обрабатывать чит-коды 1 Существует ли способ проверить компетентность веб-разработчика, если сам ничего не понимаешь в этом? ЦСС-переменные: как использовать и для чего могут пригодиться 2 Принцип «не протыкал — не сделал» 4




Недавно всплыло

2 2 Хочу научиться сторителлингу 11 2