miércoles, 13 de agosto de 2008

¿De dónde sale ese olor?

En este preciso momento le estamos poniendo el moño a una versión de nuestra aplicación principal con vistas a una certificación bastante exigente, que incluye auditoría del código. Hay que imaginarse la situación del negocio: una vez certificada, cada corrección en la versión insumirá los $$$ correspondientes a las horas de laboratorio necesarias para aprobarla de forma que no se pierda el aval... y no regalan la hora, precisamente.

Cuestión que mi vida laboral en estos días ha sido un constante ping-pong entre un par de cuestiones amplias (de esas que llevan al menos unos días) y un millón de micro-incidentes que se van llevando 10 minutos, 15 minutos, 1 hora... más el tiempo necesario para cambiar de tarea.

Lo extraño es... soy más productivo así. Muchas veces, cuando me enfrento a tareas de largo tiro quedo "colgado" en la búsqueda de alguna idea que resuelva una cuestión que me impide seguir. Al tener un bonito stock de tareas de menor alcance (y también de menor exigencia de concentración), logro ese estado que describía en "Codificando... divagando... es lo mismo", al tiempo que combato la inevitable ansiedad que se produce al no estar codificando (por más experiencia que uno tenga, en algún punto del cerebro sigue encerrado ese tumor que dice "si no estás tecleando no estás trabajando").

No hay con qué darle. Por más tonto que parezca una buena cantidad de cuestiones menores (pero necesarias) resueltas en medio día levantan el ánimo y nos preparan para la hora de airear ese muerto maloliente que se está pudriendo debajo de la alfombra.

Y así tangencialmente, llego al centro de la cuestión, ponerle el moño a la aplicación. Como decía, es importante... un segundo, ¿de dónde sale ese olor?

  • Mmmm... necesito arreglar el incidente ése del ítem de menú que pertenece a más de un módulo... ¿Cómo definimos los menúes? Ah, si... para cada módulo varios menúes... psssss, qué olor.
  • Ah, en los ABM genéricos hay que desactivar las funcionalidades no permitidas de acuerdo a determinado estado del sistema. A ver... ah, es un componente independiente que actualiza directamente la base de datos... ¡cuántos gusanos!
  • Todo cumple con las especificaciones. Para borrar un cuestionario tengo que borrar a mano todas las preguntas asociadas, si no es peligroso. Pueden haber cientos de preguntas asociadas a un formulario... a ver... selecciono (sólo puedo una), click, detalle, eliminar, aceptar... selecciono otra, click, detalle, eliminar, aceptar... ¿levanto la perdiz o traigo la pala?
  • Bien, ahora sólo tengo que reutilizar esta clase, que por suerte está bien encapsula... ¿¡qué es este agujero!?
  • ¿Alguien sabe para qué sirve el método "object FactoryBackdoor(string className)"? (Respuesta: silencio)

Se entendió el punto. Toda aplicación tiene un cuartito con olor extraño y muchas moscas, (si no pregúntenle a Microsoft).

¿Cómo se define un muerto? Arriesgo una teoría:

  • Al menos uno del equipo sabe que está ahí.
  • La funcionalidad no es central.
  • El problema crece (se pudre) lenta pero ininterrumpidamente.
  • Se encuentra en un área del código que cae bajo la responsabilidad de más de una persona... o ninguna.
  • Pero por más encerrado que esté "en algo" (el olor) afecta al resto de la aplicación.
  • La corrección puede ser obvia pero muy trabajosa o peligrosa de implementar.

¿Y cuáles son los síntomas?

  • Algo se hace cada vez más grande, o algo se hace cada vez más lento.
  • En la reunión de avance tal tema se da como "implementado". Alguien está mirando al suelo. No hay comentarios.
  • Ciertas conversaciones se interrumpen o cambian rápidamente al aproximarse un analista o el líder de proyecto.
  • Alguien se queda sistemáticamente un rato más, sin que nadie se lo pida (probablemente esté moviendo el cadáver).
  • Surgen ideas locas para problemas aparentemente simples. Todos los programadores buscan la forma de no tocar "tal cosa".
  • Un incidente rebota como pelota de ping pong (a mí me rebota y a vos te explota).
  • Che, ¿cómo puedo hacer "tal cosa"? Cric-cric (grillos, todos muy concentrados en su trabajo).
  • Todos estamos tranquilos, pero alguien está muy nervioso.
  • Para alguna tarea sencilla alguien presupuesta un número desproporcionado de horas (o sabe lo que se va a encontrar, o piensa quemar el cadáver ocultándose en esas horas).
  • Intercambio de miradas cómplices, conversaciones en voz baja ("sé lo que hiciste la semana pasada").

¿Mas definiciones / ejemplos? Manden a los comentarios.

No hay comentarios.: