Buenas prácticas cuando se mantienen soluciones de software.

Resumen: Mantener soluciones de software es un trabajo muy crítico que a menudo se menosprecia  y se realiza con una ausencia total de procedimientos, roles, herramientas y gestión.

El mantenimiento de soluciones de software es un aspecto que no he tratado demasiado en este blog, no obstante, estas semanas estoy evaluando un servicio de mantenimiento que ofrece la empresa para la que trabajo y quiero aprovechar el momento y situación para dejar escritos algunos conceptos que creo que son vitales para ofrecer un servicio profesional y de calidad.

No escatimes en herramientas.

Las herramientas son los mecanismos de los que disponemos para realizar un buen trabajo y aportar ese grado de calidad y profesionalidad que nos diferencia.

No escatimes en herramientas, identifica tus necesidades y lucha por que se vean cubiertas. Haz que se vea el valor que tiene el disponer de varios entornos, disponer de los medidores necesarios para garantizar la calidad del software y por lo tanto confianza y tranquilidad en el cliente. Algunas que no nos pueden faltar son:

  • Herramienta de gestión de incidencias: No tiene porque ser una aplicación en si misma, es decir, con una hoja Excel que te permita hacer un seguimiento de las incidencias que se crean, las que se cierran o asignarlas a una persona concreta te puede valer. No obstante, si tienes una herramienta mejor que mejor, ya que te ofrecerá además de esto muchas otras funcionalidades como informes y gráficas de la resolución de las mismas. Team Foundation Server puede ser una excelente herramienta.
  • Datos de prueba: Tener una buena suite de datos de prueba te va ahorrar mucho tiempo y esfuerzo. Vas a poder identificar casuísticas que no esperas y como consecuencia mejorar el software que mantienes. Emplea todo el tiempo que sea necesario, e intenta reproducir todas las problemáticas que puede encontrar la aplicación mediante estos datos. Igual que creo que no funciona el Lorem Ipsun cuando se está trabajando en prototipos gráficos y diseño de interacción no funcionan los datos autogenerados, así que trata de que tus datos de prueba sean lo más reales posibles.
  • Entornos: Si hay que luchar por tener una herramienta de indicencias y unos buenos datos de testing, también hay que luchar (a capa y espada) por que se nos proporcionen los entornos necesarios para desarrollar (control de fuentes, builds automatizadas, herramientas de medición de calidad del software etc.), entornos de Testing (donde seas capaz de validar que todo funciona), entornos de Preproducción y acceso a los entornos de producción.

No contar con alguno de ellos supone la asunción de muchos riesgos. Imagina resolver una incidencia y tener que desplegarla en producción porque no tienes un entorno de test. Pues estas cosas, en la vida real aunque no lo creas pasan.

No es posible mantener una solución sin unos buenos datos de prueba, sin una herramienta que gestione los tickets o incidencias o sin los entornos necesarios para gestionar el ciclo del software de forma eficiente.

Define roles y procedimientos.

Mantener una de solución de forma eficiente implica definir roles y procedimientos. No es posible que cuando se solventa una incidencia sea el propio desarrollador que la ha solucionado la persona que certifique que la solución es correcta.

Has de definir roles, con funciones y tareas concretas y sobre todo que se responsabilicen de la parcela que les toca.

Con los procedimientos sucede lo mismo, define cuales son los procedimientos a seguir para comunicar incidencias, para asignarles una criticidad, para resolverlas en función de esta criticidad, para testearlas, para validarlas y para finalmente desplegarlas en producción.

Si no lo haces encontraras funcionalidades que fallan desplegadas en entornos de producción, encontraras que el equipo no es eficiente, que el software no se prueba. Encontraras un ecosistema que es un autentico desastre con un equipo (tanto del cliente como tuyo) ineficiente y sobre todo que los problemas surgen continuamente.

Valora el servicio como se merece: Dimensiona correctamente el equipo de mantenimiento.

Normalmente, las soluciones que necesitan un mantenimiento son soluciones críticas, soluciones que gestionan aspectos vitales del negocio de una compañía y que por lo tanto es necesario que exista un equipo velando por el correcto funcionamiento de la solución.

El equipo que ha de mantener la solución, ha de estar correctamente dimensionado. Podríamos definir un equipo mínimo con un jefe de proyecto o líder tecnológico que se encargue de las relaciones con el cliente y sobre todo priorizar el desarrollo y solución de incidencias, así como la gestión del equipo en cuanto a vacaciones e imprevistos (por ejemplo una baja o el abandono de la compañía  de un miembro del equipo). Esta persona también deberá ser la encarga de establecer unos lazos o relaciones fuertes entre la empresa cliente y empresa proveedora de servicios.

Del lado del equipo de desarrollo, como mínimo debería haber dos personas siempre. Estas dos personas, deberán tener un conocimiento fuerte de la solución y serán las responsables de ejecutar la resolución de incidencias.

Si además de preventivo, el mantenimiento es evolutivo, deberás de proveer al cliente de equipo de desarrollo diferente. Este equipo puede ser itinerante siempre y cuando se getione debidamente y haya una persona que se responsabilice de los desarrollos relativos a nuevas funcionalidades.

Asegura la calidad del software.

Asegurar la calidad del software es una actitud. Todo buen profesional tiene que ser capaz de garantizar que el software que genera funciona y decir en mi equipo funciona no es garantía.

Utiliza pruebas unitarias y mantén un buen índice de code covegarage a lo largo de todo el servicio. Las pruebas unitarias no solo aseguran que el software funciona como se espera sino que además son reproducibles, automatizables y en muchos casos, lo documentan (y con lo documentan no me refiero a documentación funcional si no a documentación técnica).

Cuando veo el tiempo que ha dedicado el equipo (largas horas e incluso jornadas), debugando una solución para entender el comportamiento de la misma y asegurar que es correcto, me pregunto  cuánto tiempo va a pasar hasta que nos encontremos en la misma situación y tengamos que dedicar otras tantas jornadas de debug.

Dedicar las jornadas al debug de una solución para entender lo que hace es perder el tiempo y deja patente que la calidad del mismo tiende a cero. Esas pruebas, no quedan escritas, no son automatizables y no son reproducibles por lo tanto hay que evitarlas.

El code coverage, es un estupendo medidor de lo testeado que se encuentra la solución.

Gestión. Adelántate a las situaciones no deseadas.

La profesionalidad y calidad del servicio, no solo se mide se mide por la calidad de respuesta y software que se desarrolle. Una correcta gestión de la dedicación y sobre todo de los imprevistos permite generar confianza entre cliente y empresa proveedora.

Mitigar riesgos es tan vital como la propia resolución de las incidencias que surjan y gestionar correctamente las diferentes situaciones adelantándose a los imprevistos, supone minimizarlos, permitiendo que nuestros cliente este tranquilo y tenga plena confianza en nosotros.

Ahorrar costes, eliminando gestión es directamente proporcional a asumir riesgos (que como digo hay que mitigarlos), la existencia de problemas y en definitiva contratar un servicio pobre.

No existe un medidor más atronador que el silencio en relación a problemas e incidencias.

 

Microsoft Excel como interfaz de usuario para soluciones software.

Resumen: En muchas ocasiones nos empeñamos en crear procesos muy complejos para resolver las problemáticas que se nos presentan que nunca terminan de funcionar bien y podrían haber sido resueltos de forma mucho más eficiente utilizando herramientas totalmente implantadas y aceptadas en el ámbito tanto empresarial como domestico como por ejemplo las proporcionadas por Microsoft Office (o Google Docs).

Abraham Maslow, en 1966 escribio The Psychology of Science. En la página 15, escribio:

I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail.

Identificar correctamente las problemáticas a resolver y las herramientas a utilizar es directamente proporcional a crear buenas experiencias de usuario. Desde hace ya algún tiempo incorporo la resolución de ciertas funcionalidades mediante hojas de cálculo (Excel generalmente) como complemento a las interfaces de usuario digitales que creamos en los proyectos que lidero.

Pensad un momento lo complejo que es desarrollar una interfaz de usuario en entornos web cuyo objetivo sea la introducción de datos de forma masiva. Pensad, y si conocéis un ejemplo bien resuelto (además de Google Docs y Office 365), contadme cual es.

Pensad ahora lo sencillo que resulta hacerlo con una hoja de cálculo.

Fortalezas del trabajo con documentos.

Curva de aprendizaje baja.

