RoR que es ? Entrevista Casual a Raul Murciano


Desde hace un tiempo vengo intentado en cada proyecto que voy introducir RoR en los cuadros de mando y cosas similar , mi gran problema es el desconocimiento de la tecnología y sobre todo Java.

He pedido a un amigo que además es una estrella sobre el tema  una mini entrevista con algunas preguntas sobre RoR , no es para iniciarse pero si para que les pique el gusanillo y se indague mas .

Como no soy  un experto  he pedido ayuda a gente que si lo son así que si ven alguna cosa que no cuadre o no les guste ya sabes comentario.

¿Que es RoR [1]?

Ruby on Rails, también conocido como RoR o Rails es un framework de aplicaciones web de código abierto escrito en el lenguaje de programación Ruby, siguiendo el paradigma de la arquitectura Modelo Vista Controlador (MVC). Trata de combinar la simplicidad con la posibilidad de desarrollar aplicaciones del mundo real escribiendo menos código que con otros frameworks y con un mínimo de configuración. El lenguaje de programación Ruby permite la metaprogramación, de la cual Rails hace uso, lo que resulta en una sintaxis que muchos de sus usuarios encuentran muy legible. Rails se distribuye a través de RubyGems, que es el formato oficial de paquete y canal de distribución de bibliotecas y aplicaciones Ruby.

Ahoa que tenemos mas o menos una ida muy muy muy …. muy basica de lo que es  vamos con la entrevista:

  • ¿Como esta el RoR en San Francisco (SF)?

Pues la verdad es que en plena forma. En SF hay muchísimas start-ups y muchas de ellas basan su tecnología en la web. Rails encaja muy bien con la filosofía de una start-up: permite prototipar muy rápido sin que el código deje de ser mantenible, ir refinando el prototipo mediante iteraciones cortas, incorporar gente al equipo es fácil porque todo el mundo sigue las mismas convenciones… Aquí se han dado cuenta de todas estas ventajas y, pese a que hay una cantidad tremenda de empresas… siguen haciendo falta programadores!

  • ¿Como te has adaptado a SF?

SF es una ciudad muy acogedora, siempre encuentras alguien dispuesto a orientarte o echarte un cable. Tengo la sensación de que muchos de sus habitantes también proceden de otros sitios y hay cierto ambiente de solidaridad.

Eso sí, es una ciudad muy cara, especialmente el tema del alojamiento está por las nubes. En nuestro caso hemos optado por vivir en las afueras, en Berkeley: en 20 minutos de BART (parecido al metro) estamos en la ciudad y es un sitio más pequeño que encaja muy bien con nuestro estilo de vida (venimos de vivir en un pueblecito de la Costa Brava). Nos gusta tener la ciudad cerca para hacer alguna escapada de vez en cuando, pero para el día a día preferimos un sitio más tranquilo… será que nos hacemos mayores 😀

El idioma es sin duda mi punto débil, pero es parte de lo que quiero mejorar durante el tiempo que esté aquí. Por suerte mis compañeros de trabajo son encantadores y tienen una paciencia tremenda conmigo.

Lo que no podemos evitar es echar de menos a la familia: por suerte podemos hablamos por videoconferencia muy a menudo y les mantenemos informados por facebook para compartir con ellos un poco de nuestro día a día. Tener la familia y los amigos lejos es sin duda lo que más nos cuesta de estar aquí.

  • ¿Como ves Ruby y RoR desde un punto de vista tan privilegiado como heroku?

Heroku aloja miles de aplicaciones basadas en Rails y en ese sentido  sí es un punto de vista privilegiado porque puedes ver cómo aumenta el número de empresas que apuestan por Rails. Nuestro equipo de ventas nos informa cuando detecta alguna empresa conocida adopta nuestra plataforma y por suerte ocurre bastante a menudo. Por otra parte, Heroku utiliza internamente muchísimos proyectos open source desarrollados en Ruby. En todos ellos ves que la evolución no para y que tienen un ritmo de actividad impresionante, igual que impresiona el número de grupos locales y de conferencias dedicadas a practicar y difundir las bondades de Ruby y Ruby on Rails por todo el mundo. Por todo esto creo que tanto a nivel de popularidad entre las empresas
como de actividad por parte de la comunidad Ruby y Ruby on Rails están en un momento dulce.

  • Que crees que le falta a RoR para difundirse mas?

