¿Por qué debería aprender Ruby on Rails? ¿Qué tan difícil es para un programador de Java aprender Ruby? ¿Cuáles son las ventajas frente a otros marcos de desarrollo web?

Te convertirá en un mejor programador de Java.

Y un mejor programador en general.

Hice el mismo viaje hace unos 6 años. En ese momento, Java 5 había existido por solo un par de años, y aunque Java EE 5 acababa de ser lanzado, todos los principales frameworks y servidores de aplicaciones todavía estaban sacando sus últimos lanzamientos (anotaciones de soporte y genéricos).

Entonces, estaba sólidamente en Spring 2.x (todo XML), luchando con Hibernate (todo XML) y evitando Java EE 1.4 (y todo su XML) en general.

Había incursionado en PHP y ASP mucho antes de eso y sentí un nivel general de disgusto por la programación de spaghetti a la que tendían.

Me encantaban las pruebas unitarias, pero a menudo me encontraba teniendo dificultades cada vez que necesitaba burlarme de mi comportamiento. La inclinación de Spring por las interfaces y el desacoplamiento ayudó bastante, aunque trajo consigo una explosión de clase y un poco más de verbosidad / complejidad.

Logré superar mis herramientas para presentarlas y de alguna manera conseguí que Eclipse y Tomcat trabajaran juntos correctamente, lo que me permitió hacer algunos cambios, esperar un tiempo y luego actualizar la aplicación web. Esto estaba usando Maven, que, a pesar de todas sus fallas (moar XML) me ayudó a administrar mis dependencias y compilar-probar-paquete-implementar ciclo lo suficientemente bien. Sin embargo, no pude hacer que funcionen a la perfección con Glassfish en ese momento.

Trabajando en una máquina Unix (Mac OS X), me acostumbré a escribir varios scripts para trabajos extraños usando bash. Sin embargo, nunca dominé realmente cómo usar grep , sed y awk (todavía no lo he hecho).

Me las arreglé y estaba orgulloso de mí mismo.

A menudo me preguntaba: ¿Es esto tan bueno como se pone?

Afortunadamente me equivoqué.

Ruby y Rails eran un soplo de aire fresco proveniente del ecosistema de peso pesado de Java y Java EE.

Pronto me encontré recurriendo a irb cada vez que necesitaba algunos cálculos rápidos (SHA-256 de una cadena, por ejemplo).

Mis scripts .sh comenzaron a dar paso a los scripts .rb , aunque solo fuera porque la recursividad, la coincidencia de patrones de .rb regulares y el análisis CSV eran mucho más fáciles en Ruby que en bash.

Me encontré abrazando la semántica de la programación funcional: prefiriendo .each , .map e .inject over for... iteración.

Sonreí al ver cómo las bibliotecas de guayaba de Google proporcionaban construcciones similares, aunque algo menos elegantes.

Vi cómo las clases anónimas que implementaban cualquier número de interfaces eran un pobre sustituto de las funciones de primera clase, lambdas y bloques.

El dinamismo me dejó boquiabierto y me di cuenta de cómo las pobres técnicas de reflexión de Java se comparaban con el poder de la metaprogramación. Empecé a desear que las interfaces Java pudieran contener código y ser utilizadas como mixins.

Aprendí a apreciar, pero lo más importante, cómo crear lenguajes específicos de dominio con sintaxis fluida.

Me encantó cómo Rubygems lo liberó de preocuparse por las dependencias, y cómo las convenciones de Rails impidieron la necesidad de XML y cómo YAML (en estos días, JSON) era un sustituto más eficiente e igualmente capaz de XML.

Me encantó cómo Rails realmente te permite guardar un archivo y actualizarlo de inmediato para ver tus cambios en acción. Me encantó cómo ERB (en estos días, HAML) era mucho más poderoso (pero más fácil de usar) que las plantillas JSP o Velocity / Freemarker.

Me encontré aprendiendo estas y una gran cantidad de otras tecnologías y técnicas y pensando: desearía que Java las tuviera.

(Bueno, ha tomado un tiempo y todavía no está allí, pero al menos Java 8 tiene cierres adecuados y métodos predeterminados en las interfaces ahora).

¿Estaba realmente mejor por eso?

Permítanme decirlo de esta manera: decidí aprender Objective-C. Si bien los protocolos de Objective-C son tan familiares como las interfaces de Java, el mecanismo de envío de métodos de Objective-C (y el dinamismo que permite) es fácilmente accesible para alguien versado en el envío de métodos de Ruby, ambos después de Smalltalk.

