¿Se supone que Ruby on Rails tiene una curva de aprendizaje empinada o solo soy yo? [cerrado]


17

Soy un programador autodidacta. He estado aprendiendo RoR desde octubre con intensidad variable (a veces todo el día, a veces nada durante varias semanas). Antes de eso solo conocía Java, pero lo sabía bastante bien. He escuchado tanto entusiasmo sobre RoR y cómo se supone que te hace feliz, productivo, etc. Hasta ahora solo me ha frustrado. Lo aprendí del libro Agile, y sospecho que parte de la dificultad podría tener que ver con el hecho de que no conozco JavaScript y CSS, y que solo tengo una comprensión inestable de las bases de datos y HTML. Pero aparentemente me llevó mucho más tiempo completar el proyecto en el libro de Agile que otras personas, y todavía no recuerdo mucho de él. Hay algunas cosas sobre Rails que parece que no puedo entender, por ejemplo, cuándo usar símbolos y cuándo NO, o cómo se llaman los métodos dinámicos.

Recientemente me asignaron una pequeña tarea de Rails donde me pidieron que hiciera un pequeño cambio en la interfaz. Me ha llevado alrededor de 25 horas y aunque he progresado en la comprensión del código, todavía no tengo idea de cómo proceder. Ni siquiera puedo pedirle a Stack Overflow porque hay mucho código que tendré que proporcionar para dar contexto.

Entonces, mi pregunta está en el título: ¿se supone que RoR tarda mucho en aprender o soy lento? ¿Puede ser que he estado aprendiendo del libro equivocado? Mi estilo de aprendizaje es tal que no entiendo nada o entiendo todo, si eso tiene sentido.


1
El aprendizaje es siempre incremental , entiendes un poco más cada vez que aprendes algo. La resolución de problemas es difícil y requiere paciencia (independientemente de la experiencia en el lenguaje de programación).
Aditya P

Pensé que sí, pero probablemente sea porque está muy orientado a las convenciones en mi caso. Muy acostumbrado a configurar muchas de las cosas que hace como convención.
Plataforma

Respuestas:


17

A partir de su pregunta, es obvio que no solo Rails está tratando de aprender, sino que, al mismo tiempo, debe comprender conceptos de desarrollo web, así como bases de datos y SQL. Es una tarea enorme, así que tenga paciencia.

Por otro lado, con Rails no tiene otra opción: debe aprender los tres: M, V y C de MVC , todo al mismo tiempo, pero ese sería el caso con cualquier marco MVC, con Rails entre los más fáciles. , Yo diría que.

Lo que podría hacer es comenzar con un marco más simple, como Sinatra, hasta que se sienta cómodo con los conceptos básicos de Ruby y HTTP, y luego progresar lentamente hacia una presentación más rica (vistas y CSS) y modelos basados ​​en bases de datos.


10

Cuando estás aprendiendo Rails y tu único fondo es Java, no solo estás aprendiendo un nuevo marco web. También está aprendiendo un nuevo lenguaje de programación, y uno que es significativamente diferente de Java.

Puede serle útil aprender Ruby primero y luego mirar Rails y sus convenciones. Aprender lo que hace Rails y cómo lo hace fue mucho más fácil para mí una vez que ya no tuve que luchar para entender a Ruby y pude leer (y escribir) códigos / plantillas de Rails.

Fui a través de la Ruby on Rails Tutorial y me pareció muy útil. El libro tutorial es gratuito y hay una versión para Rails 2.3 y 3.0. También puede resultarle útil leer sobre MVC (Model-View-Controller) y el desarrollo web / ciclo de vida de la página en general.


6

Anita, he tenido casi la misma experiencia que tú. pero creo que ahora entiendo por qué es tan difícil de aprender:

  • RoR no es un idioma, es una amplia colección de tecnologías, lenguajes y técnicas.
  • No es como Java, C ++ u otros lenguajes que tienen una estructura lógica.
  • No hay una única forma de aprender y ningún libro que pueda enseñarle (más sobre esto más adelante)
  • En mi opinión, la comunidad parece tener una actitud algo "obstinada" que no es tan indulgente como otras comunidades cuando aprende. La gente regularmente no está de acuerdo sobre cómo "deberían" hacerse las cosas. Esto viene de arriba, del tipo que inventó RoR
  • Se recomienda encarecidamente que las pruebas sean una parte central del desarrollo en la mayoría de las lecciones de RoR, y los lenguajes de prueba son DSL que también pueden aumentar la carga de aprendizaje que ya es alta.
  • No hay documentación adecuada para el idioma, solo una API, algunas guías y cualquier libro que pueda encontrar.
  • Algunos métodos y técnicas centrales son "automáticos" y no está claro cómo funcionan. Por ejemplo, los métodos has_secure_password.

Lo he estado aprendiendo durante más de un año y aquí hay algunas cosas que creo que hacen que sea más fácil de aprender, que he aprendido por experiencia:

  • Atacarlo desde varios ángulos. Cuando tiene varios libros, tutoriales y blogs para trabajar, esto puede "abrir" una forma de aprender. Un solo libro o blog en sí mismo puede dejarlo "atascado".
  • Considere aprender algo de HTML / CSS y Ruby. No todo, solo lo suficiente para sobrevivir, antes de ir demasiado lejos en RoR.
  • Tome un curso sobre RSpec (o una metodología de prueba similar). El Codeschool one en RSpec es particularmente bueno y esto evitará que te quedes atrapado en una lección de RoR porque no puedes seguir las pruebas.
  • Consigue unos 3 libros. Obie Fernandez "The Rails 3 Way" es imprescindible, se utiliza como referencia cuando hay algo que simplemente no se obtiene (no para la lectura de principio a fin). El ágil que mencionaste me confundió. "Learing Rails 3" viene desde una dirección diferente y puede ayudar a analizar algunos problemas que no puede obtener de otros tutoriales.
  • Haz un screencast o un curso de aprendizaje en línea. El tutorial de Michael Hartl es bueno, pero un aprendizaje muy empinado. Descubrí que los libros anteriores, más el curso Codeschool en RSpec, me ayudaron a superarlo, pero aún así tuve que comunicarme con el autor en un par de puntos pequeños.
  • ¡Pregunta, pregunta, pregunta! Hay un foro de Ruby, Rails Forum, salas de IRC y StackExchange, etc. ¡Utilícelos con frecuencia !

Por favor, no te rindas: eres inteligente, pero pareces tener un estilo de aprendizaje similar al mío, y Rails es muy difícil de aprender y no está particularmente bien enseñado (completamente) en ningún lado.


4

Tal vez el problema sea menos rubí (y / o rieles) y más el hecho de que solo tiene una 'comprensión inestable' de HTML / CSS / JavaScript y SQL y bases de datos.

Rails es un 'marco de pila completa'. Si su experiencia previa en programación es Java central con quizás un poco de Swing, entonces hay muchos conceptos que aprender al mismo tiempo.

Si estuviera abordando este problema, comenzaría por obtener SQL y el modelado relacional primero (¡no hay problemas de diseño del navegador con SQL!). Cuando esté seguro con la capa de la base de datos, juegue con ActiveRecord y aprenda cómo los rieles envuelven las tuplas de la base de datos.

El siguiente paso sería aprender los controladores y el enrutamiento y luego la interfaz de usuario (html / javascript, etc.).

Si va a realizar algún desarrollo web utilizando prácticamente cualquier marco web, deberá comprender SQL y el modelado relacional (incluso si luego elige la ruta NoSQL más adelante).


1

También vengo de un entorno Java, y tuve dificultades para aprender Rails. Tuve los mismos problemas que mencionaste. Descubrí que mirar railscasts.com ayudó al principio. Solo ver cómo alguien más hacía las cosas me ayudó a comprender y luego comencé a hacer cosas por mi cuenta. Sin embargo, no he tocado Rails desde que salió Rails 3.


1

Sus palabras, "a veces todo el día, a veces nada durante varias semanas" me dicen todo lo que necesito saber. Si está aprendiendo un nuevo lenguaje Y marco (supongo que eso es lo que está haciendo porque menciona "Ruby on Rails" y no solo "Ruby"), la coherencia vale la pena. He descubierto que la única forma de aprender y retener conceptos es estudiar alrededor de media hora por día, generalmente al final del día, justo antes de acostarse. Si estudio más de media hora, me pongo nervioso y pierdo el enfoque. Si estudio menos, no conservo lo que aprendí.

