У Ruby on Rails должна быть крутая кривая обучения, или это только у меня? [закрыто]

17

Я программист-самоучка. Я изучаю RoR с октября с различной интенсивностью (иногда весь день, иногда ничего в течение нескольких недель). До этого я знал только Java, но знал это довольно хорошо. Я слышал столько ажиотажа о RoR и о том, как он должен сделать вас счастливыми, продуктивными и т. Д. Пока что это только меня расстроило. Я узнал об этом из книги Agile, и я подозреваю, что часть трудностей может быть связана с тем, что я не знаю JavaScript и CSS, а имею лишь слабое понимание баз данных и HTML. Но, видимо, мне потребовалось гораздо больше времени, чтобы завершить проект в книге Agile, чем другим людям, и я до сих пор не помню о нем много. В Rails есть некоторые вещи, которые я просто не могу понять, например, когда использовать символы, а когда нет, или как вызывать динамические методы.

Недавно мне дали небольшое поручение Rails, где меня попросили внести небольшое изменение в интерфейс. Это заняло у меня около 25 часов, и хотя я немного продвинулся в понимании кода, я все еще не знаю, как поступить. Я даже не могу попросить переполнение стека, потому что я должен предоставить так много кода, чтобы дать контекст.

Таким образом, мой вопрос в заголовке: должен ли RoR учиться долго или я просто медленный? Может быть, я учился не по той книге? Мой стиль обучения таков, что я либо ничего не понимаю, либо понимаю все, если это имеет смысл.

Тутси Роллс
источник
1
Обучение всегда нарастает , вы понимаете немного больше каждый раз, когда вы чему-то учитесь. Решение проблем трудное и требует терпения (независимо от знания языка программирования), как только вы примете это, вам будет легче справиться с ними с умом.
Адитья П
Я думал, что это так, но, вероятно, потому, что в моем случае это очень условно. Очень часто используется для настройки многих вещей, которые он делает по соглашению.
Буровая установка

Ответы:

17

Из вашего вопроса очевидно, что вы пытаетесь изучать не только Rails, но в то же время вы должны понимать концепции веб-разработки, а также базы данных и SQL. Это огромная задача, поэтому, пожалуйста, будьте терпеливы.

С другой стороны, с Rails у вас нет выбора - вы должны изучить все три: M, V и C из MVC , все одновременно, но это было бы в случае с любой средой MVC, причем Rails был одним из самых простых , Я бы сказал.

Вместо этого вы можете начать с более простой среды, такой как Sinatra, пока не освоитесь с основными понятиями Ruby и HTTP, а затем постепенно продвигаться к более богатому представлению (представлениям и CSS) и моделям на основе баз данных.

Младен Ябланович
источник
10

Когда вы изучаете Rails, и ваш единственный опыт - Java, вы не просто изучаете новую веб-среду. Вы также изучаете новый язык программирования, который значительно отличается от Java.

Это может помочь вам сначала изучить Ruby, а затем взглянуть на Rails и его соглашения. Изучение того, что делает Rails и как это происходит, стало намного легче для меня, когда мне больше не нужно было разбираться в Ruby и я мог читать (и писать) код / ​​шаблоны Rails.

Я просмотрел учебник по Ruby on Rails и нашел его очень полезным. Обучающая книга является бесплатной и есть версия для Rails 2.3 и 3.0. Вам также может быть полезно ознакомиться с MVC (Model-View-Controller) и жизненным циклом веб-разработки / страницы в целом.

Адам Лир
источник
6