Tiempo. Creo que en las tecnologías, como en muchas áreas de conocimiento,cada persona tiene distintos grados de interés y de
permeabilidad hacia las novedades. Diría que tanto Ruby en el campo de la programación como Rails en el del desarrollo web han hecho suficiente “ruido” como para que la gente que tiene interés en estar al día haya oído hablar de ellos.
También creo que esa entre esa gente se ha creado suficiente masa crítica de usuarios como para darle entrada en el mundo empresarial, y que las empresas que tienen interés y se lo pueden permitir han empezado a probar Ruby y Rails con pequeños proyectos. Creo que es importante hacer esta puntualización sobre “las empresas que se lo pueden permitir” porque hay empresas que, o bien porque se dedican a temas en los que Ruby y Rails no encajan, o tienen una estructura demasiado rígida que les impide evaluar nuevas tecnologías (lo cual me parece peligroso a largo plazo si la tecnología juega un papel importante en su negocio).
El siguiente nivel de “permeabilidad” serían las personas y empresas que sólo prueban y aprender nuevas tecnologías cuando no les queda más remedio, porque el mercado se lo exige. Ese paso es con diferencia el  más lento y sólo el tiempo dirá si Ruby y Rails llegan a penetrar a ese nivel, pero eso depende en gran medida de otros factores diferentes a la difusión.

  • ¿Que crees que le falta a ruby o RoR o en que podía mejorar?

Antes de nada me gustaría resaltar que Ruby no es el lenguaje perfecto ni Ruby on Rails el framework ideal para desarrollo web porque “there are no silver bullets”.
Vamos con Ruby:
– a nivel de sintaxis es un lenguaje muy conciso pero me gustaría que lo fuera un poco más (por ejemplo soy fan de la tabulación de python vs el “end”).
– del desarrollo del lenguaje en sí apenas conozco nada así que poco puedo aportar. Si acaso comentaría que en alguna de las listas
oficiales (ruby-dev) aún se utiliza japonés y yo unificaría en todas el uso del inglés.
– en cuanto a las librerías creo que rubyems, pese a ser un proyecto indispensable para cualquier programador Ruby, aún está a mucha distancia por ejemplo del CPAN de Perl.
– para terminar, siempre le pediremos a ruby más rendimiento y menos consumo de recursos: por suerte hay gente muy buena trabajando en las diferentes implementaciones de Ruby así que veremos mejoras.

En cuanto a Rails:
– la versión 3 ha traído una fuerte reestructuración interna: ahora Rails es mucho más hackeable pero creo que el rendimiento (al menos en modo desarrollo) se ha resentido mucho, así que me gustará ver si mejora en ese aspecto.
– la documentación, tanto a nivel de API como de tutoriales y guías de buenas prácticas, es fundamental para facilitar la adopción y uso de un framework. Por suerte gente como Xavier Noria han dado un paso al frente y con un trabajo diario han conseguido generar una documentación magnífica además de facilitar la participación de cualquier interesado en corregirla o completarla, espero que más gente se anime a colaborar en este apartado.
– como twitteaba hace poco @mgnoriega, es bueno ver que tras una etapa de consolidación Rails está de nuevo innovando: me gustará ver en funcionamiento la gestión automática de assets y su integración con coffeescript en su siguiente versión. Era algo que hasta ahora se gestionaba con plugins: espero que siendo los nuevos defaults su adopción crezca entre los desarrolladores, muchos usuarios se verán beneficiados al visitar webs con contenidos comprimidos y optimizados para su descarga y cacheo.

  • ¿Quizá uno de los aportes de RoR sea la metaprogramacion aplicada?

Sí y no. Yo creo que la metaprogramación es buena cuando sirve para evitar repetir código, pero creo que en algunas versiones anteriores de Rails se llegó a abusar demasiado de ella: algunos fragmentos eran demasiado “exóticos” y eso dificultaba corregir errores o simplemente comprender cómo funcionaban. Creo que hay que buscar un compromiso entre la elegancia y la legibilidad del código y creo que en ese sentido Rails ha madurado bastante.

  • ¿Que ventajas ves a ROR frente a PHP y al todo poderoso JAVA?

La primera ventaja que yo veo es la sintaxis: creo que Ruby es un lenguaje muchísimo más conciso y elegante que PHP y Java. Hay gente que no le da importancia a estas cosas, pero a mí me parece fundamental que el código sea siempre fácil y rápido de leer, mantener y modificar. En ese sentido creo que Ruby es mejor que PHP (cuya sintaxis para trabajar con orientación a objetos siempre me ha parecido un apaño) y que Java (que en mi opinión tiene una sintaxis que conduce a diseños demasiado recargados).

Para mí, hasta hace poco tiempo PHP era una alternativa válida frente a Rails cuando necesitabas desarrollar una web muy sencilla. Con la aparición de rack y Sinatra no encuentro un ejemplo en el que optar por PHP. Otra ventaja que tenía PHP era su ubicuidad y su facilidad de despliegue: con Heroku tardas menos de un minuto en crear y pasar a producción una aplicación Ruby… Así que yo ya no le veo ninguna ventaja a PHP.

Java tiene un mercado empresarial grandísimo en varias plataformas diferentes y por tanto hay mucho dinero invertido, no se dejará de utilizar de la noche a la mañana y seguro que mantiene una posición privilegiada en mercados concretos. Eso sí, creo la desaparición de Sun supone un revés muy importante, y no sé si Oracle tiene muy claro qué hacer con lo que ha comprado… Diría que Java es como los abuelos cascarrabias de las películas: le queda mucho tiempo entre nosotros pero cada vez menos gente quiere hacerse cargo de él.  Como anécdota, Jonathan Schwartz (ex CEO de Sun) utiliza Rails en la empresa que fundó tras vender Sun, y no creo que le falten contactos ni recursos para contratar profesionales Java de primer nivel :D.

  • Cómo evitar que ROR crezca hasta hacerse inmantenible como JAVA?  ¿Está RoR hecho para el mundo Enterprise?
    Las aplicaciones de mi empresa tienen muchos usuarios… ¿Rails escala?  ¿Crees que hay mundo después de java?

(Agrupo estas tres preguntas para darles una respuesta común).
Creo que con la tecnología que tenemos hoy en día, los culpables de que un proyecto sea difícil de mantener somos las personas y no los lenguajes o frameworks que utilicemos. Los plazos de entrega irreales y la desgana a la hora de programar pueden darse tanto en proyectos Rails como en proyectos Java. Sí creo, como te decía antes, que creo que Ruby ayuda a tener un código más mantenible que Java… pero durante mi tiempo de freelance he visto aplicaciones Rails cuyo mantenimiento debe ser un infierno, así que usar ruby no asegura nada.
En el 2008, yellowpages.com explicaba en conferencias cómo había migrado de Java a Ruby on Rails. El código pasó de 125.000 a 20.000 líneas, se alegraron de comprobar que había mejorado muchísimo su mantenibilidad y seguían sirviendo más de mil millones de páginas al mes. Como ejemplo extremo de escalabilidad tenemos empresas como twitter o facebook que han probado distintas tecnologías y han terminado ajustándolas a medida para que se adapten a lo que necesitan. El límite de Rails parece que está entre ambos ejemplos pero lo desconozco porque no he trabajado en proyectos de esa escala.

  • Ya tenemos muchos programadores formados… ¿Compensaría fórmalos en RoR?

Yo lo haría si fuera mi empresa y pudiera permitírmelo. Como mínimo, aunque no quieras cambiar de tecnología, seguro que sacarían algunos patrones interesantes que poder aplicar con la tecnología que utilizan actualmente.

  • ¿Serían nuestros programadores más felices trabajando con RoR?

No lo sé, puedo decirte que yo sí lo soy (he trabajado previamente con PHP y Java).

[1] wikipedia.

Anuncios

