{"id":814,"date":"2015-09-17T11:02:01","date_gmt":"2015-09-17T11:02:01","guid":{"rendered":"http:\/\/esferas.org\/msqlu\/?p=814"},"modified":"2015-09-17T11:02:01","modified_gmt":"2015-09-17T11:02:01","slug":"reflexionando-sobre-escribir-programas","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2015\/09\/17\/reflexionando-sobre-escribir-programas\/","title":{"rendered":"Reflexionando sobre escribir programas &#8230;"},"content":{"rendered":"<p>&#8230; a ra\u00edz de un encargo que mi empresa ha hecho a un proveedor externo.<\/p>\n<p><!--more--><\/p>\n<p>Dicho proveedor ha sido el encargado de construir y dise\u00f1ar la p\u00e1gina web en Drupal los \u00faltimos dos a\u00f1os, creo. Comenzaron estupendamente porque nos comunicamos bien y comprendieron el enfoque de trabajo que quer\u00eda darle: peque\u00f1as tareas independientes, realizables y cobrables casi por separado, de manera que los jefes pudiesen ver algo a menudo y ellos estuviesen ingresando dinero regularmente.<\/p>\n<p>Con el tiempo no tengo muy claro qu\u00e9 paso, pero todo empez\u00f3 a ir a peor. No s\u00f3lo ten\u00edamos problemas de comprensi\u00f3n mutua si no que sus presupuestos eran cada vez m\u00e1s escasos en detalles t\u00e9cnicos y de requerimientos. Culpa en m\u00eda en parte porque lo dej\u00e9 pasar mientras consegu\u00eda resultados y yo pod\u00eda 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\u00edamos hablado hasta el momento.<\/p>\n<p>Antes del verano decidimos que ten\u00edamos que parar con la p\u00e1gina web porque necesit\u00e1bamos repensarnos hacia d\u00f3nde la quer\u00edamos llevar. Es cierto que les hemos mareado bastante con nuestros objetivos. Los jefes quer\u00edan un cat\u00e1logo simple al principio, luego uno completo, luego que si una tienda para vender directamente, m\u00e1s tarde que no, que m\u00e1s simple, y m\u00e1s f\u00e1cil, y m\u00e1s o menos lo que sea que buscasen porque no se aclaran. Y ha sido muy dif\u00edcil tener un objetivo coherente a largo plazo, no lo niego; un objetivo requer\u00eda seis mil referencias activas en el cat\u00e1logo mientras que otro s\u00f3lo unas cientos, otro un interfaz muy t\u00e9cnico, otro algo muy simple &#8230; y as\u00ed no se puede.<\/p>\n<p>\u00bf Era para dar a conocer nuestros productos (que ya no lo son tanto porque somos mayoritariamente distribuidores) o quer\u00edamos ser una empresa que vende por tierra, mar y aire ? Y entiendo que eso les ten\u00eda confundidos y que he llegado a frenarles en seco en algunos momentos, algo que restar\u00eda entusiasmo a cualquier trabajo, pero a\u00fan as\u00ed estoy seguro de que nuestra forma original de enfocar el trabajo hubiese funcionado incluso entre tanta indecisi\u00f3n.<\/p>\n<p>El caso es que hace poco tuve que migrar la instalaci\u00f3n Drupal a un nuevo servidor dedicado virtual y deb\u00ed cometer alg\u00fan error que ha dejado errores molestos en la p\u00e1gina y que pens\u00e9 que podr\u00eda resolver s\u00f3lo. Ni de co\u00f1a; es tanto el trabajo que tengo que sacar, y urgente de verdad, que no he podido hacer m\u00e1s. Y entonces te pasa como en esos bares en los que mucho buen rollo, mucha simpat\u00eda, 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.\u00a0 Y en el caso de esta gente los \u00faltimos meses no lo merecieron.<\/p>\n<p>\u00bf Qu\u00e9 hubiese costado darme un peque\u00f1o informe sobre qu\u00e9 deber\u00eda haber transferido al nuevo sistema y en qu\u00e9 orden ? \u00bf Desidia o ignorancia ? Hubiesen quedado de maravilla con mis jefes porque les habr\u00eda llegado una sensaci\u00f3n de seguridad transmitida por m\u00ed. Ahora no puedo hacer eso; no cuando yo mismo tengo mis dudas sobre su trabajo y sospecho que se sostiene con alfileres.<\/p>\n<p>Es m\u00e1s, si he fallado en recuperar la antigua instalaci\u00f3n con la misma base operativa de programas y datos, \u00bf me sirven las copias de seguridad que tengo ahora mismo ? \u00bf En serio ? \u00bf Qu\u00e9 es lo que me falta por guardar para que la instalaci\u00f3n funcione ?<\/p>\n<p style=\"padding-left: 30px;\">Paso un poco por alto el espinoso asunto de haber elegido Drupal como base para construir algo que, s\u00f3lo en tiempo (si lo tuviese) y dinero (que la empresa ha tenido y tiene), podr\u00eda haber hecho con un programa web dedicado escrito en Perl, por ejemplo. Y digo que paso por alto porque estos a\u00f1os he visto como Drupal se transformaba de una herramienta a un negocio. Cada nueva versi\u00f3n requiere m\u00e1s libros, m\u00e1s cursos, m\u00e1s formaci\u00f3n &#8230; y mucha m\u00e1s inversi\u00f3n. Empieza a parecerme la t\u00edpica trampa privativa y eso me pone de los nervios.<\/p>\n<p>Lo siento, estoy acostumbrado a sistemas como Debian que cuando pasan de una versi\u00f3n a otra de uno de sus programas, o incluso del sistema operativo en s\u00ed, 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\u00f3n para que todo funcione. No es perfecto, desde luego, pero est\u00e1 a a\u00f1os luz de esos paquetes milagro que te colocan a veces y que ven el entorno donde funcionan como algo hostil e incluso ofensivo: \u00bf qu\u00e9 co\u00f1o es eso de tener un lugar para la configuraci\u00f3n, otro para los datos reales, otro para los temporales e incluso uno por ah\u00ed para el c\u00f3digo que no debe cambiar ?Nah, mejor todo en el mismo sitio y para hacer copia de seguridad lo salvamos todo siempre y ya.<\/p>\n<p>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\u00ed condicionan mucho lo que consigo en realidad.<\/p>\n<p>Ahora mismo estoy ampliando un programa muy, muy viejo, escrito seguramente por un clon m\u00edo atontado del pasado, y de gran importancia para la empresa. Revisarlo me ha confirmado que seguir la metodolog\u00eda de trabajo que apliqu\u00e9 en su tiempo era lo correcto, aunque siempre hay cosas que mejorar, y de que trabajar as\u00ed (documentando cambios, programas y objetivos, empaquet\u00e1ndolo para el sistema de explotaci\u00f3n) es m\u00e1s costoso a corto plazo pero muy barato a la larga, especialmente cuando est\u00e1s s\u00f3lo y el paso del tiempo te cambia profundamente.<\/p>\n<p>Y volviendo al tema de este proveedor y de los problemas de la instalaci\u00f3n actuales. Hace unos d\u00edas cuando estaba a punto de pedir ayuda pagada para que alguien lo arreglase y me diesen una soluci\u00f3n 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 <em>script<\/em> que me permita reproducir la instalaci\u00f3n en otra m\u00e1quina. Y <em>es\u00a0<\/em>que as\u00ed me aseguro de obtener una forma de estudio de qu\u00e9 es lo que debo hacer y d\u00f3nde pueden estar los fallos por mi parte.<\/p>\n<p>El caso es que sin preguntarme nada sobre requerimientos me env\u00edan un presupuesto de cuatro p\u00e1ginas con una \u00fanica frase interesante:<\/p>\n<p><a href=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2015\/09\/Selecci\u00f3n_090.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-816\" src=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2015\/09\/Selecci\u00f3n_090.png\" alt=\"p\u00e1rrafo objetivos\" width=\"875\" height=\"63\" srcset=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2015\/09\/Selecci\u00f3n_090.png 875w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2015\/09\/Selecci\u00f3n_090-300x22.png 300w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2015\/09\/Selecci\u00f3n_090-768x55.png 768w\" sizes=\"auto, (max-width: 875px) 100vw, 875px\" \/><\/a>\u00bf Ya ? \u00bf No hay nada m\u00e1s ? \u00bf Y son 800\u20ac + IVA dice ? Pues vaya.<\/p>\n<p>Aunque me fiase a ciegas de su competencia acaban de darme un lote m\u00e1s de trabajo: convencer a los jefes de que pagamos por algo de lo que ni yo mismo estoy seguro. Incluso peor, \u00bf qu\u00e9 ocurre si al final veo el <em>script<\/em> y descubro que son cuatro \u00f3rdenes peladas para transferir archivos sin m\u00e1s ? \u00bf Otra vez pongo cara de <em>todo va muy bien<\/em> cuando me pregunten si ha merecido la pena. Jopeta, que no est\u00e1 la cosa para ir soltando pasta sin m\u00e1s.<\/p>\n<p>Es decir, que lo mismo faltan algunos detalles, alguna pregunta que contestar. Vamos algo como:<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>si el script crea la instalaci\u00f3n de la versi\u00f3n de Drupal existente o es necesario instalarlo por separado.<\/li>\n<li>si la base de datos son tambi\u00e9n salvadas y recuperadas posteriormente.<\/li>\n<li>si el resultado puede parametrizarse para crear una copia clon con otro nombre, como ser\u00eda el caso de tener una versi\u00f3n de pruebas.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Ya no pido tanto como una p\u00e1gina de manual porque veo que mucha pr\u00e1ctica en hacerlas no tienen pero algo m\u00e1s de chicha ser\u00eda de agradecer. Y hablando de documentaci\u00f3n, \u00bf qu\u00e9 tal si la propuesta se env\u00eda en un formato <em>sostenible<\/em> 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\u00fan dispositivo m\u00f3vil \u00bf no es m\u00e1s f\u00e1cil para todos ?<\/p>\n<p>Pero tampoco quiero divagar m\u00e1s sobre ello. Estoy en conversaciones con ellos al respecto y parece que s\u00ed, que aceptan ampliar los requerimientos en el presupuesto.<\/p>\n<p>Veremos &#8230;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8230; a ra\u00edz de un encargo que mi empresa ha hecho a un proveedor externo.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[2],"tags":[16,85,363],"class_list":["post-814","post","type-post","status-publish","format-standard","hentry","category-software","tag-desarrollo","tag-documentacion","tag-drupal"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/814","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/comments?post=814"}],"version-history":[{"count":0,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/814\/revisions"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=814"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=814"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}