Анита, у меня был почти такой же опыт, как у тебя. но, думаю, теперь я понимаю, почему так трудно учиться

  • RoR - это не один язык, это обширная коллекция технологий, языков и методик.
  • Это не похоже на Java, C ++ или другие языки, которые имеют логическую структуру
  • Нет единого способа учиться и нет единой книги, которая вас научила бы (об этом позже)
  • На мой взгляд, сообщество, похоже, имеет несколько «самоуверенное» отношение, которое не так прощающе, как другие сообщества при обучении. Люди регулярно не соглашаются с тем, как все должно быть сделано. Это происходит сверху, от парня, который изобрел RoR
  • Настоятельно рекомендуется, чтобы тестирование было основной частью разработки на большинстве уроков RoR, и языки тестирования - это DSL, которые также могут добавить к уже высокой учебной нагрузке.
  • Нет соответствующей документации по языку, только API, некоторые руководства и любые книги, которые вы можете найти.
  • Некоторые основные методы и приемы являются «автоматическими», и неясно, как они работают. Например, методы has_secure_password.

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

  • Атакуйте его с нескольких сторон. Когда у вас есть несколько книг, учебных пособий и блогов для работы, это может «открыть» путь для изучения. Одна книга или блог сами по себе могут оставить вас "застрял".
  • Рассмотрим обучение некоторые HTML / CSS & Ruby. Не все, просто достаточно, чтобы обойтись, прежде чем заходить слишком далеко в RoR.
  • Пройдите курс по RSpec (или аналогичной методике тестирования). Codeschool on RSpec особенно хорош, и это поможет вам не застрять на уроке RoR, потому что вы не можете пройти тестирование.
  • Получите около 3 книг. Оби Фернандес «The Rails 3 Way» - обязательный элемент, используемый для справки, когда есть что-то, чего вы просто не получаете (не для чтения от корки до корки). Проворный, которого ты упомянул, просто смутил меня. «Learning Rails 3» рассматривает разные вещи и может помочь решить некоторые проблемы, которые вы не можете найти в других уроках.
  • Сделайте скринкаст или онлайн-курс обучения. Учебник Майкла Хартла хорош, но очень крутой. Я обнаружил, что вышеприведенные книги, а также курс Codeschool по RSpec, помогли мне пройти через это, но мне все же пришлось обратиться к автору по нескольким небольшим пунктам.
  • Спроси, спроси, спроси! Здесь есть Ruby Forum, Rails Forum, IRC комнаты, StackExchange и т. Д. - используйте их все, часто !

Пожалуйста, не сдавайтесь - вы умны, но, похоже, у вас стиль обучения похож на меня, а Rails очень сложно выучить, и его нигде не особенно хорошо обучают (полностью).

десять раз
источник
4

Возможно, проблема не в рубине (и не в рельсах), а в том, что у вас есть только «шаткое понимание» HTML / CSS / JavaScript, SQL и баз данных.

Rails - это фреймворк с полным стеком. Если ваш предыдущий опыт программирования был ядром Java с, возможно, некоторым Swing, то есть много концепций, которые нужно изучить одновременно.

Если бы я подходил к этой проблеме, я бы начал с приближения SQL и реляционного моделирования в первую очередь (с SQL нет проблем с разметкой браузера!). Если вы уверены в уровне базы данных, поиграйтесь с ActiveRecord и узнайте, как rails оборачивает кортежи из базы данных.

Следующим шагом будет изучение контроллеров и маршрутизации, а затем пользовательского интерфейса (html / javascript и т. Д.).

Если вы собираетесь заниматься любой веб-разработкой, используя практически любую веб-среду, вам нужно понимать SQL и реляционное моделирование (даже если вы затем выберете маршрут NoSQL позже).


источник
1

Я также пришел из Java, и мне было довольно трудно изучать Rails. У меня были все те же проблемы, которые вы упомянули. Я обнаружил, что просмотр Railscasts.com помог в начале. Просто видение того, как кто-то другой делал вещи, помогло мне понять, а потом я начал делать все самостоятельно. Я не прикасался к Rails с тех пор, как вышел Rails 3.

mbreedlove
источник
1

Твои слова «иногда целый день, иногда ничего на несколько недель» говорят мне все, что мне нужно знать. Если вы изучаете новый язык и фреймворк (я полагаю, это то, что вы делаете, потому что упоминаете «Ruby on Rails», а не просто «Ruby»), согласованность окупается. Я обнаружил, что единственный способ узнать и сохранить концепции - это учиться около получаса в день, обычно в конце дня, перед сном. Если я учусь больше получаса, я начинаю нервничать и теряю концентрацию. Если я учусь меньше, я не сохраняю то, чему научился.

