2012/01/20

En el Dojo

Hoy asistí a un dojo de programación. Me ha parecido una experiencia muy enriquecedora.

Un dojo de programación trata de seguir la idea de un dojo de artes marciales en cuanto a formar un ambiente donde podamos ejercitarnos fuera de la contienda real (que viene a ser el día a día con los proyectos que desarrollamos).

La práctica se trató esta vez de usar TDD y una especie de Pair Programming para resolver el problema de convertir números arábigos, los que usamos normalmente, a la notación romana.

TDD son las iniciales de Test Driven Development, Desarrollo Guiado por Pruebas. Pablo Tortorella, quien nos guiaba, dijo que le parecía mejor pensar en Desarrollo Guiado por Ejemplos, ya que una prueba es en realidad un caso particular que ponemos como ejemplo para que el programa que hacemos lo intente resolver. Un ambiente de pruebas toma la prueba y la lleva a cabo a ver si el programa la pasa. Entonces, en TDD: 1) definimos una prueba simple 2) corremos la prueba (incluso sin tener ningún programa; es importante ver que falla) 3) se enfoca uno en implementar en el programa lo mínimo necesario hasta lograr pasar la prueba 4) si se nota que algo puede refactorizarse (simplificar, eliminar duplicaciones o dependencias innecesarias), hacerlo, luego pasar al paso 1) e ir repitiendo el ciclo, con pasitos de bebe, dejando que el programa evolucione hasta el nivel que deseemos.

Para alguien habituado a programar al estilo tradicional, donde se pretende resolver todo el problema en la fase de diseño, antes incluso de empezar a programar, puede costar un poco enfocarse en pequeños pasos y no intentar codificar toda la solución de una vez. Pero el estilo tradicional realmente tiene problemas. Precisamente en respuesta a esos problemas surgieron cosas como la eXtreme Programming, TDD y Agile.

En el caso del problema de la conversión a números romanos, probablemente uno imagine ahora, sin necesidad de programar, una manera de resolver el problema y podría programarla en un rato. Pero, deténgase y trate de hacerlo en pequeños pasos, ideando una prueba simple y trivial cada vez, para ver a dónde va conduciendo.

Con el dojo me di cuenta que, conforme avanzan las iteraciones, van apareciendo patrones que van sugiriendo la solución. El tiempo de la práctica se acabó, pero creo que eventualmente llegaríamos a solucionar el problema.

Camino de regreso, recordaba la forma en que el código iba proponiéndose y refactorizándose. Había cierto algoritmo en eso. Me pregunto si sería posible programar a una computadora para que halle esa solución evolutiva usando TDD. Quizás sí. Entonces, me pregunto si sería posible que una computadora, o un conjunto de computadoras, realizando pequeños pasos de bebe, resolviendo casos triviales, puedan resolver cualquier tipo de problema de programación, simplemente por evolución, usando TDD. Me pregunto si será ese el futuro.

Crédito de la imagen: CIO Dojo

2012/01/03

La libertad de llegar al otro lado

Había una vez un barquero que ayudaba a la gente a cruzar de un lado a otro del río.

Antaño hacía mucho frío y eran muy fuertes las corrientes que cruzaban el agua helada. Había que recorrer un camino largo, que pasaba por un monasterio, para llegar a un puente donde se podía cruzar.

El barquero tuvo que traer madera de muy lejos, cuerdas fuertes y brea y hacer varias pruebas antes de lograr una embarcación que lograra cruzar el río en el punto donde la gente más lo necesitaba.

Los primeros viajes fueron para los sacerdotes, que habían visto con recelo la construcción del aparato. Algunos criticaron que no tenia la estabilidad del puente del monasterio y que sería mejor prohibirlo, para proteger a la gente. Pero cruzaban ya los nobles y cada vez más gente, así que decidieron que dejarían al barquero en paz con tal de que les pagara el impuesto correspondiente. La gente le daba sus monedas al barquero y la décima parte de estas llegaba al monasterio. Además, la gente podía pasar sólo las cosas que el monasterio permitía.

Aparecieron otros barqueros para resolver las largas colas que se estaban comenzando a formar, pues un solo barco no bastaba para todos los viajeros que cruzaban por ahí. El monasterio los dejaba prosperar con tal que le pagaran su impuesto.