Microsoft Office (sobre todo, no obstante, también aplica a otros productos como Office 365 o Google Docs) se encuentra totalmente implantado en el mercado tanto empresarial como doméstico. Prácticamente cualquier usuario medio conoce las funcionalidades básicas y tiene una formación (como poco mínima) sobre la utilización de la herramienta, por lo tanto, encontramos una curva de aprendizaje baja y me atrevería decir que casi inexistente.

Pocas barreras de entrada.

Una de las principales dificultades que tenemos que vencer cuando desarrollamos software es la poca predisposición para aceptar y asumir el uso de herramientas por parte de las áreas usuarias y la dificultad que les supone comprender ciertos productos, perderles el miedo y sobre todo explotarlos como se merecen. Si trabajas con productos que ya conocen y que se encuentran totalmente implantados este factor se minimiza por lo tanto, la barrera de entrada es muy baja.

Soporte de primer nivel asumido por las áreas usuarias.

Que nuestro usuario se encuentra con un problema. Tranquilo, lo primero que va a hacer es preguntarle a alguno de sus compañeros. Si después de verlo varias personas no se ha podido resolver levantara el teléfono y llamara a soporte, no obstante, tu equipo de soporte, no va a estar atendiendo constantemente incidencias del tipo “no funciona”.

Ventajas del trabajo con documentos.

Cuando trabajamos con un documento, podemos guardarlo y resumirlo. Podemos trabajar varias personas en el, podemos hacer revisiones, podemos utilizar plataformas de sincronización y almacenamiento como dropbox. Podemos buscar. No tenemos que mantener la sesión, no le obligamos a nuestro usuario a trabajar de una forma concreta, si no de la forma que el prefiere…

Muchas son las ventajas de trabajar con documentos y todas ellas contribuyen a mejorar la experiencia de usuario.

Muchos problemas de diseño web se evitan permitiendo al usuario varias formas de utilización para un mismo fin.

Efectividad y eficiencia

Estas herramientas han sido desarrolladas y evolucionadas por equipos de software importantes, diseñadas y desarrolladas para resolver unos problemas concretos. Herramientas perfectamente testeadas que raramente fallan. Utilízalas, crea una relación Win To Win entre tu solución y productos externos ya implantados en el mercado. Verás como el conjunto global mejora la experiencia de usuario y gana tanto en robustez como en calidad.

Implementado soluciones con documentos.

Implementar este tipo de soluciones, puede ser una tarea muy compleja en función del nivel de madurez que quieras alcanzar. Las soluciones son muy variadas y siempre hay que incluir una buena gestión de errores.

Puede servirte con una simple aplicación de consola que analice un documento y lo procese o una aplicación de escritorio que, arrastrando documentos sobre ella, procese y añada la información al sistema indicando el estado de las operaciones mediante barras de procesos o controles de loading. Esta solución permite crear experiencias de usuario muy buenas.

No obstante, la solución que más me gusta es un Addin de Office. La solución no es tan espectacular como la aplicación de escritorio, pero con un coste asumible, tenemos un desarrollo totalmente funcional, con un nivel de madurez aceptable.

En el mercado, encontramos muy buenos ejemplos de este tipo de integraciones. Creo que la más brillante que he visto al respecto ha sido la de Team Foundation Server. Mediante un Addin de Excel te permite hacer una gestión completa del equipo de software mediante historias de usuario, tareas, bugs etc.

Hace ya más de dos años, participe en el diseño y desarrollo de una plataforma de eCommerce. Toda la gestión de la tarifa y stock se realizaba mediante la interfaz web o mediante documentos Excel que eran subidos a la plataforma mediante un input file. La mayoría de usuarios, preferían hacerlo mediante Excel ya que era el procedimiento que usaban normalmente en su día a día.

Pantallas táctiles: Entre uso y abuso

Hace un par de semanas, encontré un vídeo en la red que llamo bastante mi atención  El vídeo en cuestión es el que tenéis a continuación.

Es curioso como lo vi una, dos, tres o quizás diez veces consecutivas. Me resulto muy atractivo el interior de ese Volvo, pero no entendía bajo ningún concepto como el principal elemento de interacción con el vehículo era una pantalla táctil. ¿ Habéis probado a escribir con Whats Up mientras vais andando?

