Reflexionando sobre escribir programas …

17 Sep

… a raíz de un encargo que mi empresa ha hecho a un proveedor externo.

Dicho proveedor ha sido el encargado de construir y diseñar la página web en Drupal los últimos dos años, creo. Comenzaron estupendamente porque nos comunicamos bien y comprendieron el enfoque de trabajo que quería darle: pequeñas tareas independientes, realizables y cobrables casi por separado, de manera que los jefes pudiesen ver algo a menudo y ellos estuviesen ingresando dinero regularmente.

Con el tiempo no tengo muy claro qué paso, pero todo empezó a ir a peor. No sólo teníamos problemas de comprensión mutua si no que sus presupuestos eran cada vez más escasos en detalles técnicos y de requerimientos. Culpa en mía en parte porque lo dejé pasar mientras conseguía resultados y yo podía dedicarme a otras cosas, aunque con el tiempo he llegado a hartarme de pedirles que se centren en una tarea y recibir a cambio comentarios sobre otras de las que ni siquiera habíamos hablado hasta el momento.

Antes del verano decidimos que teníamos que parar con la página web porque necesitábamos repensarnos hacia dónde la queríamos llevar. Es cierto que les hemos mareado bastante con nuestros objetivos. Los jefes querían un catálogo simple al principio, luego uno completo, luego que si una tienda para vender directamente, más tarde que no, que más simple, y más fácil, y más o menos lo que sea que buscasen porque no se aclaran. Y ha sido muy difícil tener un objetivo coherente a largo plazo, no lo niego; un objetivo requería seis mil referencias activas en el catálogo mientras que otro sólo unas cientos, otro un interfaz muy técnico, otro algo muy simple … y así no se puede.

¿ Era para dar a conocer nuestros productos (que ya no lo son tanto porque somos mayoritariamente distribuidores) o queríamos ser una empresa que vende por tierra, mar y aire ? Y entiendo que eso les tenía confundidos y que he llegado a frenarles en seco en algunos momentos, algo que restaría entusiasmo a cualquier trabajo, pero aún así estoy seguro de que nuestra forma original de enfocar el trabajo hubiese funcionado incluso entre tanta indecisión.

El caso es que hace poco tuve que migrar la instalación Drupal a un nuevo servidor dedicado virtual y debí cometer algún error que ha dejado errores molestos en la página y que pensé que podría resolver sólo. Ni de coña; es tanto el trabajo que tengo que sacar, y urgente de verdad, que no he podido hacer más. Y entonces te pasa como en esos bares en los que mucho buen rollo, mucha simpatía, pero te cobran dos euros y medio por un vino y te ponen panchitos de tapa: que empiezas a cuestionarte si merece la pena el desembolso y el gasto en tiempo.  Y en el caso de esta gente los últimos meses no lo merecieron.

¿ Qué hubiese costado darme un pequeño informe sobre qué debería haber transferido al nuevo sistema y en qué orden ? ¿ Desidia o ignorancia ? Hubiesen quedado de maravilla con mis jefes porque les habría llegado una sensación de seguridad transmitida por mí. Ahora no puedo hacer eso; no cuando yo mismo tengo mis dudas sobre su trabajo y sospecho que se sostiene con alfileres.

Es más, si he fallado en recuperar la antigua instalación con la misma base operativa de programas y datos, ¿ me sirven las copias de seguridad que tengo ahora mismo ? ¿ En serio ? ¿ Qué es lo que me falta por guardar para que la instalación funcione ?

Paso un poco por alto el espinoso asunto de haber elegido Drupal como base para construir algo que, sólo en tiempo (si lo tuviese) y dinero (que la empresa ha tenido y tiene), podría haber hecho con un programa web dedicado escrito en Perl, por ejemplo. Y digo que paso por alto porque estos años he visto como Drupal se transformaba de una herramienta a un negocio. Cada nueva versión requiere más libros, más cursos, más formación … y mucha más inversión. Empieza a parecerme la típica trampa privativa y eso me pone de los nervios.

Lo siento, estoy acostumbrado a sistemas como Debian que cuando pasan de una versión a otra de uno de sus programas, o incluso del sistema operativo en sí, documentan correctamente los cambios, lo que es nuevo y lo que ya no funciona; y en la mayor parte de los casos basta con seguir su proceso automatizado de actualización para que todo funcione. No es perfecto, desde luego, pero está a años luz de esos paquetes milagro que te colocan a veces y que ven el entorno donde funcionan como algo hostil e incluso ofensivo: ¿ qué coño es eso de tener un lugar para la configuración, otro para los datos reales, otro para los temporales e incluso uno por ahí para el código que no debe cambiar ?Nah, mejor todo en el mismo sitio y para hacer copia de seguridad lo salvamos todo siempre y ya.

Y eso, el ejemplo de Debian, es lo que quiero para los programas que uso, y es lo que pretendo conseguir con los programas que escribo. Lamentablemente las circunstancias como la falta de tiempo, el cambio de objetivos y el propio universo en sí condicionan mucho lo que consigo en realidad.

Ahora mismo estoy ampliando un programa muy, muy viejo, escrito seguramente por un clon mío atontado del pasado, y de gran importancia para la empresa. Revisarlo me ha confirmado que seguir la metodología de trabajo que apliqué en su tiempo era lo correcto, aunque siempre hay cosas que mejorar, y de que trabajar así (documentando cambios, programas y objetivos, empaquetándolo para el sistema de explotación) es más costoso a corto plazo pero muy barato a la larga, especialmente cuando estás sólo y el paso del tiempo te cambia profundamente.

Y volviendo al tema de este proveedor y de los problemas de la instalación actuales. Hace unos días cuando estaba a punto de pedir ayuda pagada para que alguien lo arreglase y me diesen una solución reproducible; me escriben justo a tiempo para avisarme de los problemas y para ofrecerse a arreglarlos sin coste. Me ha parecido bien y les he encargado un script que me permita reproducir la instalación en otra máquina. Y es que así me aseguro de obtener una forma de estudio de qué es lo que debo hacer y dónde pueden estar los fallos por mi parte.

El caso es que sin preguntarme nada sobre requerimientos me envían un presupuesto de cuatro páginas con una única frase interesante:

párrafo objetivos¿ Ya ? ¿ No hay nada más ? ¿ Y son 800€ + IVA dice ? Pues vaya.

Aunque me fiase a ciegas de su competencia acaban de darme un lote más de trabajo: convencer a los jefes de que pagamos por algo de lo que ni yo mismo estoy seguro. Incluso peor, ¿ qué ocurre si al final veo el script y descubro que son cuatro órdenes peladas para transferir archivos sin más ? ¿ Otra vez pongo cara de todo va muy bien cuando me pregunten si ha merecido la pena. Jopeta, que no está la cosa para ir soltando pasta sin más.

Es decir, que lo mismo faltan algunos detalles, alguna pregunta que contestar. Vamos algo como:

 

  • si el script crea la instalación de la versión de Drupal existente o es necesario instalarlo por separado.
  • si la base de datos son también salvadas y recuperadas posteriormente.
  • si el resultado puede parametrizarse para crear una copia clon con otro nombre, como sería el caso de tener una versión de pruebas.

 

Ya no pido tanto como una página de manual porque veo que mucha práctica en hacerlas no tienen pero algo más de chicha sería de agradecer. Y hablando de documentación, ¿ qué tal si la propuesta se envía en un formato sostenible como el PDF/A ? He tenido que hacer una captura de pantalla porque el contenido textual es casi inexistente. Hombre, si quiero guardar el documento en un gestor de tales o visualizarlo en algún dispositivo móvil ¿ no es más fácil para todos ?

Pero tampoco quiero divagar más sobre ello. Estoy en conversaciones con ellos al respecto y parece que sí, que aceptan ampliar los requerimientos en el presupuesto.

Veremos …