{"id":184,"date":"2008-05-20T00:11:04","date_gmt":"2008-05-19T23:11:04","guid":{"rendered":"http:\/\/www.mundowdg.com\/blog\/?p=184"},"modified":"2008-05-20T00:11:04","modified_gmt":"2008-05-19T23:11:04","slug":"de-pobres-nada","status":"publish","type":"post","link":"https:\/\/mundowdg.com\/blog\/2008\/05\/20\/de-pobres-nada\/","title":{"rendered":"De pobres nada."},"content":{"rendered":"<p>El <a href=\"http:\/\/changlonet.com\/blog\/\">Tendero<\/a> ha escrito <a href=\"http:\/\/changlonet.com\/blog\/2008\/pobres-perifericos-organicos-de-activacion-mecanica-de-la-interfaz-fisica-de-entrada-de-datos\/\">este post<\/a> en el que dice que muchas veces cuando programamos nos olvidamos de que el usuario final puede que no tenga los conocimientos necesarios para hacer funcionar toda la aplicaci\u00f3n. Dice que nos tenemos que centrar m\u00e1s en la usabilidad y no confiar en la capacidad del usuario final. Y no le falta ni pizquita de raz\u00f3n.<\/p>\n<p>El usuario final puede ser un gran profesional y conocer todos los aspectos de su trabajo, y una aplicaci\u00f3n funcional pero con usabilidad reducida no resultar\u00e1 un obst\u00e1culo en absoluto puesto que si conoce procedimientos y t\u00e9rminos, al no resultarle extra\u00f1os puede comprender la l\u00f3gica de la aplicaci\u00f3n.<\/p>\n<p>Muchas veces, citando tambi\u00e9n al tendero, las aplicaciones se desarrollan ateni\u00e9ndose a las explicaciones que se recogen de analistas expertos en la materia que se est\u00e1 informatizando y se deja de lado al usuario final.<\/p>\n<p>Pero puedo aseguraros que no es mi caso. Eso ocurre en grandes aplicaciones y en grandes empresas. En Killminds la cosa es como m\u00e1s de andar por casa. El proceso de creaci\u00f3n de una aplicaci\u00f3n cualquiera es pel\u00edn caracter\u00edstico de una DLCG (Dictadura Laboral Carente de L\u00f3gica). Atended:<\/p>\n<p>Lo primero es identificar una necesidad. La necesidad puede ser, automatizar una tarea, simplificar procedimientos, controlar ciclos de vida&#8230; lo que sea. En Killminds es SIEMPRE un problema inform\u00e1tico. Cuando algo no sale adelante, sea lo que sea, todas las empresas inteligentes buscan causas y soluciones. En Killminds se buscan responsables.<\/p>\n<p>-\u00a1C\u00f3mo que no sale ese pedido!<br \/>\n-Es que no encontr\u00e1bamos bolsas.<br \/>\n-\u00a1C\u00f3mo que no encontr\u00e1is bolsas! \u00a1Buscadlas en el ordenador!<br \/>\n-No, si no las encontramos porque no se han comprado&#8230;<br \/>\n-\u00a1Se va a enterar este!<\/p>\n<p>\u00a1Bip bup bip! \u00a1Trimpititrin!\u00a1Trimpititrin!\u00a1Trimpititrin!<\/p>\n<p>-Sistemas&#8230;<br \/>\n-\u00a1Wardog! \u00a1Por qu\u00e9 no se han comprado bolsas para el pedido 21097!<br \/>\n-Seguramente porque Lucky est\u00e1 repasando el presupuesto, el pedido y la cantidad de t\u00f3ner que se ha gastado para imprimir ambas cosas, est\u00e1 mandando una paloma mensajera al proveedor para hacer el pedido y gastar menos tel\u00e9fono y\/o que se ha concentrado tanto en su trabajo que se ha olvidado de respirar y ha muerto.<br \/>\n-\u00a1Menos co\u00f1as! \u00a1Haz un programa que avise de las bolsas que hay que comprar para servir los pedidos!<br \/>\n-Po venga.<\/p>\n<p>Que me gusta programar a m\u00ed, oiga. Bueno, pasado el primer paso, que es identificar al responsable de que las cosas no se hagan, en este caso, el inform\u00e1tico de la empresa, los dem\u00e1s pasos deben ir encaminados a resolver el problema. Yo lo que hago es identificar a los usuarios que intervienen en el proceso y los entrevisto uno por uno y por separado, en plan interrogatorio para sacar toda la informaci\u00f3n que pueda y encontrar contradicciones entre sus versiones para comprender, analizando todos los datos que me ofrecen, qu\u00e9 cosas se hacen bien, cu\u00e1les se pueden mejorar, eliminar o simplificar y cu\u00e1les se hacen rematadamente mal.<\/p>\n<p>-A ver, Piterpol. \u00bfT\u00fa cu\u00e1ndo pides bolsas?<br \/>\n-Cuando pido cajas.<br \/>\n-Bien. \u00bfY cu\u00e1ndo pides cajas?<br \/>\n-Cuando se acaban.<br \/>\n-\u00bfY si s\u00f3lo se acaban las bolsas?<br \/>\n-Espero a que se acaben las cajas.<\/p>\n<p>C\u00e1gate, lorito.<\/p>\n<p>-Aham. \u00bfY si se acaban las cajas antes que las bolsas?<br \/>\n-Pido cajas.<br \/>\n-\u00bfY no podr\u00edas pedir las cajas y las bolsas por separado?<br \/>\n-No veo por qu\u00e9, siempre se ha hecho as\u00ed.<br \/>\n-Porque me parece una soberana gilipollez.<br \/>\n-Pues no, porque siempre se ha hecho as\u00ed.<br \/>\n-Bien, vale, muchas gracias. Ya puedes marcharte, llama a Caganidos y que venga, por favor.<\/p>\n<p>Ya vemos que el procedimiento cojea un pel\u00edn. Sigamos investigando en este hecho concreto que es el pedir bolsas.<\/p>\n<p>-A ver, Caganidos, dime. \u00bfCu\u00e1ndo pides bolsas?<br \/>\n-Ah, yo no las pido.<br \/>\n-\u00bfNo?<br \/>\n-No, ya hace Piterpol el c\u00e1lculo de bolsas y las pide.<br \/>\n-Me cago yo en el c\u00e1lculo ese&#8230;<br \/>\n-\u00bfC\u00f3mo dices?<br \/>\n-No, nada&#8230; A parte de bolsas y cajas, \u00bfqu\u00e9 m\u00e1s cosas se piden?<br \/>\n-Bolsas, cajas, cierres,  pegatinas, l\u00e1minas, palets&#8230;<br \/>\n-Vale, gracias.<\/p>\n<p>Definitivamente el proceso es incoherente. Se deja la responsabilidad de una tarea importante en manos de alguien que no es competente en ese aspecto. Luego, dada la necesidad de informatizar algo, en este caso la compra de bolsas, buscamos la forma de llevarlo a cabo. Pero antes de ponernos a trabajar, nos damos cuenta de que podemos usar la aplicaci\u00f3n para resolver m\u00e1s problemas. Ya no la usaremos s\u00f3lo para saber cu\u00e1ndo tenemos que comprar bolsas. Podemos incluir todas las materias auxiliares en el proceso. Total, lo que vale para bolsas, con cuatro c\u00e1lculos m\u00e1s vale para cajas, cierres, pegatrinas, l\u00e1minas y palets.<\/p>\n<p>Averiguamos los c\u00e1lculos que hay que hacer en funci\u00f3n del producto que se fabrica y de las dimensiones y cubicajes de las materias auxiliares y hala, a programar. Se parematriza todo en funci\u00f3n del producto y llegamos a la conclusi\u00f3n de que nos podemos aproximar mucho al c\u00e1lculo de necesidades si lo enfocamos, obviamente, a la cartera de pedidos pendientes. Calculamos necesidades, restamos stocks y si sale un n\u00famero por debajo de un m\u00ednimo, decimos que hay que pedir tal o cual cosa. A grosso modo, es eso.<\/p>\n<p>Ahora vienen las interfaces chungas. La mayor\u00eda de los programas de Killminds tienen menos botones que el salpicadero de un troncom\u00f3vil. En este caso concreto, dos campos para fechas y un bot\u00f3n de \u00abaceptar\u00bb para disparar el proceso que consulta todo y te imprime (leer en pantalla les duele) las necesidades de material auxiliar que debes pedir.<\/p>\n<p>-Wardog, que este programa no funciona.<br \/>\n-\u00bfQu\u00e9 dice?<br \/>\n-No, si no dice nada. Es que sale mal.<br \/>\n-\u00bfC\u00f3mo que sale mal?<br \/>\n-S\u00ed, no sale que hay que pedir cierres.<br \/>\n-\u00bfAh no? Dame un segundo.<\/p>\n<p>Miro el stock de cierres y veo que hay entre mucho y una burrada.<\/p>\n<p>-Ni\u00f1o, que quedan chopocientosmil cierres. \u00bfSeguro que hay que pedir?<br \/>\n-No, si no hay que pedir.<br \/>\n-Pues por eso no sale.<br \/>\n-\u00bfY c\u00f3mo s\u00e9 yo que no hay que pedir cierres?<br \/>\n-Porque no sale en el listadito de cosas que tienes que pedir.<br \/>\n-No me f\u00edo. Quiero que salgan tambi\u00e9n las cosas que no hay que pedir.<\/p>\n<p>Hala, a modificar el informe. Se hace una prueba y se presenta. Conforme.<\/p>\n<p>-Wardog, que no funciona el programa este.<br \/>\n-\u00bfC\u00f3mo que no?<br \/>\n-No. Me dice no se qu\u00e9 de fecha no v\u00e1lida.<br \/>\n-\u00bfQu\u00e9 fechas has puesto?<br \/>\n-Del uno de enero al treinta y uno de feberero.<br \/>\n-Ole tus cojones. Febrero tiene veintiocho d\u00edas, muchacho.<br \/>\n-\u00bfY qu\u00e9?<br \/>\n-Que no te riega, y que febrero no tiene 31 d\u00edas.<br \/>\n-\u00bfY tengo que saber los d\u00edas que tiene cada mes?<br \/>\n-No, d\u00e9jalo, hombre, ya soluciono yo esto&#8230;<\/p>\n<p>Porque lo principal es la usabilidad del sistema. Cambio los dos campos de fecha por dos bonitos calendarios perpetuos y hala, as\u00ed no se equivocan.<\/p>\n<p>\u00a1Trimpititrin!\u00a1Trimpititrin!\u00a1Trimpititrin!<\/p>\n<p>-Sistemas&#8230;<br \/>\n-Que esto no funciona.<br \/>\n-\u00bfC\u00f3mo que no?<br \/>\n-Como que no. Quiero poner una fecha del a\u00f1o pasado y no puedo cambiar el a\u00f1o.<br \/>\n-Pincha en el a\u00f1o. Se abrir\u00e1 un deplegable para que selecciones el a\u00f1o.<br \/>\n-\u00a1Vaya programa complicado!<br \/>\n-La verdad es que s\u00ed. Teniendo en cuenta lo que debe hacer el programa, es complicado de cojones.<\/p>\n<p>En fin, que como yo no s\u00e9 hacerlo m\u00e1s f\u00e1cil, ah\u00ed se queda y a base de insistir e insistir, de echarle paciencia y amor ( a la profesi\u00f3n), conseguimos hacer que la gente lo use correctamente. Fij\u00e1os que es s\u00f3lo un ejemplo de una aplicaci\u00f3n extremadamente sencilla para el usuario, independientemente de los c\u00e1lculos y procesos que tenga que efectuar el n\u00facleo del programa. La interfaz es sumamente sencilla, pero resulta que\u00a0 perif\u00e9ricos org\u00e1nicos de activaci\u00f3n mec\u00e1nica de la interfaz de entrada de datos los hay de dos clases: normales y adaptables.<\/p>\n<p>De los normales, sobra decir nada. Los adaptables cambian su l\u00f3gica de funcionamiento para hacer cada vez m\u00e1s dif\u00edcil lo m\u00e1s f\u00e1cil. Si una pantalla de una aplicaci\u00f3n tiene un campo de texto y un bot\u00f3n, terminar\u00e1s teniendo que quitar el bot\u00f3n o el campo de texto. Si la interfaz tiene s\u00f3lo un bot\u00f3n, terminar\u00e1s quit\u00e1ndolo, no sea que lo tengan que pulsar.<\/p>\n<p>Esto lo podemos interpretar de dos maneras. Una, deprimi\u00e9ndonos y suicidando lusers. No conviene. La otra es aprendiendo con ellos. Como son tan bestias, puedes tom\u00e1rtelo como un reto y depurar tus interfaces hasta que son sencillas de usar. Integrando instrucciones o\u00eddas, dibujitos, gu\u00edas l\u00f3gicas, etc. Es un gran reto y hay que aceptarlo.<\/p>\n<p>\u00a1Trimpititrin!\u00a1Trimpititrin!\u00a1Trimpititrin!<\/p>\n<p>-Sistemas&#8230;<br \/>\n-Oye, que el programa este me saca un mensaje y no s\u00e9 qu\u00e9 hacer.<br \/>\n-\u00bfQu\u00e9 dice el mensaje?<br \/>\n-\u00bfEst\u00e1 seguro de que desea continuar?<br \/>\n-Vale. Y ahora dime qu\u00e9 bot\u00f3n has pulsado.<br \/>\n-No s\u00e9. Uno.<br \/>\n-Te odio.<\/p>\n<p>Enchufar VNC. En pantalla se ve una ventana que muestra el mensaje antedicho y en el t\u00edtulo de la ventana pone Eliminar Pedido. Ejemplo perfecto de interfaz mal dise\u00f1ada. Hay que cambiar esa ventana porque nadie lee el t\u00edtulo. Hay que cambiar el mensaje de advertencia.<\/p>\n<p>\u00a1Trimpititrin!\u00a1Trimpititrin!\u00a1Trimpititrin!<\/p>\n<p>-Sistemas&#8230;<br \/>\n-Que sale un mensaje y no s\u00e9 qu\u00e9 hacer.<br \/>\n-Jodeeeer&#8230; qu\u00e9 dice el mensaaaaje&#8230;<br \/>\n-\u00a1Yo qu\u00e9 s\u00e9, es muy largo!<\/p>\n<p>Enchufar VNC. Vemos un mensajito en pantalla que dice \u00abVas a eliminar un pedido. \u00bfEst\u00e1s seguro? Si pulsas en SI, lo eliminar\u00e1s; si pulsas en NO, no lo borrar\u00e1s\u00bb Muy largo. Cambiamos el mensaje de nuevo.<\/p>\n<p>\u00a1Trimpititrin!\u00a1Trimpititrin!\u00a1Trimpititrin!<\/p>\n<p>-\u00a1Qu\u00e9!<br \/>\n-Que he borrado sin querer un pedido.<br \/>\n-\u00bfY el mensaje de confirmaci\u00f3n?<br \/>\n-\u00bfQu\u00e9 mensaje de confirmaci\u00f3n?<br \/>\n-El que sale y dice \u00ab\u00bfBorrar pedido?\u00bb y salen dos botones, uno con un \u00abO.K.\u00bb verde y el otro con un \u00abNO\u00bb rojo.<br \/>\n-Ah, pues yo le he dado al verde.<\/p>\n<p>Es para matarlos. Si siguen vivos es por el reto. Por cierto, si hay alg\u00fan experto en usabilidad, por favor, que me de consejos porque he probado de todo. Desde ocultar los campos que dependen de otros hasta que han introducido los campos de los que dependen, hasta pedir de viva voz lo que hace falta, parpadeos, dibujitos, calambrazos&#8230; Y el otro d\u00eda cuando v\u00ed en un documental chimpanc\u00e9s que entend\u00edan frases completas como \u00abpon el reloj dentro de la bolsa\u00bb y ejecutaban la orden, me puse a llorar como un ni\u00f1o peque\u00f1o.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El Tendero ha escrito este post en el que dice que muchas veces cuando programamos nos olvidamos de que el usuario final puede que no tenga los conocimientos necesarios para hacer funcionar toda la aplicaci\u00f3n. Dice que nos tenemos que centrar m\u00e1s en la usabilidad y no confiar en la capacidad del usuario final. Y [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-184","post","type-post","status-publish","format-standard","hentry","category-general"],"_links":{"self":[{"href":"https:\/\/mundowdg.com\/blog\/wp-json\/wp\/v2\/posts\/184","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mundowdg.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mundowdg.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mundowdg.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mundowdg.com\/blog\/wp-json\/wp\/v2\/comments?post=184"}],"version-history":[{"count":0,"href":"https:\/\/mundowdg.com\/blog\/wp-json\/wp\/v2\/posts\/184\/revisions"}],"wp:attachment":[{"href":"https:\/\/mundowdg.com\/blog\/wp-json\/wp\/v2\/media?parent=184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mundowdg.com\/blog\/wp-json\/wp\/v2\/categories?post=184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mundowdg.com\/blog\/wp-json\/wp\/v2\/tags?post=184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}