Si habéis visto el vídeo, tendréis claro que:

  • Todo es muy limpio
  • La principal interacción se realizara mediante las pantallas táctiles
  • Están en frente a ti, con un mapa indicando el camino…
  • Todas las opciones están en la “center screen”
  • Presenta varios menús con opciones (radio, el control de crucero, clima, conexiones, todo lo que ocurre en el coche)
  • Tienes aplicaciones, el tiempo, música etc.
  • Puedes buscar…

Y mientras interactuas con la pantalla, ¿quien conduce?.

Una pantalla táctil  es un elemento de interacción fascinante, no obstante, es un elemento que requiere de muchísima atención para utilizarlo, debido principalmente a que  el único sentido que se utiliza es la vista.

Imagínate ahora la situación, estas conduciendo y simplemente quieres subir o bajar la temperatura del clima (nada de una compleja acción donde tengas que navegar por un menú ..), imagínate en una autopista a 120 km/h, con sus baches, curvas. Imagina cuanto tiempo vas a utilizar en identificar donde tienes que tocar en la pantalla, identificar donde esta el control y realizar la acción.

Piensa ahora en como lo haces actualmente, como prácticamente sin mirar donde esta el control del clima, puedes identificarlo y con un simple movimiento cambiar la temperatura. Una acción directa. Inmediata. Y ¿por qué es más sencillo este segundo caso? pues simplemente porque además de la vista, utilizamos el sentido del tacto. Al intervenir más sentidos nos resulta más sencillo percibir y entender lo que tenemos alrededor. Y ya sabéis que la experiencia de usuario tiene mucho que ver con la percepción.

Imagínate ahora en una carretera secundaria realizando una acción un poco más compleja. Imagina lo sencillo que es hacer tap en un punto concreto cuando estas en movimiento.

En Octubre, me compre un GPS (un Garmin Edge 200) para mi bici de montaña. Cuando estaba buscando el GPS que encajaba con lo que quería (tamaño reducido, robustez, larga duración de la batería, pantalla que se viera bien en todas las situaciones, que se pudieran seguir rutas, que grabara rutas etc.) encontré muchos modelos de alta gama que incorporaban pantallas táctiles. La verdad es que también me sorprendió bastante por el mismo motivo, ¿como puedes interactuar con un dispositivo táctil cuando estas en movimiento de forma eficiente? Difícilmente puedes hacerlo.

Abraham Maslow, en 1966 escribio The Psychology of Science. En la página 15, escribio:

I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail.

Mientras escribía este post, me estaba viniendo a la cabeza mi viejo iPod. Me viene a la cabeza como subo y bajo el volumen sin mirarlo, como paso las canciones, como entiendo que está pasando mediante el sentido del tacto y por supuesto del oido. Como disfruto de una experiencia de usuario estupenda sin prácticamente darme cuenta, sin prestar atención. De forma natural.

iPod más que classic

iPod más que classic

Tengo un equipo y se como usarlo: Como realizar propuestas de colaboración de forma eficiente

Una propuesta de colaboración es un documento que nace como respuesta a una RFP (Request For Proposal) por medio del cual, se trata de resolver una problemática concreta, para un cliente concreto en un contexto concreto. Mediante este documento, vas a dar tu visión de lo que sera el proyecto a futuro en cuanto a alcance, plan, costes etc.

La realización de propuestas de colaboración es un trabajo importante y totalmente necesario que vas a tener que hacer si quieres ganar proyectos. Hacer propuestas de colaboración es una tarea compleja y normalmente se realiza sin tener muy claro si el esfuerzo que vas a realizar tendrá un retorno de la inversión directo, es decir, si vas a ganar el proyecto.

Trata de ser lo más eficiente posible (haciendo siempre un buen trabajo) en este tipo de tareas, ya que implica reducción de costes si o si, ganes o pierdas el proyecto.

Define un modelo para tus propuestas.

Las propuestas, muestran la personalidad de la empresa que está detrás, por lo tanto, tipos de propuestas hay tantas como empresas. Hay propuestas que se realizan en formato Power Point listas para ser presentadas y propuestas mucho más densas pensadas y realizadas para ser leídas. Hay propuestas donde prácticamente no se ahonda en el trabajo a realizar y propuestas donde se pretenden atar todos los detalles.

Como digo cada empresa tiene su propuesta, por lo tanto, tenemos que definir un modelo de propuesta con el que nos sintamos cómodos en cuanto a imagen corporativa, formato, extensión, tono y contenidos.

¿Qué tiene que entrar si o si en una propuesta de colaboración?

Las propuestas, a no ser que el cliente que la solicita la pida con una extensión y contenidos específicos (lo cual sucede en RFPS para proyectos muy grandes) suelen ser muy diferentes unas de otras. Si se comparan dos propuestas realizadas por dos empresas para un mismo proyecto, seguro que son totalmente diferentes.

Con independencia de la longitud de la propuesta, del formato, del tono o de la personalidad que quieras imprimir en la misma hay una serie de puntos que tienes que meter si o si:

  • Visión: Define cual es tu visión del proyecto y que es lo que te hace único. Dile a tu cliente cual es la mejor solución para su proyecto y cautívalo. Es aquí donde tienes que demostrar tu conocimiento del medio y negocio que se presenta.
  • Alcance: Define que es lo que vas a hacer en base a la planificación y costes que posteriormente le presentas. Este apartado, tiene que estar totalmente alineado con la visión, solo que aquí es donde vas a atar todos los detalles.
    Si en el apartado de visión, dices que habrá un proceso de login, define aquí que significa y que implicaciones tiene (login en base a un único usuario / password, login contra tabla de usuairos, login contra directorio activo etc.).
  • Fuera de alcance: Enumera todo lo que esta fuera del alcance de la oferta, es decir lo que no vas a hacer.
  • Planificación: Tienes que presentar un plan de proyecto, este plan, puede ser desde una excel con un cronográma a un project con todos los detalles. Tu eres el que se tiene que sentir cómodo con la planificación y tienes que incluirla, el formato del plan o el nivel de detalle, dependen de muchos factores, desde la personalidad de la empresa al tamaño del proyecto, así que define que necesitas en función del proyecto y hazlo.
  • Costes: Di cuanto cuesta lo que vas a hacer. El descuento que le aplicas si es que lo haces, IVA etc.
  • Descripción de tu empresa: Describe tu empresa, lo bueno que eres y lo bien que trabajas. VENDETE.

Acota el esfuerzo necesario para realizar una propuesta.

De cara a realizar la propuesta, es muy importante definir el tiempo que le vas a dedicar. Ten en cuenta que una propuesta es un trabajo que solo en el caso de ganar el proyecto conlleva un retorno de la inversión, por lo tanto, es muy importante ser todo lo efectivo posible y hacerla en el menor tiempo necesario. Un buen ejercicio y es asignarle una temporalidad. 40 horas, 80, 160 las que sean necesarias pero asociaselas. Asociar esta temporalidad implica que en ese plazo vas a tenerla cerrada.

Planifica la ejecución la propuesta.

Además de asignarle una temporalidad, define las tareas que se tienen que realizar junto con la fecha de entrega de las mismas y asignaselas a las personas más adecuadas para realizarlas.

Por ejemplo, todo lo relativo al plan del proyecto encárgaselo a un jefe de proyecto, lo relativo a visión – alcance – fuera de alcance a un arquitecto. Es decir, que cada persona haga lo que mejor hace en el menor tiempo posible.

Divide la propuesta en tareas, asígnaselas a una persona y define una fecha de entrega.

Reutiliza. Trabaja hoy para ser más eficiente mañana.

En cada propuesta, hay una parte importante que puede ser reutilizada, así que hazlo, reutiliza.

Si es la primera vez que tu empresa tiene que hacer una propuesta, te veras obligado a crear una descripción de la empresa, explicar cual es tu metodología de desarrollo, definir un plan de comunicación… Hazlo, pero ya que lo haces crea un repositorio de información, mantenlo actualizado, organizado y tira de el para futuras propuestas, tanto para realizarlas como para actualizarlas. Además tienes que hacer participe de este repositorio de información a toda la empresa ya que el coste de mantenimiento sera menor si lo hacéis entre todos.

Este repositorio, puede ser todo lo complejo / concreto que quieras. Para empezar probablemente te sirva con una plantilla donde vas añadiendo apartados según vas haciendo propuestas. En el momento en que detectes que esto es insuficiente busca una alternativa con la que te sientas cómodo y ponte con ella. Eso si, siempre de menos a más y basándote en el principio de simplicidad (KISS - Keep It Short and Simple o mejor, Keep It Simple, Stupid).

Es inevitable ya que si no lo haces el coste de las propuestas sera altísimo…

Trabaja hoy para ser más eficiente mañana.

Y tu, ¿que opinas?, ¿como hacéis las propuestas en tu empresa? Espero comentarios…

Por qué me gusta utilizar infografías para comunicar

Infografías con los datos de uso de NBICI.es

Infografías con los datos de uso de NBICI.es

En los últimos meses, a raíz de verme inmerso en la conceptualización, desarrollo y evolución de NBICI.es, me estoy encontrando en al tesitura de tener que comunicar / publicar resultados y datos estadísticos de la evolución de la plataforma. NBICI.es es un sitio muy chulo donde vamos haciéndonos eco de diferentes eventos relacionados con el mundo de la bicicleta. Si te gusta participar en marchas BTT no te lo pierdas que seguro que te va a gustar.

Las infografías, son herramientas que nos ayudan a representar de manera concisa y visual noticias, procesos, acontecimientos etc. en relación a un tema concreto.

Cada mes desde los tres últimos, vengo publicando una serie de infografías con el resumen de la actividad del sitio. Ayer mismo publique la última y aunque inevitablemente llevan más trabajo que cumplimentar una hoja excel, merecen la pena. ¿Por qué? Sigue leyendo.

Nos ayudan a comunicar y comprender la información.

Si hay algo que me gusta de las infografías es el uso de elementos de diseño gráfico aportando valor. Las infografías normalmente utilizan lo mejor de esta disciplina para sintetizar la información y que el receptor sea capaz de entender de forma rápida y sencilla de lo que se habla. Las infografías ayudan a crear contenidos de calidad.

Los datos, mostrados, complementados con los elementos gráficos de valor construyen un todo que cumple el cometido de comunicar de forma mucho más eficiente.

Simplifican y sintetizan.

Otra cosa que me gusta de las infografías es que te obligan a simplificar y sintetizar la información que vas a exponer. En una infografía es primordial no irse por las ramas, si no todo lo contrario. Ir al grano.

Lo bueno, si breve dos veces bueno.

Te permiten destacar.

Claro no, meridiano. No hay color entre un informe al uso, una nota de prensa y una infografía. Te permite destacar y normalmente es para bien. Además teniendo en cuenta el tono desenfadado que se puede utilizar, te permiten también trabajar la imagen de marca a la vez que das datos o hablas de un concepto concreto.

En NBICI.es recientemente hemos creado varias infografías que resumen los datos de los primeros meses:

Y tu, ¿Qué es lo que piensas?

Qué es experiencia de usuario y quienes tienen que velar porque esta sea buena

Hace ya algunos días que no pasaba por aquí, no obstante, esta semana por fin he sacado un poquito de tiempo para escribir un post que me ronda por la cabeza desde hace mucho tiempo. El post lo he publicado en el blog de Kabel Sistemas de Información y habla sobre que es la experiencia de usuario, que no es y sobre todo quienes son las personas que han de velar porque esta, sea siempre buena.

El susodicho post podéis leerlo a continuación:

¿Que es la Experiencia de Usuario?

De un tiempo a esta parte, por todos lados se esta hablando de experiencia de usuario (ux), no obstante, continuamente nos encontramos con situaciones que ponen de manifiesto que en el sector todavía no está muy claro que es eso de la experiencia de usuario y quienes son los responsables de conseguir una buena experiencia de usuario.

Wikipedia, define la experiencia de usuario como:

Conjunto de factores y elementos relativos a la interacción del usuario, con un entorno o dispositivo concretos, cuyo resultado es la generación de una percepción positiva o negativa de dicho servicio, producto o dispositivo.

Normalmente cuando en el ámbito del desarrollo de software se habla de experiencia de usuario, nos encontramos con que de lo que se habla realmente es de usabilidad y diseño gráfico y según la definición anteriormente citada, podemos deducir que la experiencia de usuario  desde luego tiene que ver con aspectos como usabilidad y diseño gráfico, pero realmente con lo que tiene que ver es con la percepción.

Por lo tanto:

Experiencia de usuario, no es usabilidad.
Experiencia de usuario no es diseño gráfico.

