Django, metodologías agiles y calidad del software

Muchos programadores, entre los que estaba yo mismo, piensan que codificar es todo su trabajo, como mucho documentar someramente el código por el que dirán. La gestión de proyectos, para estos programadores, también suele reducirse a: nos sentamos cinco minutos a pensar que queremos que haga nuestro software y después a teclear, cientos, miles, decenas de miles de lineas de código ¡Que bonito es mi código y que bien funciona! Es la única conclusión posible, puesto que hace exactamente lo que el programador ha pensado que tiene que hacer.

En los últimos años, he aprendido que tener claros los requisitos, poder contrastarlos contra lo que vamos desarrollando y conocer el feedback del cliente con la mayor brevedad posible, son imprescindibles*. También que intentar implantar complejísimos sistemas de gestión que impliquen complicados procesos de aprobación y validación, documentación, pruebas y encajes de bolillo, es peor aun, porque encarece brutalmente el producto sin ofrecer nada (alguno podrá decir, airadamente, que ofrece mayor calidad, allá el si cree que es así).

Las metodologías agiles nos han enseñado que se puede reducir el “overhead” de la gestión en los proyectos, pero con sus limitaciones y siempre basándose en una premisa fundamental, un desarrollador es un profesional altamente cualificado que trabaja fenomenalmente en equipo y se responsabiliza de su trabajo. Para que nos entendamos, que seamos unos freaky de cuidado.

Aquí enlazaré con Django; este framework tiene como mayor ventaja que elimina muchísimo trabajo repetitivo y de poco valor, de forma muy elegante, como desventaja que presupone que el programador es bueno y si no lo es que se dedique a otra cosa  (probablemente pensaron que para los malos programadores ya hay muchas herramientas, todas las demás :p). Elimina mucho trabajo de codificación,  también de pruebas y testeo, ya que las funcionalidades que nos ofrece: funcionan; pero, sobretodo, trabajo de teclear lineas de programa, por lo que podríamos pensar inicialmente que el trabajo se vera reducido a la mitad, cuando en realidad el trabajo de picar, es solo una parte.

Es importante al trabajar con Django, cambiar la forma de pensar, adaptarla a la realidad de un lenguaje (Python) y un framework que simplifican la vida del programador, que se puede dedicar a diseñar y construir la mejor solución posible para el cliente, pero también a probar y asegurar la consistencia de la aplicación. La gestión de proyecto, no pasa a ser menos importante porque se codifique menos para conseguir lo mismo.

A raíz de la implantación que estamos llevando a cabo de SPICE, hemos comenzado el desarrollo de una pequeña herramienta de gestión de proyectos basada en FDD (en realidad en Gestión de Funcionalidades by Okkum -GFO-, que es nuestra versión de Feature Driven Development). La estamos haciendo en Django, no podía ser de otra manera, y esperamos tener la primera versión, más o menos operativa, la semana que viene. A algunos os parecerá reinventar la rueda, lo es. Para nosotros, tener una metodología ágil que se adapte a la norma ISO 15504 es fundamental y tener una herramienta software para facilitarnos la vida, también, y no hemos encontrado una solución estandar en el mercado que nos convenciera.

Integrar los procesos de SPICE en nuestras tareas diarias es la única forma de conseguir mejorar la calidad y asegurar el éxito de los proyectos, por mucho que Django nos aseguré que pasaremos menos horas picando, tenemos que concienciarnos en que un proyecto solo esta acabado si esta:

¡¡¡Codificado, comentado, comprobado,integrado, revisado, 
test unitarios pasados, desplegado para testeo, aceptado 
por el usuario y documentado!!!

Con Django, además de codificar menos y más rápido, la documentación es más sencilla, puesto que muchas de las decisiones de diseño estan predeterminadas por la propia herramienta y con aplicaciones como Selenium y unittest, los test unitarios y funcionales pueden integrarse facilmente con soluciones como Hudson o CruiseControl, así que si para cada requerimiento de cliente que hemos definido  podemos tener un test funcional realizado con Selenium.

Sin animo de ser pesado, es fundamental a la hora de la gestión de un proyecto, ser capaces de estimar cuanto vamos a tardar en hacer todo esto y no solo una parte de ello. Pero el tema de la estimación de tiempos lo dejamos para otro día.

*Si, ya se que me lo contaron cientos de veces en la universidad, pero seguro que tampoco cambias tus contraseñas periódicamente, ni haces copias de seguridad.

Anuncios

Un comentario en “Django, metodologías agiles y calidad del software

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