domingo, 24 de agosto de 2008

Asteroides

La Nube de Oort es una nube de cometas que se cree se encuentra en el límite del Sistema Solar, a una distancia aproximada de 100.000 UA ó 1 1/2 años luz del Sol. Se ha calculado estadísticamente que puede haber entre uno y cien billones (1012 – 1014) de cometas. [...] El efecto gravitatorio de las estrellas próximas desvía a los cometas de sus órbitas y los envía hacia el Sol, donde se vuelven visibles.

Wikipedia - Nube de Oort

Todo ambiente de desarrollo está rodeado de una nube de requerimientos suspendidos en delicado balance en los límites del negocio. Algunos son conocidos, la mayoría no. De vez en cuando alguno de ellos cae y debe ser manejado de alguna manera. Léase esquivado o absorbido por uno o varios integrantes del equipo. De tiempo en tiempo una gran perturbación en esta nube, una explosión o el paso de alguna mala estrella puede provocar una verdadera lluvia de estos objetos.

Tal ha sido el caso de la semana pasada. En principio apareció un cometa de polémicas dimensiones. Desde el punto de vista del líder de proyecto, apenas una simpática piedrita que aparecía para decorar el firmamento por un par de horas. Desde el punto de vista del líder técnico y de uno de los integrantes de más experiencia, un asteroide amenazador que avanzaba en picada siguiendo un peligroso rumbo de colisión hacia lo más delicado de un sistema ya bastante golpeado.

Como muchas veces sucede, nos fuimos enterando de las verdaderas dimensiones y características del objeto cuanto más cerca estaba de nuestras cabezas. Resultó ser de esos que luego del primer impacto esparcen peligrosas esquirlas por todos lados.

Yo observaba la escena desde una distancia prudencial. Tenía algunos pequeños asteroides propios que destruir y me entretenía en ello, levantando de vez en cuando la mirada para ver pasar alguna de estas piedras convertida en estrella fugaz. Lindo despliegue.

Así, distraído con el espectáculo principal, no noté el acercamiento de un pequeño asteroide que se aproximaba dando tumbos, rebotando de aquí para allá, sin decidirse a adoptar un rumbo fijo.

La primera vez que lo ví ya había impactado en mi escritorio, dejando un pequeño cráter rodeado de una nube de polvo. Era un reporte.

Hacer reportes tiene sus bemoles. Uno de vez en cuando es divertido. Hay que investigar el negocio para ver cómo se consiguen los datos. Esta parte me gusta, aparecen complicadas relaciones entre un sinfín de tablas y cálculos extraños que hay que resolver con algo de ingenio. Luego, a jugar con SQL. Y aquí se acaba la gracia. Porque una vez que uno tiene la consulta la cosa está cocinada, no hay mucho más que pensar pero... no alcanza con ello. Hay que hacer el reporte.

Y aquí empieza: que dos cuadros separados por algún criterio que no es el más cómodo para obtener los datos, luego que no me entran los datos en la página, luego alinear un sinfín de columnas, luego que la columna "cantidad" me aparece con decimales... y cuando ya tenemos una miríada de detalles menores resueltos... "no, mejor esta columna la pasamos acá" y de vuelta a alinear y reacomodar. La herramienta que manejamos (Crystal Reports, por una situación de muchos "legacy reports"), si bien es completa, de vez en cuando se tara de mala manera (usualmente con un detalle nimio pero que "no puede quedar así") y nos roba un buen par de horas fuera de agenda.

Viendo entonces que el objeto era un reporte, soplé un poco para apartar la nube de polvo y ver la definición... me encontré con un par de instrucciones SQL. Mmmmmm.... ¿qué es esto? Esperaba más bien un documento o una hoja garabateada que indicara el formato y algún ejemplo.

La intención era clara. Estos son los datos, hay que armar el reporte. Ajá. Me acordé de División de tareas, donde citaba proféticamente:

Vos vení con problemas y yo te doy soluciones. Si me venís con soluciones, te voy a dar problemas.

Dicho y hecho. Me había caído no un requerimiento sino una solución. Y como toda solución, tenía sus problemas.

En principio no abarcaba el formato del reporte. Este dato vino en la forma de otro asteroide proveniente de un sector diferente de la nube que no guardaba relación aparente con el primero. Así que había que ajustarlos, ya que no encajaban.

Para seguir se volvió claro, luego de un par de minutos de trabajo, que tenía ante mí un boceto de alguna intención que yo podía más o menos entrever intuitivamente. Pero tenia algunas contradicciones respecto de algunas partes del negocio que yo conocía. Esto también había que resolverlo.

A esta altura del partido he aprendido a reclamarle peras al olmo constantemente (casi por deporte), pero sin quedarme sentado a esperarlas. Es divertido ver todo lo que se puede avanzar a ciegas. Hice bastante (a mi entender) sin saber demasiado bien qué era lo que estaba haciendo. Un poco de olfato, un poco de oficio, bastante de saber a quién preguntar dónde buscar. Trabajo detectivesco.

Pero por más garra que uno le ponga, en algún momento iba a ser necesario entender hacia dónde me dirigía. Tres o cuatro días después de empezar, ya un poco cansado, logré entender qué estaba haciendo. Es decir, logré que me explicaran, de-una-forma-en-la-que-yo-pueda-entender (sí, soy un poco lento) el objetivo del negocio, el concepto detrás de esos datos.

Sólo para darme cuenta de que a la luz de este objetivo se percibían dos o tres "pequeños detalles menores" a corregir (irónico, por si no lo notaron), que al fin y al cabo el requerimiento no era tan complicado de expresar y que si lo hubiese tenido desde el principio no me hubiese costado tanto.

En resumen, intenté ir desde un boceto de solución hasta el requerimiento original, por supuesto que no lo logré, finalmente me lo explicaron y con ello corregí lo que había hecho hasta llegar a una nueva solución. Que no creo que esté del todo bien, pero por lo menos ahora es contrastable con respecto a ese objetivo y por lo tanto corregible.

Por ahora los dejo masticando la anécdota de la que creo que pueden derivarse varias cuestiones teóricas... va para otro post. Habría que redondear un poco más lo siguiente: hay un montón de blogs de desarrolladores contando anécdotas quejosas más o menos parecidas, con mayor o menor gracia. Por otro lado tengo un buen par de blogs donde se discuten las famosas "cuestiones teóricas"... rara vez se cruzan estos dos enfoques.

Actualización: La historia continúa en Requerimientos: cuando no son asteroides sino sólo polvo cósmico.

No hay comentarios.: