¿Cómo desarrollar aplicaciones web con Ruby on Rails? (#2) – El desarrollo ágil de software

Desarrollo ágil

Muchas gracias por volver a visitar Azul Web el día de hoy. Absolutamente fascinados por las maravillas de nuestro mundo y tecnología, estamos comprometidos a seguirles transfiriendo nuestro conocimiento. El día de hoy continuaremos con la serie de Ruby on Rails.

La gran mayoría de los desarrolladores de software en la industria moderna labora bajo una ideología, aunque más bien se le podría llamar estrategia, o plan (vagamente hablando), llamado el desarrollo ágil de software. Comprender el desarrollo ágil es algo increíblemente importante para poder ser productivo en la industria en general y el ambiente de desarrollo de rails, debido a que rails, aún siendo un framework web que se puede usar para cualquier propósito en general, está diseñado por naturaleza para seguir la ideología ágil.

¿A qué se refiere esto?

Desarrollo ágil

Por desarrollo ágil, o desarrollador ágil, se entiende cualquier esfuerzo humano, o programador, que trabaja día a día para crear software siguiendo los lineamientos del manifiesto ágil, aunado o no a el hecho que siga una metodología formalizada para trabajar y medir su trabajo (entiéndase por esto algunas metodologías que han existido desde el origen de la industria, como la metodología de cascada o linear secuencial o el desarrollo en espiral o incremental). El manifiesto ágil fue proclamado al público en 2001, consolidando las ideas de varios líderes de la industria de la ingeniería de software, y hasta la fecha funge como el punto de referencia óptimo para la filosofía ágil.

No se engañen por el hecho de que la piedra angular del desarrollo ágil reside en un documento, el desarrollo ágil es una filosofía que desenfatiza las políticas, formalidades, especificaciones, métricas, mediciones y cronometrajes a la hora de hacer software, apostándole grandemente en vez de ello a la proclividad de los mismos programadores a ser excelentes, inteligentes, auto-dirigidos y altamente responsivos ante circunstancias cambiantes en sus proyectos.

Me permitiré copiar un fragmento del manifiesto para seguirlo explicando:

…A través de este trabajo hemos aprendido a valorar:

Individuos e interacciones – sobre procesos y herramientas
Software funcionando – sobre documentación extensiva
Colaboración con el cliente – sobre negociación contractual
Respuesta ante el cambio – sobre seguir un plan

Esto es, aunque valoramos los elementos de la derecha, valoramos más los de la izquierda.

Rails y el desarrollo ágil

¿Por qué este punto es de importancia? Primero que nada porque seguir la filosofía ágil tiene un efecto excelente tanto en la moral, como la productividad, organización y calidad de un desarrollador. Aparte, en un mundo moderno como en el que nos desenvolvemos, la capacidad de reaccionar ágilmente ante los cambios y adiciones a un proyecto de software, así como la capacidad de ir más allá de lo esperado y solicitado, es lo que distingue a los buenos desarrolladores de los malos, y a las empresas de software mediocres de las grandes.

De igual manera, Rails participa de la filosofía ágil por medio de una ideología alrededor de la cual está diseñado llamada “Convención sobre Configuración“. Aplicar los aspectos de Rails que están diseñados alrededor de los principios de la convención sobre configuración te dará cimientos técnicos para ser ágil en tu día a día y poder entregar más software, más rápido.

Convención sobre Configuración

Convención sobre configuración es el nombre de un concepto de programación que establece que entre menos partes cambiables haya en un proyecto de software, que no obedezcan a la creación de la solución de cómputo específica que se desea elaborar, sin perder flexibilidad, mejor. Dicho de otra manera: entre menos decisiones tenga que hacer sobre el proyecto antes de poder empezar a programar, mejor, o si me es posible sólo elaborar las partes no convencionales de mi software, y usar todas las partes convencionales de la misma manera que los mejores en la industria ya lo están usando, sin tener que reinventar el hilo negro cada vez, mejor.

Rails asume que quieres hacer las cosas para tu aplicación de una determinada manera, y te empuja a que las hagas de dicha manera, sin forzarte ni obligarte. Ultimadamente, en caso de ser deseado, también te da libertades para romper las convenciones en caso de que sea deseado o necesario; sin embargo, muchas veces encontrarás que si sigues la convención, en vez de ponerte a configurar, puedes empezar a hacer mejor trabajo más rápido que con otros recursos. Esto te ahorra innumerables horas y energía resolviendo problemas que de otra manera puedes enfocar a elaborar tus aplicaciones más ricamente: ¿A quién no le ha dado problemas la instalación de una IDE, un compilador, un servidor web, o una librería de desarrollo por ejemplo, de PHP o Java? ¿No les ha causado frustración no tener un camino claro de por dónde empezar a trabajar al empezar un proyecto de desarrollo, cuando lo único que tienen es la idea en mente? La convención sobre configuración está orientada a disipar esas preocupaciones.

La manera en la que el desarrollo ágil y la convención sobre configuración convergen en Rails es en algunas de sus características técnicas (que se verán a detalle en los siguientes artículos de esta serie) como:

-scaffolding
-migraciones de bases de datos
-generadores y destructores
-pruebas unitarias y desarrollo orientado a pruebas (TDD)
-convenciones de nombres para variables, clases, módulos, y directorios
-patrones de diseño (de especial importancia el patrón MVC, que también será explicado a detalle en un artículo futuro)

Un ejemplo: la mayoría de las aplicaciones web que usas día a día son las siguientes:

-Facebook
-Twitter
-Inbox (Gmail)
-Github
-Google
-Azulweb (nuestro sitio 😉

TODAS estas aplicaciones comparten varios aspectos en su diseño:

-Necesaria cuenta de usuario para acceder (usuario y contraseña). Funciones de log in, y log out.
Barra de herramientas en la vista principal, en la parte superior, usualmente con un botón en la esquina superior izquierda para recargar la vista principal.
-Barra de búsqueda.
-Permitirle a cada usuario agregar y visualizar recursos unitarios (usualmente conocidos como “posts“), identificados por una clave y una estampa de tiempo.
-Una vista principal con un “muro” o “línea de tiempo” que ordena todos los “posts” en orden cronológico.
Perfil de usuario y sección para editar sus detalles.
-Sección de configuración de la cuenta para editar los datos personales.
-Etc…

Suponinendo que deseen crear una nueva aplicación, muy, muy posiblemente implementarán esos mismos exactos aspectos, o versiones muy similares de ellos en su aplicación. Aquí es donde rails excele: el ecosistema de Rails está lleno de convenciones, técnicas, herramientas y maneras de trabajar que te permiten realizar esas características rápida y profesionalmente, sin sacrificar flexibilidad, efectividad, ni capacidad.

De igual manera, la comunidad internacional de Rails ha liberado componentes, llamados “gemas”, los cuales presentan soluciones pre-empaquetadas que te proveen con alguna de las funcionalidades usuales lista para usar. De la misma manera que, cuando vas a hacer un pastel, no vas a una granja a ordeñar a una vaca, a cultivar el trigo y hacer la harina, cultivar levadura, y criar gallinas para obtener huevos, sino que… acudes a un supermercado a rápidamente comprar leche, harina, levadura y huevo preempaquetados, y sigues una receta de cocina pre-escrita para lograr tu resultado, la convención sobre configuración te permite ser ágil y productivo sin sacrificar tiempo de más.

* * *

Hasta aquí llegamos por el día de hoy en la serie de Ruby on Rails. Les prometo que a la siguiente ya nos pondremos a hacer cosas en la pc ;). Sigan a Azulweb.net en facebook, twitter y en esta página para estar bien enterados del siguiente artículo de la serie de Ruby on Rails. Hasta la próxima.

Descargar este artículo en PDF

Lo sentimos, esta opción solo está disponible para los socios. Más información de nuestro grupo de socios.


Alfredo Gallegos
Desarrollador de software Rubyista y Pythonista de Monterrey MX en búsqueda eterna de la iluminación y la comunidad. Me la paso hablando sobre mis gustos y mis negocios en alfredo.moe y me pueden seguir en @nullset2

Déjanos un comentario:

Deja un comentario