Устранить отвлекающие факторы - это мой лучший совет. И учиться каждый день недели. Прежде чем вы это знаете, все станет на свои места.

Я не видел никаких последующих постов, поэтому мне интересно, как ты это сделал. Прошло 2 года, и это, безусловно, должно быть достаточно времени, чтобы научиться быть первоклассным веб-разработчиком!

user2583747
источник
0

Я опираюсь на Ruby и Rails уже около 8 месяцев. Я пришел с пониманием HTML, XML, SQL. Я все еще находил ту же проблему, что и вы, то, что работало для меня, работало над реальными проблемами, а не только с чтением и надеждой понять. Возможно, вам придется выполнить множество небольших тестов фрагментов кода или mvc, чтобы понять концепцию. Символы - это то, над чем я все еще работаю. Просто возьмите по одной проблеме за раз, и по мере их решения вы узнаете что-то необходимое для решения другой проблемы в вашем проекте.

Ответ: Нет, у него не должно быть крутой кривой обучения, эта кривая отличается в зависимости от вашего фона.

OpenCoderX
источник
0

Он может. Я знаю, что сталкиваюсь с «кривой обучения» каждый раз, когда пытаюсь по-настоящему сесть и сосредоточиться на изучении Rails (каждые несколько месяцев в течение более 2 лет). Проблема в том, что многие вещи в Rails меняются молниеносно, и часто ресурсы, которые вы находите, устаревают почти сразу.

Я советую сначала сосредоточиться на Ruby (по крайней мере, на основах), а затем на Rails, чтобы вы не полагались на инфраструктуру Rails на 100%, чтобы справиться со всем за вас. Вы также должны освежить в памяти HTML / CSS / Javascript по очевидным причинам. Также из опыта не попадайтесь в постоянный отток мира Rails: если вы можете игнорировать все новомодные вещи, которые проповедует Rails cognoscenti, такие как Haml, Sass, RSpec / BDD, Cucumber и т. Д., Или вы утонете в необходимости научиться писать BDD и RSpec для написания своего кода, изучать Haml и Sass (не сложно, но все же, это еще одна вещь, которую нужно выучить) для программирования внешнего интерфейса и т. д. Начните как можно проще.

Уэйн Молина
источник
0

Существует кривая обучения для любого языка программирования. На самом деле мы не учим язык обычным способом. Как и в C / C ++, но когда дело доходит до реальной картины, мы также должны знать гайки и минусы нескольких технологий.

Лучший способ приблизиться к этому - учиться на практике. Приложите все усилия, чтобы сделать это самостоятельно. Обычно мы читаем вещи, но когда дело доходит до реальной картины, мы застряли с этим. Я нативный программист C ++, я также могу писать на C #. Я знаю, что в этом языке и библиотеке есть много хорошего в абстрактной точке зрения, но многие темы я только что прочитал и пропустил. Так что, если вы спросите меня, я на самом деле инвалид.

Я изучаю рамки Django. Книга, которую я выбрал, очень проста и создает приложение для социальных закладок. Таким образом, это все равно, что изучать вещи с нуля до продвинутого уровня, реально работая над проектом. Я предлагаю вам подходить таким образом, поскольку все мы изучаем это самостоятельно.

Сарат
источник
0

Что касается RoR, особенно со вторым «R», так это то, что большинство обучающих уроков фокусируются на обучении вас стилю «код-обезьяна». Особенно Agile книга, она полна поверхностных «теперь мы просто делаем это, не беспокойтесь почему» шаги программирования. Плюс тот факт, что они постоянно меняют свою парадигму - то есть сначала они рекламировали RJS, а теперь внезапно речь идет о UJS.

Как некоторые люди здесь предложили, вы можете сначала изучить все тонкости самого языка Ruby, а затем перейти к фреймворку. Если вы все еще хотите изучить оба вместе, я нашел эту книгу под названием "Ruby for Rails" очень полезной.

Jas
источник