8 comentarios en “RoR que es ? Entrevista Casual a Raul Murciano

  1. Viendo el blog y la entrevista creo que da la sensación de sobrade te , ademas no se si tu estas en el movimiento que envuelve a RoR, ademas creo que te tendrías que a ver informado un poco mas

    1. Para tachar publicamente a alguien de sobrado lo menos que podrías hacer es saber como escribir correctamente y las diferencias entre “a ver” y “haber” XDDDD pero claro… igual es mucho pedir XDDD

  2. Hola ,
    Quería comentarte que creo que la entrevista es algo sesgada no has echo ningún pregunta en la que RoR salga mal , no has preguntado por ejemplo:
    ¿Por que si RoR es superior a Php este crece mas rápido en framworks?
    ¿por que se sigue usando php en vez de RoR como herramienta estándar en web?
    Ror siempre tiene peor rendimiento que php o java?
    RoR no tiene recolector de basura?

    1. Por las preguntas que haces parece que ni te has preocupado un poco en mirar: las dos primeras son faciles de responder, Php tiene 10 años más de vida en el mercado que ROR (puedes consultarlo en la wikipedia, los enlaces te los buscas tú).

      Y las dos últimas son preguntas técnicas que creo que están fuera del scope de esta entrevista, que como ya bien decía ravamo al principio:

      “He pedido a un amigo que además es una estrella sobre el tema una mini entrevista con algunas preguntas sobre RoR , no es para iniciarse pero si para que les pique el gusanillo y se indague mas.”

      Pero claro, si no se lee todo no se entera uno de que va el tema 😉

      Saludos 🙂

    2. Respondiendo a las preguntas de Garba:

      “¿Por que si RoR es superior a Php este crece mas rápido en framworks?”

      Ruby on Rails es un framework, así que la comparación correcta sería entre Ruby y Php. Personalmente no creo que un lenguaje sea superior a otro por tener más frameworks, pero en Ruby sí existen otros frameworks distintos a Rails como Sinatra (mencionado en la entrevista) o Ramaze.

      Hace unos años Rails era muy inflexible: tenía una estructura que hacía muy difícil utilizar librerías alternativas a las que traía de serie. A raíz de esto surgió un framework llamado Merb que se hizo muy popular porque era muy modular y configurable. Pues bien, la gente de Rails y Merb fusionaron ambos proyectos intentando mantener la facilidad de uso de Rails y la configurabilidad de Merb: costó muchísimo esfuerzo y supuso cambios grandes en la API: el resultado es la versión 3 de Rails, que combina lo mejor de ambos frameworks.

      En mi opinión, que un framework tan popular admita que tiene cosas que mejorar y acoja en su grupo de desarrolladores a los de otro framework dándoles permiso para rehacer toda su arquitectura me parece de madurez, anteponiendo el interés de los usuarios al ego y prestigio personal.

      “¿por que se sigue usando php en vez de RoR como herramienta estándar en web?”

      Yo no creo que Php, ni Rails, ni Java sean herramientas estándar en la web. Lo que sí es verdad es que hay muchísima gente que sabe usar Php: ha sido la alternativa más popular a Java y ASP durante los últimos 10 años, seguramente porque tiene una curva de aprendizaje inicial muy suave y por lo que comentaba respecto a su ubicuidad (hay una oferta muy abundante de hosting compartido para Php). Como comentaba en la entrevista, creo que con Heroku y otras empresas similares Ruby ya puede competir incluso en ese terreno.

      “Ror siempre tiene peor rendimiento que php o java?”

      Puff, el tema del rendimiento da para mucho y yo no soy precisamente un experto: como comentaba anteriormente no he trabajado en proyectos tan exigentes como twitter o facebook así que sólo puedo comentar mi experiencia personal: de momento no he encontrado ningún proyecto web en el que haya tenido que descartar Rails o Sinatra por ser demasiado lentos. Creo que tanto twitter como facebook son casos muy extremos (en sus posts y charlas acerca de su arquitectura interna te das cuenta de que trabajan con unos flujos de información impresionantes) y que la típica arquitectura “share-nothing” actual escala lo bastante bien de forma horizontal como para que, si en un proyecto web con Php, Rails o Java encuentras problemas de rendimiento, se solucionen fácilmente añadiendo más recursos.

      Sé que por ejemplo en Heroku utilizamos Erlang para ciertos componentes de sistemas porque rinde mucho mejor que Ruby en sistemas concurrentes, pero como no trabajo en esa parte no puedo darte muchos detalles.

      “RoR no tiene recolector de basura?”

      Ruby tiene recolector de basura, aunque no está tan evolucionado como el de la máquina virtual de Java y creo que costará llegar a ese nivel. Para mí, la JVM es algo impresionante: se nota que es el resultado de muchos años de trabajo a cargo de gente con mucho talento. No me extraña que JRuby y otros proyectos quieran apoyarse en ella para ejecutar otros lenguajes.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s