Rails no es fácil

Últimamente pienso que se está acercando mucha gente a la programación
con
Ruby on Rails que viene con la idea de que es todo super fácil y que
todo se
hace de manera instantánea con un par de scaffolds.

La verdad es que sí que es muy sencillo y está todo muy automatizado,
pero
sólo si sabes programar a un cierto nivel. Esto es, si sabes orientación
a
objetos y entiendes MVC, y ahora también, un poquito de REST.

Creo que mucha gente viene de haber hecho cositas con PHP / ASP y que
las
únicas nociones que tienen de programación son cosas como bucles,
if…then…else, arrays, y como mucho, funciones. Sabiendo ese poquito ya
te
puedes hacer una página en PHP pero para Rails hace falta tener más
nociones
de programación para entender cómo se hacen las cosas.

¿Qué opinais sobre esto? Lo digo sobre todo porque en esta lista cada
vez
tenemos que explicar cosas más básicas a gente que da la impresión de
que
sólo se han leído un tutorial de PC World o similar, y que no han tocado
un
libro de Rails… Y por ver cómo me cuesta explicar determinados
conceptos
de Rails a amigos que hacen cositas básicas con PHP y les cuesta mucho
más
programar con rails que con php ya que con sus cuatro bucles y sus tres
funciones ya les bastaba… todo esto de desarrollo guiado por tests,
rest y
mvc como que no le ven la gracia.

Totalmente de acuerdo Jaime, y ya no solo eso; hay mucha gente se salta
los principios y no comienzan por lo básico que es la OO, conocer un
poco de Smalltalk, Java o simplemente saber que es un objeto,
polimorfismo, herencia… o sin más, saber un poco de donde viene
ActiveRecord (no la cosa mágica que hace que todo se más bonito) o la
herencia de tabla simple conocer un poco más de patrones y buenas
prácticas de programación.

Pero también es cierto que no todo el mundo pude perder el tiempo en
mirar esas cosas y lo hace meramente por trabajo, no por que realmente
le guste. Esa es la diferencia entre un programador que investiga,
intenta comprender las cosas y sacar miga de ello y otro que va a
koders.com encuentra el código perfecto para Ctrl+C Ctrl+V.

Por eso muchas veces cuando me preguntan: “¿Por donde empiezo?” la
respuesta es “¿Que sabes?” (Si los gallegos somos muy dados a responder
con otra pregunta)…

Es solo una reflexión que no solo va hacia Rails, sino a la informática
en general y la situación que tenemos los Ingenieros en España nada más.

Sigo animando a la gente a que use Rails ya que eso tambien nos benefia
a todos :wink: y por Galicia ya hemos llegado a la Xunta con Rails para que
nos conozcan bien :slight_smile:

Un saludo a todos.

Yo creo que lo que comentas es la demostración fehaciente de que Rails
no comparte exactamente el mismo escalón tecnológico que PHP. Rails
aporta muchas ventajas sobre PHP pero también tiene una serie de
exigencias adicionales, tanto a nivel de infraestructura (por ej. el
tema del hosting) como de equipos (lo que tú comentas: conocimientos
de orientación a objetos, mvc, etc.).

Sigo viendo programadores PHP que, pese a tener cierta experiencia,
siguen usándolo de forma imperativa y no aprovechan la orientación a
objetos (en su mayoría carecen de formación académica en
programación). Por supuesto, el salto a Rails es muy traumático en ese
caso (que creo que es al que te refieres en tu correo).A todos ellos
conviene explicarles que Rails no es milagroso, y que tendrán que “dar
un paso al frente” si quieren aprovechar sus ventajas. Por mi
experiencia como profesor en temas de programación y POO sé que
requiere algo de esfuerzo por su parte, pero se progresa mucho en muy
poco tiempo y los beneficios se ven enseguida. Además son conceptos
independientes del lenguaje que utilicen, que podrán aplicar para
programar en javascript, python, Java, C#, C++, etc

La gente que usa PHP orientado a objetos es caso aparte. Es gente que
percibe rápidamente las ventajas de encapsular y reutilizar código, y
generalmente esto “prende la chispa”: muchos hicimos nuestros pinitos
desarrollando nuestros propios frameworks MVC, clases caseras para
hacer reportes, paginaciones, formularios… Afortunadamente para los
PHPeros a día de hoy ya hay frameworks consolidados y repositorios de
clases para casi todo. Para toda esta gente (al igual que para los que
provienen de tecnologías más “pesadas” como J2EE o .NET) el cambio a
Rails es mucho más sencillo.