Un pueblo empezó a formarse en el punto donde cruzaba la gente, para atender a los muchos viajeros que ahora preferían esta ruta.

No era fácil conseguir lo que se necesitaba para hacer un barco ni era fácil conducirlo por aquellas aguas agrestes. Los barqueros, con el tiempo, decidieron que era injusto el impuesto que le pagaban al monasterio y dejaron de dárselo. Como los pasajes bajaron de precio y les permitieron pasar mas cosas que antes, la gente apoyó la decisión.

Los tiempos cambiaron. El río se volvió más amigable. Un día, alguien ideó una manera sencilla de hacerse una canoa y poder cruzar también. No se iba en los asientos de cuero de los barcos, ni servían té y panecillos, pero era suficiente para quienes querían un modo económico de cruzar.

Los barqueros se opusieron al nuevo invento, aduciendo que ponía en peligro a la gente.

Pero, como no pudieron detener a la gente que los seguía usando, decidieron reclamar al Señor de esas tierras, para que este declarara que el río era propiedad natural de los barqueros, del mismo modo que un martillo era propiedad natural de un carpintero, o un rastrillo la propiedad natural de un jardinero. Uno podría seguir usando canoas, siempre y cuando algún barquero le diera permiso de pasar por su parte del río.

Los barqueros se convirtieron en protectores del río. El Señor se convirtió en protector de los barqueros. Y como tal, recibía ahora los impuestos que antes recibiera el monasterio.

Un día un grupo de viajeros decidió plantar altos pilares en cada orilla, llevar cuerdas de un lado a otro y tender un puente colgante. La gente podía cruzar con más fluidez, sin pagar nada y con libertad de llevar cualquier cosa que quisiera.

Los barqueros se escandalizaron y se opusieron firmemente al puente, a pesar de que solucionaba el problema inicial. Qué iba a ser de ellos y su modo de vida. Anunciaron que la prosperidad del pueblo se vería afectada. Clamaron por sus derechos ante el Señor.

Quienes tendieron el puente mostraron que no estaban tocando el río de los barqueros y el Señor tuvo que admitir que tenían razón y la gente podía usar lo que mejor le pareciera. Por un tiempo así fue.

Pero los barqueros insistieron, haciéndole ver al Señor que obtendría menos impuestos. Y, por supuesto, del peligro que representaba el puente para la seguridad del reino, cuando no se podía controlar las cosas que podían pasar de un lado a otro del río.

Un día se anunció que un espía proveniente de un reino enemigo había intentado cruzar el puente con intenciones oscuras. Había sido tan hábil con las armas como lo eran los hombres de la guardia del señor. Pero, por supuesto, era del otro reino porque usaba ese atuendo. Felizmente lo pudieron neutralizar.

Como se demostró que el puente podía ser peligroso, se ordenó controlar no sólo qué cosas podían pasar, sino qué personas tenían el derecho de hacerlo. En cada extremo del puente, la gente se quitaba los zapatos y se los volvía a poner luego que los guardianes del Señor los habían revisado. Por otro lado, en el palacio consideraban invadir al reino que envió al invasor, por el terror que estaba ocasionando.

Un día, el río cambió. El nivel bajó y era posible hallar sendas donde cruzar sin que el agua llegara más arriba de las rodillas. Cualquiera podría ir y venir sin usar barcos o puentes.

Pero los barqueros prohibieron que se hiciera tal cosa. Insistían en que tenían el derecho natural de proteger el río.

Una noche, cansados de que el Señor prefiriera a unos pocos barqueros por encima de todo el pueblo, todos los jóvenes se acercaron a la orilla y esperaron en silencio. Al amanecer, fueron cruzando. Aunque los barqueros vociferaban por sus derechos y se quejaban ante sus padres y los hombres del Señor intentaban detenerlos, no podían.

En el transcurso de la mañana, también sus padres y toda la demás gente se les unió, en una sola fuerza. Porque eran más. Porque eran la razón de que los barcos. Porque eran la razón de los puentes. Porque se dieron cuenta que eran también la razón del Señor.