JCastaneyra blog

My ideas repo

Ruby on Rails, desarrollo ágil y mis divagaciones

| Comments

De hace un mes para acá he andado en una de mis divagaciones internas, de esas que me suelen dar, esas como cómo podría poner un negocio y de qué, o de cómo poder generar más dinero, en fin, esas que luego no me dejan dormir. Sucede que de un mes para acá he estado pensando como poder desarrollar software para negocios pequeños y medianos, de siempre yo he desarrollado para empresas grandes, y obviamente para proyectos grandes, donde mi participación queda en una pequeña parte del proyecto, nunca he hecho algo para un posible cliente, tanto pequeño o grande, ajeno al ambiente de una empresa grande, esto no se me ha dado, y aunque se me hubiera dado probablemente lo habría rechazado, el ¿porqué?, bueno esto hubiera sido porque a mi percepción los desarrollos de lo que sea siempre son lentos, independientemente de la curva de aprendizaje de alguna tecnología (que para mi sigue siendo algo lento), el analisis, el desarrollo y las pruebas son lentas, entonces, dentro de mis divagaciones internas me puse a pensar si ¿habrá alguna tecnología que me ayude o nos ayude a nosotros los desarrolladores a hacer un desarrollo ágil?, debe de haberla, digo, no es por nada de que haya bastantes libros sobre desarrollo ágil.

Entonces me encontré, que para el desarrollo, al menos en aplicaciones web, hay un framework, este framework ya tiene más de un par de años en el mercado, y este es Ruby on Rails, no voy a hablar nada del framework como tal ni del lenguaje Ruby, lo que si puedo decir es de que acabo de adquirir un par de libros, y si puedo ver que el desarrollo en aplicaciones web si se agiliza bastante, digo, aún así yo no tengo mucha experiencia en desarrollo web, pero dentro de las pocas prácticas personales que he hecho, al menos con Java, jsp’s, jsf, ha sido algo pesado de llevar, porque de repente empiezan a haber un buen de archivos xml de configuración, y si hubiese un errorcito, para encontrarlo puede llegar a ser frustrante.

Bueno, pero eso es con respecto al desarrollo web, y el decir que puede ser ágil es subjetivo, porque también hay que superar la curva de aprendizaje, aunque esto podría ser algo más rapido con Ruby on Rails que por ejemplo con las tecnologías de Java (servlets, jsp’s, jsf), ahora bien, con respecto a aplicaciones de escritorio ¿como se podría llevar a cabo un desarrollo ágil con las tecnologías que hay?, pues aquí si parece que no está muy claro para mi esta cuestión.

A toda esta divagación tuve la osadía de agregarle más confusión, y leerme algunos artículos, un libro y una tesis doctoral, con el libro de 37signals (“Getting real”) donde habla de desarrollos sencillos y que cumplan con la función principal que resuelve una necesidad, sin agregar complejidad por funcionalidad que bien podría no ser necesaria, pero esto creo que puede servir para desarrollos web, pero para aplicaciones de escritorio tengo mis dudas. También, con la tesis doctoral de Florian Moritz donde habla de la convergencia de aplicaciones web con aplicaciones de escritorio, y las diferentes tecnologías que existen y que están tratando de alcanzar este punto, como las muy mentadas RIA (Rich Internet Applications).

Y bien, aterrizando un poco todo esto, y volviendo a lo que decía en un principio sobre las aplicaciones para clientes pequeños y/o medianos, por ejemplo, si yo tuviera un cliente que quiere una aplicación que sólo corriera en una sóla máquina (el giro de la empresa podría ser cualquiera y que fuera necesario tener datos persistentes), y que después quisiera migrar su aplicación a un sistema multiusuarios, y que posteriormente se requiriera esta aplicación que funcionara como una aplicación global para dar servicio a muchas sucursales, ¿como podría lograr esto de una manera ágil? ¿Como podría hacerla transparente a la migración? ¿Cómo podría hacerla consistente con respecto a la interfaz de usuario, con tal de que no cause impacto de la migración de aplicación de escritorio a aplicación global? ¿Podría funcionar Ruby on Rails aquí, y hacer una aplicación web y tenerla en una máquina local como si fuera una aplicación de escritorio, y con esto sólo quedaría en centralizar la base de datos acorde a cada una de las migraciones? ¿O tendría que hacer uso de una combinación de tecnologías, como Java, AIR (el framework de Adobe), openlaszlo?

De veras que me gusta complicarme la vida, y cuando estaba terminando de escribir este post, llega una posibilidad de poner en práctica esto que estoy poniendo aquí.

Comments