Experiencia de usuario es más que todo esto, experiencia de usuario es percepción.

La percepción es el acto de recibir, interpretar y comprender a través de la psiquis las señales sensoriales que provienen de los cinco sentidos orgánicos.

Según Wikipedia:

La percepción obedece a los estímulos cerebrales logrados a través de los 5 sentidos, vista, olfato, tacto, auditivo, gusto, los cuales dan una realidad física del medio ambiente.

Por lo tanto, podemos afirmar que la experiencia de usuario cuando interactuamos con un producto concreto, sera buena o mala en base a los estímulos recibidos y la manifestación del producto en una realidad física. En desarrollo de software, los estímulos que vamos a recibir, van a ser los relativos a eficiencia, sencillez, visibilidad y calidad de la información, navegabilidad, encontrabilidad, consistencia, estándares, performance o gestión de los errores por citar algunos.

No obstante, de todos estos factores enumerados, encontramos que varios de ellos, si que están totalmente relacionados con el desarrollo de interfaces de usuario, pero también encontramos otros, que tienen más que ver con negocio y arquitectura del producto.

¿Quienes son los responsables de trabajar la experiencia de usuario?

Por lo general, se identifican a los arquitectos de información, diseñadores de interacción o diseñadores gráficos como los responsables de definir, trabajar y conseguir una experiencia de usuario buena, pero esto es un error.

El responsable de conseguir una buena experiencia de usuario es el equipo.

El equipo de desarrollo es el responsable de la experiencia de usuario, ya que es muy difícil encontrar una única figura que pueda ejecutar las acciones necesarias para garantizar que la experiencia de usuario es buena, principalmente porque para conseguir una buena experiencia de usuario, tenemos que trabajar aspectos de disciplinas muy diferentes.

Por un lado, tenemos que tener un responsable de producto (Product Owner) que además de velar por los aspectos relativos al negocio, sea consciente de que una buena experiencia de usuario es directamente proporcional a la calidad del producto y en muchos casos, también al éxito del mismo.

Por otro lado, el líder tecnológico del proyecto, además de velar por el diseño, arquitectura y calidad del software, también tiene que velar por la experiencia de usuario que en su ámbito de actuación, se traduce en performance.

Las aplicaciones han de ser rápidas y ágiles, y este objetivo, lo perseguirán tanto el arquitecto como los desarrolladores.

Y por supuesto, arquitectos de información, diseñadores de interacción y diseñadores gráficos, concibiendo una interfaz de usuario usable, accesible y amigable, con buena navegabilidad, con una acceso a la información sencillo, haciendo uso del diseño gráfico como medio no como un fin en si mismo.

No hay ningún producto de calidad y éxito en el mercado que tenga una mala experiencia de usuario o dicho de otra forma, la totalidad de los productos que hay en el mercado que han tenido éxito, tienen una experiencia de usuario excelente.

Pensad en los iPods de hace 6 años.

¿Y vosotros qué opináis?

El concepto de terminado en el mundo del desarrollo de software

La semana pasada, en medio de la vorágine que esta suponiendo este mes de Agosto, escribí un post en el blog de Kabel Sistemas de Información donde hablaba sobre el concepto del trabajo terminado.

En el ámbito del desarrollo del software, vamos a encontrar que en función del rol que interectue con una tarea, normalmente el significado de terminado es diferente. Es muy importante, definir que se espera de una tarea y cual es el camino para conseguirlo. A continuación podéis leer el post, o podeís acceder al post que escribir originalmente en el blog de Kabel.

Acabado, cerrado o terminado, son palabras usadas comúnmente para referirnos a lo mismo: el momento en el que a una tarea no es necesario dedicarle más tiempo.

Probablemente el concepto de terminado, sea uno de los conceptos que más controversia levanta en el mundo del desarrollo de software, ya que es algo muy habitual que el concepto de terminado sea diferente para los diferentes roles que intervienen el ciclo de desarrollo y por lo tanto, cuando una persona del equipo de desarrollo dice esto esta terminado o cerrado, el jefe de proyecto, el arquitecto o el product owner esperan una resultado concreto que casi seguro es diferente al que espera alcanzar el desarrollador.

¿Que supone esto? tareas que se reabren / tareas que no se cierran, fricciones y en algunos casos frustración.

Evitar los problemas que surgen en relación al trabajo terminado es un propósito que tiene que perseguir la persona que esta liderando el desarrollo del proyecto y además, tenemos que entender la importancia que tiene ya este concepto esta directamente relacionado con otros de gran importancia, como la evolución del proyecto o el trabajo ideal.

Evitar los problemas que surgen en torno al trabajo terminado es algo asumible, simplemente, prueba lo siguiente:

Define cuando se encuentran las tareas terminadas.

Las tareas se encuentran terminadas cuando el responsable de hacer las pruebas dice que esta terminada.

Sencillo, contundente y sin dejar lugar a ningún tipo de duda. Una tarea estara acabada cuando la persona que prueba dice que esta acaba y que no es necesario dedicarle más tiempo.

Los hay que también defienden que una tarea esta acabada cuando una vez se ha desplegado la solución funciona en un entorno idéntico al que será el entorno de producción. Más o menos es lo mismo, ya que cuando decimos que el responsable de pruebas dice que esta acabada, esto implica que la solución ha tenido que desplegarse, que la solución ha de ser estable etc.

Una tarea estará terminada cuando el responsable de hacer las pruebas dice que esta terminada. En esta afirmación hay una parte muy importante que es “el responsable de hacer las pruebas”, es decir, damos por hecho que tendremos una persona implicada en el proyecto cuya labor sera probar y decir que es lo que esta y que no esta cerrado. Una persona que en definitiva se responsabiliza de lo que se va desarrollando y de que los  acabados y niveles de calidad del producto son suficientes.

Define que significa terminado y que niveles de calidad esperas cuando algo esta terminado.

Comparte con el equipo de desarrollo que esperamos cuando algo esta terminado. La comunicación dentro del equipo es directamente proporcional al resultado del ciclo de desarrollo. En relación a las tareas que se encuentran hechas y las que no lo están, también. Como hemos dicho en la introducción normalmente nos encontramos que el concepto de terminado es diferente en base al role que desempeña cada uno de los miembros del equipos, así pues, unifica el concepto de terminado, deja claro cuando esta terminada una tarea y que es lo que implica.

Un buen ejercicio, es describir que es lo que se espera de cada una de las tareas y dejarlo escrito. Evidentemente esto tiene un coste en la gestión / creación de tareas, pero este sobre coste sera siempre inferior al coste que tiene sentarse con cada miembro del equipo que participa en el desarrollo de una tarea y contarle que esperas de ella o por supuesto, del coste que tiene esperar un resultado sin especificar cual es el resultado.

En un proyecto en el que participé, nos encontramos que el día que nos hicieron una demo del proyecto con las tareas terminadas, no se había realizado ningún trabajo en relación a la interfaz de usuario. Cuando nos hicieron la demo del supuesto trabajo terminado y preguntamos que pasaba con la solución ya que no tenía una hoja de estilos que plasmara la imagen corporativa del cliente ni ayudara a comprender lo que se le estaba exponiendo al usuario final, la respuesta fue:

El trabajo esta hecho, los estilos son interfaz.

Poco que decir al respecto la verdad. No obstante, ¿Que es lo que ha pasado para que un proyecto se considere terminado cuando falta por desarrollar una de las piezas más importantes del mismo?

No utilices el termino terminado.

Terminado es un concepto demasiado absoluto, muchas veces lo utilizamos pero no siempre es el mejor. Es decir, dado que vamos a tener en el equipo una persona que va a ser el responsable de definir que esta terminado, trata de que el termino terminado solo lo utilice él.

Desde el punto de vista del desarrollador, puedes utilizar otros términos, términos no tan absolutos que te dan margen para interactuar con las tareas, por ejemplo, en scrum, es un formalismo comúnmente aceptado utilizar los términos rojo y verde.

  • Rojo cuando la tarea se encuentra en progreso.
  • Verde cuando ya se ha realizado el trabajo y podemos considerarlo hecho.

Como conclusión, evitar los problemas que surgen en relación al trabajo terminado, es tan sencillo como hacerle ver al equipo cuando se puede dar una tarea por cerrada, quien dice que esta abierto y qué está cerrado y sobre todo que todas las personas que intervienen en el ciclo de desarrollo, tengan el mismo concepto de lo que supone que algo este terminado.

Y a tí, ¿que te parece? Espero comentarios.