Lo que comentas sobre el desarrollo guiado por pruebas creo que es
diferente: en una encuesta a mano alzada en la charla[1] que dieron
Sergio y Christos vimos que hay mucha gente que usa Rails pero no TDD,
así que no lo metería en el “pack básico” de Rails.


Raul M. - Freelance Web D.
http://raul.murciano.net

[1]

El 12/03/08, Ibai Peña [email protected]
escribió:> Bueno, yo no puedo generalizar, pero os cuento mi experiencia. Soy ingeniro

informatico y simplificando mucho he trabajado con VS.Net usando OOP 4 años
(Con algunos proyectos web entre ellos).

Hola Ibai,

Mi primera impresión al intentar comenzar con Ruby on Rails ha sido la
confusión.

  • La manera de programar es nueva. No se donde esta cada cosa, y hay muchos
    terminos nuevos que hay que ir asimilando.

No sé si habías trabajado antes con algún framework de desarrollo web.
Por desgracia en todos ellos hay un periodo de aprendizaje
imprescindible para conocer dónde está cada cosa.

  • Normalmente hay varias opciones para todo: el servidor web, el IDE, la BD,
    etc. lo que para un novato es un poco frustrante. Estaría bien tener un
    entorno inicial de “instala y olvidate” completo.

Yo no veo tanto problema aquí: Rails trae webrick y sqlite3 de serie,
de forma que puedes empezar a practicar sin muchos problemas. En
cuando a lo demás, a mí me parece genial que cada uno sea libre de
elegir la herramienta para desarrollar (por suerte hay vida más allá
del VisualStudio, hay muchos IDE’s con un soporte estupendo para
Rails) y el entorno de producción más apropiado para cada proyecto
(hay varias ‘stacks’ muy bien documentadas). Personalmente las
opciones no me parecen un bug, sino una feature :smiley:

  • Los manuales dan por hecho que controlas otros aspectos de la
    programación. Documentos sobre Ruby on Rails suponen que sabes de MVC y/o
    REST, y documentos sobre REST suponen que sabes Ruby on Rails… Quiza soy
    muy torpe y necesitaria un “R&R for dummies”

El patrón MVC me parece fácil de comprender, y lo puedes aprovechar en
otros escenarios (por ejemplo en aplicaciones de escritorio). En
cuanto a REST, pese al soporte que Rails proporciona, a mí no me
parece imprescindible dominarlo para comenzar a aprender Rails.

  • Cuando buscas documentación sobre Rails, dado que hay variás versiones de
    Rails, no todos los ejemplos valen para todas las versiones.

Aquí creo que has dado en el clavo, creo que no existe un equivalente
al djangobook[1] y que sería muy útil de cara a los que empiezan. Para
los que ya tienen experiencia, la API[2] y el propio código fuente
suelen ser suficiente para resolver la mayoría de los problemas.

[1] http://api.rubyonrails.org/
[2] http://djangobook.com/

2008/3/12 Jaime I. [email protected]:

¿Qué opinais sobre esto? Lo digo sobre todo porque en esta lista cada vez
tenemos que explicar cosas más básicas a gente que da la impresión de que

Como yo lo veo es un problema generalizado en toda la rama IT (al
menos acá en Argentina me pasa tooodo el tiempo). Este “problema” se
ve muchas listas de tecnologías “nuevas”, basta solo suscribirse a
cualquier lista de GNU/Linux para encontrarse con preguntas como “como
configuro apache?” o cosas similares :).

Los programadores tienen cada vez menos ganas de leer, menos ganas de
buscar, menos ganas de investigar y menos ganas de aprender. Muchas
veces pienso que la profesión de programador se asemeja más y más a la
de un carpintero, cortamos aca, pegamos allá, y tenemos la mesa para
el cliente :).

Bueno, yo no puedo generalizar, pero os cuento mi experiencia. Soy
ingeniro
informatico y simplificando mucho he trabajado con VS.Net usando OOP 4
años
(Con algunos proyectos web entre ellos).