Eliminar las distracciones: ese es mi mejor consejo. Y estudia todos los días de la semana. Antes de que te des cuenta, las cosas comenzarán a encajar.

No vi ninguna publicación de seguimiento, así que me pregunto cómo lo has hecho. Han pasado 2 años, ¡y eso sin duda debería ser mucho tiempo para aprender a ser un desarrollador web de primer nivel!


0

He estado apoyando a Ruby and Rails durante unos 8 meses. Entré con una comprensión de HTML, XML, SQL. Todavía encontré el mismo problema que tú, lo que funcionó para mí fue trabajar en problemas reales, no solo leer y esperar comprender. Es posible que tenga que ejecutar muchas pruebas pequeñas de piezas de código o el mvc para comprender un concepto. Los símbolos son algo en lo que todavía estoy trabajando. Simplemente tome un problema a la vez y a medida que los resuelva, aprenderá algo necesario para resolver otro problema en su proyecto.

Respuesta: No, no se supone que tenga una curva de aprendizaje empinada, la curva es diferente dependiendo de su fondo.


0

Puede. Sé que me encuentro con la "curva de aprendizaje" cada vez que trato de sentarme y enfocarme en aprender Rails (cada pocos meses durante más de 2 años). El problema es que muchas cosas en Rails cambian a un ritmo vertiginoso y, a menudo, los recursos que encuentras están desactualizados casi de inmediato.

Mi consejo es comenzar enfocándose en Ruby (al menos lo básico) y luego en Rails, para que no confíe 100% en el marco de Rails para manejar todo por usted. También debe repasar HTML / CSS / Javascript por razones obvias. Además, por experiencia, no te quedes atrapado en la constante agitación del mundo de Rails: si puedes ignorar todas las cosas novedosas que los Rails cognoscenti evangelizan como Haml, Sass, RSpec / BDD, Pepino, etc. o te ahogarás en tener que aprenda BDD y RSpec para escribir su código, teniendo que aprender Haml y Sass (no es difícil pero aún es otra cosa que aprender) para codificar el front-end, etc. Comience lo más simple posible.


0

Hay una curva de aprendizaje para cualquier lenguaje de programación. Realmente no estamos aprendiendo un idioma de la manera convencional. Al igual que C / C ++, pero cuando las cosas se hacen realidad, también tenemos que conocer los aspectos básicos de algunas tecnologías.

La mejor manera de abordarlo es aprender haciendo. Esfuércese por hacerlo usted mismo. Por lo general, leemos cosas, pero cuando se trata de la imagen real, nos quedaremos con ella. Soy un programador nativo de C ++, también puedo codificar en C #. Sé que hay mucha bondad en ese idioma y biblioteca en un punto de vista abstracto, pero muchos de los temas que acabo de leer y omitir. Entonces, si me preguntas, en realidad estoy discapacitado.

Estoy aprendiendo el framework Django. El libro que elegí es interesantemente simple y crea una aplicación de marcador social. Entonces, es como aprender cosas desde cero hasta el nivel avanzado haciendo un proyecto práctico real. Le sugiero que se acerque de esa manera ya que todos lo estamos aprendiendo usted mismo.


0

Lo que ocurre con RoR, particularmente con la segunda "R", es que la mayoría de los tutoriales de aprendizaje se centran en enseñarle el estilo "mono-código". Especialmente el libro Agile, está lleno de pasos superficiales de programación "ahora solo hacemos esto, no te molestes por qué". Además, el hecho de que siguen cambiando su paradigma, es decir, primero promocionaban el RJS a medida que avanzaban, ahora de repente, se trata de UJS.

Como algunas personas sugirieron aquí, primero puede intentar aprender los entresijos del lenguaje Ruby, luego pasar al marco. Si todavía quieres aprender ambos juntos, encontré que este libro llamado "Ruby for Rails" es bastante útil.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.