Incluso la sintaxis de paso de parámetros de Objective-C, que parece extraña desde un fondo de Java, es bastante similar al paso de parámetros usando la nueva sintaxis hash de Ruby 1.9.

Las categorías de Objective-C son tan entendibles como los módulos de Ruby (aunque menos potentes). El comportamiento de “clase parches” en tiempo de ejecución de una clase (a través de una categoría que reescribe sus métodos) no es una técnica arcana, sino una herramienta familiar (aplicada juiciosamente, por supuesto).

Ruby me expuso a suficientes técnicas funcionales que he decidido aprender Scala. Rails me expuso a Prototype (en estos días, JQuery) y SASS & HAML y ‘Javascript discreto’ que probablemente encontraría una forma de incorporarlos a mi próxima aplicación web Java.

No es que recomiende Java para aplicaciones web nunca más, ten en cuenta. Para cosas del lado del servidor, middleware o backends REST-ful, seguro. Pero para desarrollar e iterar rápidamente una aplicación web UI / UX-heavy, me quedaré con Ruby on Rails (hasta, tal vez, hasta que aprenda Angular + Node 😉

tl; dr: Ruby le enseñará programación de lenguaje dinámico, técnicas de programación funcional, metaprogramación y DSL, y Rails lo expone a una gran cantidad de otras técnicas y tecnologías.

Además, como he experimentado, y esto también es cierto para los idiomas naturales, cuantos más idiomas conozcas, más fácil será para ti aprender otro.

La curva de aprendizaje, ya sea que te lleve 1 mes o 1 año, vale la pena.

Ruby on Rails es una de las tecnologías más agradables para aprender y usar. Facilita la tarea de realizar tareas comunes con poco código, y se está convirtiendo en una herramienta muy popular para crear aplicaciones web y aplicaciones móviles. A muchos desarrolladores les encanta porque hace que el desarrollo sea rápido y elimina muchos dolores de cabeza potenciales al luchar con el código.

Si quieres aprender Ruby on Rails lo más rápido posible, CodeJinn. Te dan un curso delgado y fácil de seguir. Y con la tutoría en vivo cuando te quedas atascado, CodeJinn es uno de los mejores recursos que conozco para crear una aplicación real.

La parte más valiosa fue obtener ayuda instantánea en vivo de un profesional de Ruby on Rails. No solo crea un curso, sino que obtiene ayuda para crear su propio proyecto personalizado.

La falta de tutoría cuando se aprende programación es el verdadero abismo que se traga a muchos posibles desarrolladores. Ahórrese el dolor de cabeza y el dolor de cabeza de no saber qué hacer. Obtenga ayuda cuando la necesite.

Si ya eres programador, aprender Ruby no debería ser difícil para ti. Y hablando de incentivos para que hagas eso, hay varios:

1. Lo disfrutarás. Puede obtener mucha funcionalidad con pequeñas cantidades de código, en comparación con otros idiomas. Mucha automatización.

2. Verás un prototipo que funciona muy rápido. Es una de las ventajas de Ruby: crear productos mínimos viables.

3. Hay una comunidad realmente involucrada. Algo así como un culto en torno a Ruby y, por lo que parece, solo crecerá aún más y el lenguaje se volverá aún más popular.

4. Los desarrolladores de Ruby / Rails son muy buscados, ya que se hacen cada vez más populares. Los salarios promedio también son más altos, en comparación con otros idiomas. Siendo un políglota, sería aún más competitivo en el mercado.

¿Si, Por qué no? El conocimiento nunca es algo malo. Supongo que no tienes experiencia en programación. Puedes aprenderlo por varias razones.

Es posible que desee aprender Ruby on Rails para que pueda ser el desarrollador de cualquier producto de software en el que desee crear un negocio. Puedes convertirte en un “ejército de un solo hombre” que hace tanto el negocio como el desarrollo. Eso es increíble si puedes lograrlo, pero tienes mucho trabajo por delante si eso es lo que estás planeando.

Por otro lado, es posible que desee aprender Ruby on Rails para tener una idea de qué se trata el desarrollo web y de software, mientras planea contratar personal técnico para realizar la programación real en su empresa. Esto es bueno, pero recuerda ser humilde. Aprender algo de Ruby on Rails no te enseñará mucho sobre el desarrollo de software. Los desafíos que enfrenta como principiante incursionando en la programación son muy diferentes de los que un equipo de profesionales necesita manejar. Si va a ser una persona de negocios, será más importante aprender sobre metodologías, procesos y conceptos de desarrollo de software. Lea sobre Scrum o Kanban. Aprende lo que significa YAGNI. Comprender el concepto de deuda técnica. Y si puedes, consigue un buen CTO.

Ruby on Rails es solo una de las muchas herramientas disponibles para el desarrollo web.
Si desea hacer negocios, debe aprender mejor sobre negocios y dejar los detalles de implementación a otra persona.

Ahora, si quieres entrar en el desarrollo web, Rails es una buena alternativa. Pero esto es solo una parte de la pila web. También debe aprender JavaScript, HTML, CSS, bases de datos y algo sobre servidores.

Editar: como dije, no tienes que hacerlo todo. Si está en el negocio, debe concentrarse en su negocio. Pero supongo que tiene al menos algo de interés en conocer el lado técnico. Si esto es correcto, debería ser capaz de crear prototipos rápidos para probar ideas y comenzar.
Una vez que se te ocurra una prueba de concepto que funcione, podrás delegarla a otra persona o a un equipo para que sea escalable y sólida.

Creo que no puedes equivocarte con Python o Ruby. Ambos idiomas son excelentes para esto.

En la vida realmente no hay nada que aprender más. Si ya eres desarrollador, aprender Ruby on Rails es fácil para ti.

Te sientes mejor en comparación con otro idioma. Significa que muchas funciones están integradas en código y excelente automatización.

Lo sorprendente es que puedes ver el prototipo funcionando muy rápido.

La demanda de los desarrolladores de ROR siempre aumenta y es más popular. Los salarios promedio son más altos en comparación con otros idiomas.

Ruby on Rails es una de las partes más importantes para obtener ayuda instantánea en vivo de Rails Professional. No solo para aprender ROR sino también para construir su proyecto de aplicación personalizada.

Lo recomiendo mucho si te tomas en serio comenzar tu propio negocio. Pero asegúrese de hacerlo por los motivos correctos. No estás tratando de convertirte en el CTO de tu negocio, solo en el CTO interino. Siempre que sepa lo suficiente como para crear prototipos para sus ideas, podrá probar con usuarios reales. Si comienza a ver la tracción, podrá traer a alguien más técnico a bordo.

Tendrá que invertir un poco de tiempo por adelantado (y tal vez un poco de dinero), pero si lo hace a largo plazo, esta será una de las inversiones más gratificantes que podría haber hecho. Elegir esta ruta sobre el desarrollo de la subcontratación le permitirá lanzar rápidamente cualquier idea nueva o hacer ajustes en su sitio sin esperar que alguien más lo haga por usted.

Pasé por este mismo proceso de decisión cuando dejé mi trabajo de consultoría. En ese momento, no podía construir nada, y ahora un año después, estoy enseñando a la gente a hacer exactamente esto en BaseRails ( https://www.baserails.com ). Feliz de responder cualquier otra pregunta que tenga sobre esto.

La respuesta corta es No, aprende python y Django en su lugar.

Creo que es una excelente idea comenzar a aprender la codificación, incluso si solo estás buscando tener tus propios desarrolladores en el futuro. Conozco a muchas personas que comenzaron a desarrollar su propio producto y luego retrocedieron y dejaron que los desarrolladores hicieran el trabajo.

Aquí hay algunas razones por las cuales deberías comenzar a codificar en tu propio negocio:

  • Comenzarás a pensar más lógico
  • Será más fácil para usted ver las posibilidades de su propio producto.
  • Será mucho, mucho más fácil comunicarse con su futuro equipo de desarrollo (ya que está hablando su idioma).
  • Es barato
  • Es divertido

Aquí hay algunas razones por las que deberías usar Django / Python

  • Es fácil
  • Una gran comunidad
  • Más desarrolladores
  • Mas trabajos

Cuando se trata de la sintaxis, es más o menos lo mismo:
pone “hola mundo” VS imprime “hola mundo”.

También hay una gran tutoria (¡aprendí Python en 2 semanas!):
http://learnpythonthehardway.org/

Personalmente, después de provenir de un lenguaje más “estructurado”, como Java, y de ir a Ruby (con el marco de Rails), no puedo recomendar que Rails sea algo que se deba aprender.

Mi experiencia con él fue horrible. Las cantidades masivas de magia sobre las que Rails rocía, hicieron que el marco fuera un viaje severo para aprender. Las cosas simplemente parecían “suceder” y “funcionar” sin muchas líneas de código. Este podría ser un gran punto de venta para algunos, pero el alto nivel de abstracción fue un poco inquietante para mí. Hubo varios casos en que mi aplicación se rompió, aparentemente de forma aleatoria, y no tenía la menor idea de dónde comenzar a solucionar el error.

La experiencia podría haber sido diferente si Java no hubiera sido mi primera incursión seria en el desarrollo de aplicaciones web, pero la transición mental necesaria para aprender Rails fue un poco perturbadora para mí.

Dicho esto, Rails tiene algunas características increíbles. El ORM (ActiveRecord, creo que se llama) es algo que siempre echaré de menos. El marco me ha dejado una impresión tan grande que incluso después de que decidí alejarme de él, sentí que había visto una especie de luz y que no podía volver a Servlets y todo ese XML. Empecé a buscar un framework que fuera como Rails, y que estuviera basado en un lenguaje lo más cercano posible a Java.

¡Fue solo mi suerte que Play! Framework (Construir aplicaciones web modernas y escalables con Java y Scala) se estaba desarrollando al mismo tiempo y su objetivo (aparentemente) era llevar la sensualidad de Rails al mundo Java. ¡Perfecto!

Fui uno de los primeros en adoptar y aún no he cambiado. Puede intentarlo antes de saltar completamente del barco Java.

Probablemente será mejor que tome algunos cursos de informática y obtenga una buena base en los fundamentos, entonces podrá aprender fácilmente cualquier idioma que necesite para el éxito empresarial.

Mejor aún, cambie su especialidad por algo difícil como Ciencias de la Computación o Ingeniería y obtenga una especialización en Negocios. Es mucho más difícil aprender Ingeniería sobre la marcha si no tienes experiencia en ello que aprender negocios que esencialmente se reduce a las matemáticas básicas.

Para un programador de Java, Ruby es bastante fácil de aprender.
La principal ventaja de ruby ​​on rail sobre otros marcos es una comunidad muy activa. Hay una gran cantidad de recursos disponibles para Ruby on Rails. Después de aprender los rieles, probé con scala play2. Al principio fue poco decepcionante en términos de recursos disponibles para aprender.
aparte de eso, hay pocas características excelentes de ruby. Por ejemplo: pato escribiendo. lo que hará tu vida mucho más fácil. Al mismo tiempo, si no pasas por los conceptos básicos de ruby, esto puede hacerte sentir muy confundido y despistado. así que si vas a aprender ruby ​​on rails primero aprende ruby. No te llevará mucho tiempo. Pero no te saltes esta parte.
Aparte de esto, este riel es muy útil en términos de generación de código. Y, por lo tanto, puede obtener mucha velocidad si desea que esté trabajando en sus propios proyectos o incluso en caso de inicio. Ya que necesitan velocidad para sacar el primer prototipo.

Al final, diría que nunca es malo tener más herramientas en su caja de herramientas.

Es una manera fácil de aprender programación. Las gemas y el marco permiten una experiencia de usuario de codificación muy agradable para principiantes en comparación con muchos otros idiomas.

Porque Ruby está CALIENTE.

Si desea una sintaxis moderna que sea mucho más concisa que Java, pruebe Scala. Ruby tiene características operativas mucho peores que la JVM y no tiene la seguridad de tipo Java o Scala. No se puede recomendar para aplicaciones no triviales.

Si tienes tiempo, ¿por qué no?

More Interesting

Cómo implementar un lado del servidor en la aplicación de Android donde el contenido de la aplicación se actualiza desde el servidor

¿Dónde puedo encontrar información / pautas sobre el diseño de un sitio web multilingüe?

¿Debo poner tutoriales en el sitio web de mi perfil para encontrar un trabajo de desarrollador web?

¿Cuáles son algunos consejos para asegurarse de que un sitio web se vea igual en todos los navegadores?

¿Cuál es la diferencia entre un desarrollador web y un desarrollador de software?

¿Son CoffeeScript y Node.js el futuro del desarrollo de aplicaciones?

¿Una maestría en UX es una buena idea para un desarrollador web?

¿Cuál es una buena introducción al proyecto de programación web moderna que un estudiante de MBA podría hackear solo con un libro de O'Reilly o dos? (¿Construir una aplicación para iPhone, sitio web funcional basado en bases de datos?)

¿Cuál es la diferencia entre la solicitud Ajax y la solicitud XHR?

¿Qué oportunidades hay para un desarrollador front-end más fresco en Bangalore?

¿Cuáles son los beneficios para el usuario del HTML semántico?

¿Cómo contratar el mejor servicio de desarrollo web de comercio electrónico?

¿A alguien le importa realmente el 5% de las personas que mantienen JavaScript deshabilitado?

¿Debería preocuparme más por el aspecto de mi sitio de WordPress o el contenido en él para obtener una clasificación alta en Google? Tengo un sitio de directorio con muchos listados.

¿Qué importancia tiene el atributo "alt"?