O Ruby on Rails deveria ter uma curva de aprendizado acentuada ou sou apenas eu? [fechadas]


17

Sou um programador autodidata. Eu aprendo RoR desde outubro com intensidade variável (às vezes o dia todo, às vezes nada por várias semanas). Antes disso, eu conhecia apenas Java, mas sabia muito bem. Eu ouvi muito hype sobre RoR e como ele deve fazer você feliz, produtivo etc. Até agora, isso só me deixou frustrado. Aprendi com o livro Agile e suspeito que parte da dificuldade possa ter a ver com o fato de eu não conhecer JavaScript e CSS e ter apenas uma compreensão instável de bancos de dados e HTML. Mas, aparentemente, demorei muito mais para concluir o projeto no livro Agile do que outras pessoas, e ainda não me lembro de muito. Há algumas coisas sobre o Rails que eu simplesmente não consigo entender, por exemplo, quando usar símbolos e quando NÃO usar, ou como os métodos dinâmicos são chamados.

Recentemente, recebi uma pequena atribuição do Rails, na qual me pediram para fazer uma pequena alteração na interface. Demorei cerca de 25 horas e, apesar de ter feito alguns progressos no entendimento do código, ainda não faço ideia de como proceder. Não posso nem perguntar ao Stack Overflow porque há muito código que precisarei fornecer para fornecer contexto.

Portanto, minha pergunta está no título: o RoR deve levar muito tempo para aprender ou estou lento? Será que aprendi com o livro errado? Meu estilo de aprendizado é tal que eu não entendo nada ou entendo tudo, se isso faz sentido.


1
A aprendizagem é sempre incremental , você entende um pouco mais cada vez que aprende algo. A solução de problemas é difícil e requer paciência (independentemente da experiência em linguagem de programação), quanto mais cedo você aceitar, mais fácil será enfrentá-los com uma mente fria.
Aditya P

Eu pensei que sim, mas é provavelmente porque é muito orientado a convenções no meu caso. Muito acostumado a configurar muitas das coisas que faz como convenção.
Rig

Respostas:


17

Com a sua pergunta, é óbvio que não é apenas o Rails que você está tentando aprender, mas, ao mesmo tempo, você precisa entender os conceitos de desenvolvimento da Web, além de bancos de dados e SQL. É uma tarefa enorme, por favor, seja paciente.

Por outro lado, com o Rails, você não tem escolha - você precisa aprender todos os três: M, V e C do MVC , tudo ao mesmo tempo, mas esse seria o caso de qualquer estrutura MVC existente, sendo o Rails um dos mais fáceis. , Eu diria.

Em vez disso, o que você poderia fazer é começar com uma estrutura mais simples, como o Sinatra, até se familiarizar com os conceitos básicos de Ruby e HTTP, e depois avançar lentamente para uma apresentação mais rica (visualizações e CSS) e modelos baseados em banco de dados.


10

Quando você está aprendendo Rails e seu único background é Java, não está apenas aprendendo uma nova estrutura da Web. Você também está aprendendo uma nova linguagem de programação e uma que é significativamente diferente do Java.

Pode ajudar você a aprender Ruby primeiro e depois examinar o Rails e suas convenções. Aprender o que o Rails faz e como ele foi muito mais fácil para mim, uma vez que eu não precisava mais entender o Ruby e podia ler (e escrever) códigos / modelos do Rails.

Eu passei pelo Tutorial do Ruby on Rails e achei muito útil. O livro do tutorial é gratuito e existe uma versão para o Rails 2.3 e 3.0. Você também pode achar útil ler sobre o MVC (Model-View-Controller) e o ciclo de vida da página / desenvolvimento da web em geral.


6

