Archivos Mensuales: noviembre 2011

Refactoring Vs Reengineering

Refactorizar es modificar tu código cubierto por pruebas, la reingeniería es modificar tu código y rezar. Más o menos esto es lo que dijo Hamlet D’Arcy en el Greach 2011 en Madrid. Y no puedo estar más de acuerdo, Una de las grandes cosas de tener tu código cubierto por pruebas, es que puede refactorizar ese código que no escribiste tan bien ( directamente lo escribiste mal, a mi me pasa mucho), sin tener que preocuparte de si va a seguir funcionando o no, porque sabes que funciona. Vale, esto es una verdad a medias, porque:

  1. Igual el test no está bien escrito.
  2. Igual lo tienes que probar a mano.
  3. Igual algo en lo que no habías pensado va mal.
Pero aún así, es mucho mejor que la certeza de que no tienes ni idea de si funciona como antes sin hacer una prueba manual. O mejor dicho, tienes la certeza de que algo irá mal, por eso lo pruebas, porque no eres perfecto y cometes errores. Y además esas pruebas estarán ahí en el futuro para seguir haciendo tu código más robusto.

Anuncios
Etiquetado , , ,

Waste

En la pasada CAS 2011, Xabier Quesada en su conferencia insistió bastante en lo ineficiente de algunas organizaciones, y lo costoso que esto resulta para el rendimiento general de la organización, cualquiera que sea el objetivo de esta. Eso es “Waste“, lo que perdemos al no acertar con el producto deseado, el coste que tiene volver a hacerlo, o la perdida de satisfacción por renunciar a la calidad (por no volver a hacerlo)

En mi organización, o mejor dicho, en el subconjunto de la organización donde trabajo, el Departamento de Sistemas de Información, nos dedicamos a hacer software que solucione problemas al ciudadano, y muchas veces esto supone solucionar problemas también al personal municipal con el que los ciudadanos se relacionan.

Pero a veces se nos olvida cual es el fin último del trabajo propio. Últimamente he estado lidiando con un problema administrativo que me ha dejado claro, por si no lo tenía ya, lo ineficiente de la desconfianza, de las estructuras rígidas, y en último lugar, de los objetivos desalineados dentro de una organización.

Lo plantearemos como un caso de prueba:

When: Aitor necesita formación AND planea asistir al Greach en Madrid Then: Función Pública le tramita los viajes El tramite es indoloro y rápido. Given: Su jefatura, la Dirección y la Concejala responsables le han autorizado al respecto.

La prueba, como puedes suponer, da error. Analicemos las causas:

* Contexto de crisis. Se recortan los gastos, tanto que el transporte público es el transporte preferente. Parece que los aviones de líneas regulares no son transporte público, con lo que la alternativa desde Bilbao a Madrid es el tren (reseñado expresamente desde función pública). El problema es que el tren desde Bilbao tarda 5h. Sumando viajes y jornada el día no da de sí, con lo que hay que hacer noche, y si a esto le unes el hecho de que los horarios son limitados, resulta en dos noches en Madrid.

* El mecanismo de gestión no esta preparado para procesar esta entrada compleja; tan sólo sabe que el viaje TIENE que ser en tren. Amablemente le hago notar a la persona que me lo gestiona, que quizá el vuelo en el día sea hasta más barato que todo lo demás junto, por no hablar del número de horas que implica. (Nota: nunca sabré si todas esas horas de viaje se computan como horas trabajadas o similar; sospecho que no porque trabajo 7,5 al día y la jornada entre viajes y tal me supone de 6-23h).

Después del colapso que supone el intentar modificar el comportamiento por defecto de la administración (es totalmente Convention over Configuration y la configuración es difícilmente modificable), resulta que lo consigo. Me dan la razón, pero no se mueve “porque aún falta un més y sería una pena perder el billete”. Vale, esperamos ese mes y resulta que el horario que tiene la agencia es salir a las 9 y volver a las 17. El evento es de 9:00 a 20:00, y ya que vamos procuremos asistir ¿no? Total, que me busco el billete (que me cuesta un poco más de la mitad que el oficial ¿WTF? ¿Para que hacemos los concursos?), y me conceden permiso para poder volar.

En resumen, horas perdidas y mucha bilis generada. ¿No podríamos eliminar este “waste”?

Conclusiones finales:

  • Probablemente hace 20 años necesitábamos alguien que nos gestionase los viajes. Hoy en día son 5 minutos y google.
  • Es necesario alinear los objetivos. El de Función Pública es no gastar dinero, el mío asistir. Seguramente algo como “Asistir gastando la mínima cantidad de dinero” valdría. Pero parece que eso no es posible, porque siempre se gasta la máxima cantidad. La desconfianza es ineficiente.
  • Cualquier día de estos me borro. Y si no lo he hecho ya es porque soy un cobarde no muy eficiente. Quizá mi sino sea ser “funcionario”. De momento soy desarrollador trabajando en la Administración Pública (o eso creo).
Etiquetado , ,