Mi primera impresión al intentar comenzar con Ruby on Rails ha sido la
confusión.

  • La manera de programar es nueva. No se donde esta cada cosa, y hay
    muchos
    terminos nuevos que hay que ir asimilando.
  • Normalmente hay varias opciones para todo: el servidor web, el IDE, la
    BD,
    etc. lo que para un novato es un poco frustrante. Estaría bien tener un
    entorno inicial de “instala y olvidate” completo.
  • Los manuales dan por hecho que controlas otros aspectos de la
    programación. Documentos sobre Ruby on Rails suponen que sabes de MVC
    y/o
    REST, y documentos sobre REST suponen que sabes Ruby on Rails… Quiza
    soy
    muy torpe y necesitaria un “R&R for dummies”
  • Cuando buscas documentación sobre Rails, dado que hay variás versiones
    de
    Rails, no todos los ejemplos valen para todas las versiones. Esto,
    añadido a
    que no estoy acostumbrado a la manera de programar de rails hace que
    cada
    problema que tengo tenga que consultar. Y no puede ser que este dando la
    vara todo el rato en foros, sería cansino y me mandaríais a paseo. Este
    es
    el punto que más me ha frustrado.

Tengo muy claro que si tuviera tiempo para acudir a un curso y poder
hacer
todas las preguntas que se me pasan por la cabeza, pasaría a dominarlo
sin
problemas. Pero mi tiempo es limitado y solo puedo emplear en esto
lapsos de
tiempo sobrantes con lo que mi avance es también muy lento.

Bueno, solamente es eso, una experiencia personal, pero espero que os
valga
para ver un poco el otro lado de la cuestión.

Saludos,
Ibai Peña

El día 12/03/08, Pablo Formoso E. [email protected]
escribió:

El 12/03/08, Ricardo M. [email protected]
escribió:> Muchas

veces pienso que la profesión de programador se asemeja más y más a la
de un carpintero, cortamos aca, pegamos allá, y tenemos la mesa para
el cliente :).

A mi me encanta la similitud de un programador con un carpintero.

Aunque, desde mi punto de vista, sería más acertado compararlo con un
ebanista… mucho más fino, entusiasta de su trabajo.

:slight_smile:

f.

2008/3/12 Jaime I. [email protected]:

if…then…else, arrays, y como mucho, funciones. Sabiendo ese poquito ya te


Jaime I.
http://jaimeiniesta.com - http://railes.net - http://pagerankalert.com


Ror-es mailing list
[email protected]
simplelogica.net

Creo que tienes razón Jaime. Muchas veces me preguntan si Ruby y Rails
son un buen primer lenguaje de programación y una buena primera
tecnología web.

Mi respuesta a lo primero es que sí, aunque conozco a quien piensa lo
contrario y lo argumenta bien, así que la cosa me queda en empate.

Para la segunda mi respuesta es claramente NO. Rails resuelve un
montón de problemas que todo el que lleve tiempo desarrollando web se
ha encontrado. Si no has tenido esos problemas, no entiendes las
soluciones, y si no entiendes las soluciones no puedes aplicarlas (o
aplicarlas con sentido).

Además Rails crea como dices un montón de abstracciones sobre las
cosas que hay debajo. Puede sonar a “los verdaderos programadores
escriben código máquina usando ed”, pero creo que hay que conocer esas
cosas precisamente para poder olvidarlas.

Un ejemplo es el AJAX en Rails, con RJS y los helpers para
formularios, etc. Si no sabes qué hace eso por debajo, qué es el
XMLHttpRequest, la diferencia entre una petición asíncrona y una
“normal”, etc., difícilmente podrás hacer algo cabal “juntando los
bloques” que Rails te da. Obviamente usarlo directamente es un coñazo
y para eso está Rails, pero necesitas saber lo que estás haciendo.

Hay una frase del Pragmatic Programmer que me encanta y creo que es de
plena aplicación aquí. Si algo te funciona y después te deja de
funcionar, no puedes saber por qué ahora no funciona, si antes no
sabías por qué funcionaba. Creo que es exactamente eso de lo que
se trata.

Es mi opinión, si no os gusta tengo otra =;-)


Sergio Gil Pérez de la Manga
e-mail > [email protected]
blog > http://www.lacoctelera.com/porras

El 12/03/08, Sergio Gil Pérez de la Manga [email protected]
escribió:

Además Rails crea como dices un montón de abstracciones sobre las
cosas que hay debajo. Puede sonar a “los verdaderos programadores
escriben código máquina usando ed”, pero creo que hay que conocer esas
cosas precisamente para poder olvidarlas.

Hay una máxima que yo recomiendo y trato de aplicarme siempre que puedo:
“Los GUI’s y los asistentes para cuando no los necesites”.

Ricardo puedo poner el simil en mi blog? Jejeje me ha gustado

El 12/03/08, Sergio Gil Pérez de la Manga [email protected]
escribió:> Además Rails crea como dices un montón de abstracciones (…)

Un ejemplo es el AJAX en Rails, con RJS y los helpers para
formularios, etc.(…) necesitas saber lo que estás haciendo.

Efectivamente, lo ideal es conocer la tecnología básica de la web. Sin
embargo yo creo que, si existe curiosidad suficiente, es posible hacer
un aprendizaje “top-down”: aprender Ruby y Rails primero y bajar
después hacia las entrañas del HTTP, javascript, etc…

Hay una frase del Pragmatic Programmer que me encanta y creo que es de
plena aplicación aquí. Si algo te funciona y después te deja de
funcionar, no puedes saber por qué ahora no funciona, si antes no
sabías por qué funcionaba. Creo que es exactamente eso de lo que
se trata.

Esa curiosidad por saber qué hay debajo, por qué ahora no funciona y
antes sí… seguramente sea eso lo que diferencia a los “ebanistas” de
los que tan sólo quieren limitarse a cortar tablones.

Saludos,

Contare mi experiencia. Soy un programador que me enteré de Ruby on
Rails
apenas salió, quise aprender a usarlo, pero como solo sabia Visual Basic
6.0,
fue MUY DIFICIL.

Asi que primero decidí aprender java en términos básicos para entender
la
POO, luego hice un par de aplicaciones en C# usando GTK y Mono, aprendí
bastante, pero no fue suficiente.

Después del segundo fracaso, entendí que debia aprender programación
web,
asi que decidí aprender PHP desde cero, a punta de funciones, bucles y
condicionales, luego aprendi a usar PHP 5.0 usando POO.

Ahora si estaba preparado, entendía muchas cosas como las sesiones y las
cookies, el MVC se hacia muy claro y el rest la mejor opción para
servicios
web.

Rails puede ser muy complejo y dificil como primera alternativa a la
programación, pero resulta en gran ayuda cuando se tienen conocimientos
y
experiencias en otros entornos web.

El día 12/03/08, Andrés gutiérrez [email protected] escribió:

Gracias a todos. Yo soy el sujeto del que se esta hablando:
Conozco un poquito de php, un poquito de HTML, un poquito de
CSS,…vamos
que se poco. (y encima no soy programador!!!)
Llegue a RoR hace un año, pero aun no me he metido a fondo con ello (la
vida, tener que comer todos los dias,…)

En muchas cosas de las que se ha hablado estoy deacuerdo,…he empezado
por
la primera parte del framework [RUBY]. quiero entender
como se hacen las cosas, pero la gente como yo no puede evitar hacer
preguntas “estúpidas” y si acudo a la lista para pedir ayuda es porque
aunque mi duda sea algo genérico de la POO y no sea específico de RoR,
lo
pregunto aquí porque estoy teniendo el problema con un desarrollo de
RoR.

Comprendo que la gente que se esta “quejando” en esta lista es gente
activa,
que aporta respuestas, pero piensa que otro día te puede tocar a ti ser
el
tio que viene con un pregunta “tonta o básica” todo depende de quién la
lea
¿no?

Conclusión, creo que en general deberíamos tener paciencia los unos con
los
otros (veteranos-novatos, progamadores-gente que le gusta RoR,…)
Siempre es agradable sentir que no sobrás y que no te discriminan por no
saber.

Espero que nada de lo que dicho le sepa mal a nadie. Cada dia abro mi
correo
y leo entusiasmado todos los mensajes de la lista, mi deseo es que un
dia
pueda ayudar como otros me ayudan.

Un saludo a todo el mundo

El día 12/03/08, Raul M. [email protected] escribió:

El día 12/03/08, Andrés gutiérrez [email protected] escribió:

Conclusión, creo que en general deberíamos tener paciencia los unos con
los otros (veteranos-novatos, progamadores-gente que le gusta RoR,…)
Siempre es agradable sentir que no sobrás y que no te discriminan por no
saber.

Andrés, tienes toda la razón en que hay que tener paciencia y procurar
ayudar a los que saben menos, incluyéndome a mí entre los que saben
menos,
que me estrené en esta lista preguntando por las diferencias de RoR con
.NET
:slight_smile:

Lo que sí creo es que debemos insistir en que antes de preguntar
cualquier
cosa
en la lista, se debe googlear un poco porque seguramente ya se
encuentre la respuesta ahí fuera. Y también creo que antes de preguntar
en
la lista, hay que haberse leído al menos un libro de Rails y haber
practicado… si no, se genera mucho ruido en la lista y deja de ser
útil
para cuando sí necesitamos que mucha gente lea nuestra pregunta.

El día 12/03/08, Ricardo M. [email protected] escribió:

Estoy de acuerdo. Pero la gente en general no sabe diferenciar un
ebanista y nos trata como carpinteros :smiley:

En ese aspecto, cuando me dicen, “ah, ¿eres informático?” yo respondo
“No,
soy programador. Yo no limpio virus ni desatasco impresoras” :smiley:

2008/3/12 Andrés gutiérrez [email protected]:

la primera parte del framework [RUBY]. quiero entender
como se hacen las cosas, pero la gente como yo no puede evitar hacer
preguntas “estúpidas” y si acudo a la lista para pedir ayuda es porque
aunque mi duda sea algo genérico de la POO y no sea específico de RoR, lo
pregunto aquí porque estoy teniendo el problema con un desarrollo de RoR.

Como yo lo veo, es un problema de “modo” y no de “contenido”. Es
decir, muchas veces en el apuro uno pregunta muy vagamente. Lo que
está mal formulada es la pregunta, no lo que se quiere preguntar.

Al fin y al cabo uno no hace sabiendo. Por dar un ejemplo muy pavo y
abstracto, no es lo mismo preguntar “como creo un controlador?” que
decir “estoy tratando de crear un controlador para poder manejar los
Alumnos del sistema. Quise poner el alumnos_controllers.rb bla bla bla
bla” … Si yo leo lo primero, generalmente pienso “que vago
(perezoso ;)” y salvo que tenga mucho tiempo, no contesto.

Si leo lo segundo en cambio veo que realmente estas atascado y trato
de contestar.

Conclusión, creo que en general deberíamos tener paciencia los unos con los
otros (veteranos-novatos, progamadores-gente que le gusta RoR,…)
Siempre es agradable sentir que no sobrás y que no te discriminan por no
saber.

100% de acuerdo, pero recuerda: el problema está en cómo se dice, no
es lo que se dice.

2008/3/12 Fernando G. [email protected]:

El 12/03/08, Ricardo M. [email protected] escribió:

Muchas
veces pienso que la profesión de programador se asemeja más y más a la
de un carpintero, cortamos aca, pegamos allá, y tenemos la mesa para
el cliente :).

A mi me encanta la similitud de un programador con un carpintero.

Aunque, desde mi punto de vista, sería más acertado compararlo con un
ebanista… mucho más fino, entusiasta de su trabajo.

Estoy de acuerdo. Pero la gente en general no sabe diferenciar un
ebanista y nos trata como carpinteros :smiley:

2008/3/12, Jaime I. [email protected]:

El día 12/03/08, Ricardo M. [email protected] escribió:

Estoy de acuerdo. Pero la gente en general no sabe diferenciar un
ebanista y nos trata como carpinteros :smiley:

En ese aspecto, cuando me dicen, “ah, ¿eres informático?” yo respondo “No,
soy programador. Yo no limpio virus ni desatasco impresoras” :smiley:

Yo empecé a identificarme con el término “creativo de software” ahora
me siento más identificado con este otro: “artesano del software”.

Aún sigo buscando… lo de “programador” no me convence.

:slight_smile:

f.

Totalmente deacuerdo contigo jaime en lo de que hay que googlear antes
de
preguntar. Entonces como conclusion de este hilo yo destacaría que
lo que nadie quiere es que haya vagos que preguntan sin intentar buscar
la
solución. Si es esto lo que quisiste decir 100% deacuerdo.

Muchas veces (en la lista) me enseña más una buena pregunta que la
respuesta
en si.

Un saludo a todos los programadores, ebanistas, carpinteros, creativo de
software, artesano del software, vagos, novatos ó personas

El día 12/03/08, Fernando G. [email protected] escribió:

El día 12/03/08, Andrés gutiérrez [email protected] escribió:

Totalmente deacuerdo contigo jaime en lo de que hay que googlear antes de
preguntar. Entonces como conclusion de este hilo yo destacaría que
lo que nadie quiere es que haya vagos que preguntan sin intentar buscar la
solución. Si es esto lo que quisiste decir 100% deacuerdo.

Hola Andrés, aunque pienso que haya que googlear antes que preguntar, lo
que
quería decir no era esto, sino que… Rails no es fácil.

O sea, que no es fácil si alguien viene sabiendo hacer algunas cosillas
con
PHP pero no tiene una base de programación orientada a objetos, etc.

Y pienso también que la culpa la tenemos en gran medida los que vamos
difundiendo Rails, pq insistimos en eso del blog en 15 minutos, etc.
Visto
desde fuera, se suele entender que Rails es “la máquina del botón”, pero
no
lo es para todo el mundo.