Anita, tive quase a mesma experiência que você. mas acho que agora entendo por que é tão difícil aprender:

  • O RoR não é um idioma, é um amplo conjunto de tecnologias, idiomas e técnicas.
  • Não é como Java, C ++ ou outras linguagens que possuem uma estrutura lógica
  • Não há uma maneira de aprender e nenhum livro que possa ensiná-lo (mais sobre isso mais tarde)
  • Na minha opinião, a comunidade parece ter uma atitude um tanto "opinativa", que não é tão perdoadora quanto outras comunidades ao aprender. As pessoas discordam regularmente de como as coisas "deveriam" ser feitas. Isso vem do topo, do cara que inventou o RoR
  • O teste é fortemente incentivado a ser uma parte essencial do desenvolvimento na maioria das lições de RoR, e as linguagens de teste são DSLs que também podem aumentar a carga de aprendizado já alta.
  • Não há documentação adequada para o idioma, apenas uma API, alguns guias e quaisquer livros que você possa encontrar.
  • Alguns métodos e técnicas fundamentais são "auto-mágicos" e não está claro como eles funcionam. Por exemplo, os métodos has_secure_password.

Estou aprendendo há mais de um ano e aqui estão algumas coisas que acho que facilitam o aprendizado, das quais aprendi por experiência própria:

  • Ataque de vários ângulos. Quando você tem vários livros, tutoriais e blogs para trabalhar, isso pode "abrir" uma maneira de você aprender. Um único livro ou blog por si só pode deixá-lo "preso".
  • Considere aprender um pouco de HTML / CSS e Ruby. Nem tudo, apenas o suficiente para sobreviver, antes de você ir muito longe no RoR.
  • Faça um curso sobre RSpec (ou metodologia de teste semelhante). A da Codeschool no RSpec é particularmente boa e isso impede que você fique preso em uma lição de RoR, porque você não pode seguir os testes.
  • Obtenha cerca de 3 livros. Obie Fernandez "The Rails 3 Way" é um item obrigatório, usado para referência quando há algo que você simplesmente não consegue (não para ler de capa a capa). O ágil que você mencionou me confundiu. O "Learing Rails 3" vem de uma direção diferente e pode ajudar a quebrar alguns problemas que você não pode obter de outros tutoriais.
  • Faça um curso de screencast ou de aprendizado on-line. O tutorial de Michael Hartl é bom, mas um aprendizado muito acentuado. Descobri que os livros acima, além do curso de Codeschool no RSpec, me ajudaram a passar por isso - mas ainda precisava falar com o autor em alguns pontos.
  • Peça, peça, peça! Há um Fórum Ruby, Fórum Rails, salas de IRC e StackExchange etc - use todos com frequência !

Por favor, não desista - você é inteligente, mas parece ter um estilo de aprendizado semelhante ao meu, e o Rails é muito difícil de aprender e não é particularmente bem ensinado (completamente) em qualquer lugar.


4

Talvez o problema seja menos ruby ​​(e / rails) e mais o fato de você ter apenas uma 'compreensão instável' de HTML / CSS / JavaScript e SQL e bancos de dados.

O Rails é uma 'estrutura de pilha completa'. Se sua experiência anterior em programação é o Java principal, talvez com algum Swing, existem muitos conceitos para aprender ao mesmo tempo.

Se eu estivesse abordando esse problema, começaria primeiro com a modelagem SQL e a modelagem relacional (não há problemas de layout do navegador com o SQL!). Quando você estiver confiante com a camada do banco de dados, brinque com o ActiveRecord e saiba como os trilhos agrupam as tuplas do banco de dados.

O próximo passo seria aprender os controladores e o roteamento e, em seguida, a interface do usuário (html / javascript etc.).

Se você estiver desenvolvendo uma Web usando praticamente qualquer estrutura da Web, precisará entender SQL e modelagem relacional (mesmo que escolha a rota NoSQL posteriormente).


1

Eu também sou de Java e tive muita dificuldade em aprender Rails. Eu tive os mesmos problemas que você mencionou. Eu descobri que assistir railscasts.com ajudou no começo. Só de ver como alguém fez as coisas me ajudou a entender e então comecei a fazer as coisas por conta própria. Não toquei no Rails desde o lançamento do Rails 3.


1

