miércoles, 24 de septiembre de 2008

Un desarrollo corto

Hace ya un tiempo desarrollé un programa para un amigo. No voy a decir quien es ni donde trabaja porque no se si este programa ha sido ya declarado con sus jefes. Por eso mismo la descripción del problema vendrá un tanto cambiada.

Básicamente mi amigo recibía en forma electrónica un listado de conceptos agrupados desordenadamente (o mejor dicho ordenados según orden de incidencia) mezclados con mucha información adicional innecesaria, muchas veces en el mismo renglón en que figuraba algo interesante.

A partir de ese listado, el debía generar una hoja de cálculo con todas las ocurrencias de algunos de estos conceptos. Para complicar las cosas, el código que describía el concepto podía coincidir con otros dos códigos que realizaban una identificación diferente, en definitiva datos que no nos servían.

A partir de esto, comencé a programar en Python. En menos de dos horas de dedicación no exclusiva tenía un modelo de prueba que cargaba el archivo, procesaba linea por linea y detectaba correctamente uno de los conceptos. Quince minutos más tarde tenía un archivo con la salida ya formateada para ser legible y lo mandé para que mi amigo lo examinara.

Un par de días más tarde retomé el proyecto. Ahora la lógica se complicaba, ya que para procesar dos o más conceptos debía hacer una de dos cosas: Leer todo el archivo para cada concepto, o ir acumulando en forma separada el contenido de cada concepto y grabar ordenadamente al terminar de procesar todo. Me decanté por esta última solución, por parecerme la más eficiente. En media hora tenía tres conceptos identificados. 20 minutos de investigación y pruebas más tarde el archivo de salida era formateado para coincidir con el formato separado por comas que leen las hojas de cálculo Open Office o Excel.

En este momento se produjo mi cambio de trabajo, y pasé de tener montones de tiempo libre a ocuparme en aprender otro lenguaje de programación. Decidí no complicar las cosas desarrollando también el Python a la vez.

A las tres semanas de trabajo, llegó un fin de semana largo, 3 días. El primero de ellos identifiqué la totalidad de los conceptos, en un proceso más largo que complicado. En dos horas tenía los 25 conceptos diferenciados y ordenados, y el archivo produciendo una salida impecable.

El día siguiente lo dediqué a ver interfases gráficas multiplataforma que no fueran tremendamente complicadas. Me terminé decantando por wxpython, que funciona tanto en mi Kubuntu donde desarrollé todo, como en el Windows donde sería usado el programa. Estuve dos horas aprendiendo a usarlo, haciendo pruebas, y luego 45 minutos más para generar una interfase gráfica modesta pero cumplidora, contenida en un archivo separado, y que llamase con los parámetros adecuados al programa que ya funcionaba como yo quería.

En total gasté cerca de 8 horas para desarrollar este programa, incluyendo algunas investigaciones y pruebas adicionales que hice. No soy el programador más veloz de la tierra, esto es virtud del cortísimo ciclo de desarrollo necesario para programar en python. Al ser interpretado, no debo modificar, compilar, ejecutar, interpretar error, modificar, etc. Todo se reduce a modificar, ejecutar, interpretar el error, modificar. La consola interactiva python favorece además la prueba de comandos, ofreciendo la salida directa de los resultados, comando a comando. Esto, que puede parecer casi inútil, es vital al aprender Python, ya que podemos probar cualquier cosa un comando por vez antes o durante la creación de programas con editores de texto plano.

Y por sobre todas las cosas, pude desarrollar facilmente un programa bajo Linux, que ahorra montones de horas de trabajo, para una persona que trabaja bajo Windows, sin necesidad de modificar ni una sola linea para conseguir esto.

No hay comentarios:

Publicar un comentario