Suas palavras "às vezes o dia todo, às vezes nada por várias semanas" me dizem tudo o que preciso saber. Se você está aprendendo uma nova linguagem E estrutura (presumo que seja isso que você está fazendo porque menciona "Ruby on Rails" e não apenas "Ruby")), a consistência compensa. Descobri que a única maneira de aprender e reter conceitos é estudar cerca de meia hora por dia, geralmente no final do dia, pouco antes de dormir. Se eu estudar mais de meia hora, fico inquieto e perco o foco. Se eu estudo menos, não reter o que aprendi.

Elimine distrações - esse é o meu melhor conselho. E estude todos os dias da semana. Antes que você perceba, as coisas começarão a se encaixar.

Como não vi postagens de acompanhamento, estou me perguntando como você fez. Já se passaram dois anos e isso certamente deve ser suficiente para aprender a ser um desenvolvedor web de primeira linha!


0

Estou inclinado para Ruby e Rails há cerca de 8 meses. Eu vim com uma compreensão de HTML, XML, SQL. Eu ainda encontrei o mesmo problema que você, o que funcionou para mim foi trabalhar em problemas reais, não apenas lendo e esperando entender. Talvez você precise executar vários testes pequenos de partes de código ou do mvc para entender um conceito. Símbolos são algo em que ainda estou trabalhando. Basta considerar um problema de cada vez e, à medida que os resolver, aprenderá algo necessário para resolver outro problema no seu projeto.

Resposta: Não, não se deve ter uma curva de aprendizado acentuada, a curva é diferente dependendo do seu histórico.


0

Pode. Eu sei que me deparo com a "curva de aprendizado" toda vez que tento realmente me sentar e me concentrar no aprendizado do Rails (a cada poucos meses, há mais de dois anos). O problema é que muitas coisas no Rails mudam em um ritmo extremamente rápido, e geralmente os recursos que você encontra estão desatualizados quase imediatamente.

Meu conselho é começar a focar em Ruby (pelo menos o básico) e depois no Rails, para que você não confie 100% na estrutura do Rails para lidar com tudo para você. Você também deve atualizar o HTML / CSS / Javascript por razões óbvias. Também por experiência, não fique preso à constante agitação do mundo Rails: se você pode ignorar todas as coisas novas que os conhecedores do Rails evangelizam como Haml, Sass, RSpec / BDD, Pepino, etc, ou você se afogará em ter que aprenda o BDD e o RSpec a escrever seu código, tendo que aprender Haml e Sass (não difícil, mas ainda assim, é outra coisa a aprender) a codificar o front-end, etc. Comece da maneira mais simples possível.


0

Existe uma curva de aprendizado para qualquer linguagem de programação. Não estamos realmente aprendendo um idioma da maneira convencional. Como o C / C ++, mas quando as coisas se tornam reais, também precisamos conhecer as porcas e os parafusos de poucas tecnologias.

A melhor maneira de abordar isso é aprender fazendo. Tome todos os esforços para fazê-lo sozinho. Geralmente, lemos as coisas, mas quando se trata da imagem real, vamos nos aturar. Eu sou um programador C ++ nativo, também posso codificar em C #. Eu sei que há muita bondade nessa linguagem e biblioteca em um ponto de vista abstrato, mas muitos dos tópicos que acabei de ler e pularam. Então, se você me perguntar, eu sou realmente deficiente.

Estou aprendendo o framework Django. O livro que optei é curiosamente simples e cria um aplicativo de marcador social. Portanto, é como aprender coisas do zero ao nível avançado, realizando um projeto prático. Sugiro que você se aproxime dessa maneira, pois tudo o que aprendemos você mesmo.


0

O problema do RoR, particularmente do segundo "R", é que a maioria dos tutoriais de aprendizado se concentra em ensinar a você o estilo "código-macaco". Especialmente o livro do Agile, está cheio de etapas de programação superficiais "agora fazemos isso, não se preocupe". Além disso, eles continuam mudando de paradigma - ou seja, primeiro eles estavam divulgando o RJS como sempre, agora, de repente, trata-se de UJS.

Como algumas pessoas sugeriram aqui, você pode tentar aprender os meandros da própria linguagem Ruby primeiro e depois seguir para a estrutura. Se você ainda deseja aprender os dois juntos, achei este livro chamado "Ruby for Rails" bastante útil.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.