Developing Frogtek

El blog del Departamento de Tecnología

Etiqueta: agile (página 1 de 3)

Trello y nuestro workflow de trabajo

Ya contamos en un post anterior parte del proceso de selección en el área de tecnología de Frogtek. Pero todavía podemos desvelar algún secreto más, y es que una de las primeras cosas que recibes al entrar el grupo de tecnología es una cuenta de Trello. Hasta ese momento podías conocer Trello o no; podías haberlo usado un poco para algunos proyectos, o tal vez para gestionar tus propias tareas. Pero ahora, con el acceso a los tableros de Frogtek… ya no hay vuelta atrás.

Fue una de las cosas que más me impactó: todo tiene una tarjeta de Trello. Y sí, lo admito, al principio es un poco overwhelming, tantos tableros, tantas notificaciones. Pero ahora ya está en el ADN, ya forma parte de uno mismo. Y si no está en Trello, seguramente, no ha pasado. De todas los procesos que tenemos trellificados me gustaría centrarme hoy en uno: las peticiones que se realizan a tecnología.
Seguir leyendo

Somos ágiles, hacemos stand-ups

Como crítica constructiva o destructiva, la frase se utiliza muchas veces. Uno lee artículos, escucha podcasts, ve charlas, … Stand-up para arriba, stand-up para abajo. Uno ya no sabe que pensar, casi mejor me quedo en la cama un rato más, que ahora en invierno se está muy “agustico”. ¡No! analicemos nuestros stand-up.

PRIMERO UN POCO DE REALIDAD

La realidad es que desde el teletrabajo los stand-ups solemos hacerlos sentados. Pero conservan el nombre. Y sí, a veces se alargan. En lugar de ver un círculo de gente rodeada de post-its y tareas en los cristales, veo los caretos de todos mis compañeros en primer plano (un porcentaje muy alto no nos hemos peinado, pero los auriculares lo disimulan). Eso sí, en lugar de post-its tengo mi libreta y un tablero de Trello con lo que he hecho, las siguientes tareas y lo que quiero comentar.

Empieza el stand-up, suele empezar el que ha compartido el enlace, tradición (todavía no es automático, ¡por el amor del MEV!).
Lo normal:
– Sujeto 1: Ayer hice esto y aquello, me queda pendiente esto que lo hago ahora por la mañana. Luego me pongo con aquello. Hoy trabajaré a partir de las 11:00 que me voy al médico.

Normalmente la cosa acaba aquí. Pero hay diferentes casuísticas interesantes.
Seguir leyendo

Sobre código, revisiones y despliegues

Lo sé. Lo admito. Me encanta la sensación de acabar de programar algo a las 5 de la mañana. Satisfecho. Orgulloso. Tal vez con un exceso de cafeína. Mergeas, despliegas y a dormir con una sonrisa. En tus sueños un cowboy se monta en su caballo, llega al pueblo y desmonta bajo la mirada de los pueblerinos. Captura a los malos, se sacude el polvo y se va triunfal con los suspiros de aquellos y aquellas a sus espaldas. Sí, ese desarrollador cowboy que es capaz de hacerlo todo, sin hablar con nadie, sin consensuar nada.

Te levantas con la sonrisa todavía en la boca (dejemos de lado babas y otros sucesos paranormales). Vas al ordenador y ¡boom!, algo ha ido mal. La explosión despierta hasta al cowboy de tus sueños, que se tapa con una piel y se acurruca junto a la hoguera, ahora hay miedo en ojos del valiente cowboy. Creo que esta historia nos suena a muchos y a muchas. Y sí, los sueños y las sonrisas, e incluso las risas molan; pero mejor dejar las explosiones para nuestros proyectos locos y no para los serios, o para el trabajo.

Historias de usuario públicas. Ramas. Revisión de código. Pruebas manuales. Pruebas automáticas. Despliegues. El cowboy puede hacer lo que quiera, que vamos a hacer que esto no explote (o mejor dicho, que explote cuanto menos, mejor).
Seguir leyendo

Charla de Ángel Medinilla en Walqa: el biopic

El pasado lunes día 12 de noviembre tuvimos el honor de recibir a Ángel Medinilla (@angel_m) en el parque tecnológico Walqa (aprovechando su décimo aniversario) para que diera una charla sobre Agile en la empresa. Para el que no lo conozca, Ángel es un coach y consultor agile que lleva ya un tiempo recorriéndose el mundo asesorando a empresas sobre agilismo y contando su experiencia al respecto.

Como no me gustan mucho las notas de prensa en las que se fusila todo lo que dice el conferenciante, voy a escribir acerca de qué reflexiones he inferido tras asistir a su charla. Lo cual nos lleva al siguiente disclaimer…

DISCLAIMER: los siguientes puntos no están firmados por el propio Medinilla, son solo reflexiones obtenidas por mi parte. Al igual que con los biopics (películas basadas en la vida de alguien famoso), cualquier parecido con la realidad puede no ser cierto 😀

  • Las empresas de hoy en día son hijas de las cadenas de montaje y nietas del ejército de Roma. Estamos trabajando en compañías herederas de las ideas de Taylor y Ford (muchas de ellas incluso tienen residuos de las primeras grandes empresas: los ejércitos) y con ello, arrastrando conceptos empresariales basados en paradigmas del pasado, que pueden funcionar para una cadena de montaje, pero no para compañías basadas en el conocimiento. Suele circular por internet una anécdota graciosa: “¿Por qué los reactores de los cohetes de la NASA tienen la anchura de dos culos de caballo?… Pues bien, todo se debe a que los reactores han de ser trasladados hasta Cabo Cañaveral por tren, el ancho de las vías del tren se tomó en función del tamaño de los coches, y el coche en función del tamaño de la carretera, que es un legado del imperio romano, el cual quiso que la carretera tuviese el tamaño de dos caballos, para así permitir la circulación de carros.” Basándonos en esta anécdota, se me ocurre un paralelismo igual de gracioso: ¿Por qué algunos desarrolladores de software van a trabajar con traje y fichan nada más entrar?
  • No hay que ser esclavos de los estándares. Principalmente porque los estándares deberían revisarse continuamente. Siguiendo la filosofía lean, deberíamos usar estándares para asegurarnos de que todos estamos haciendo lo mismo. Intentar algo más complejo que eso solo va a conseguir que tengamos un sistema anquilosado difícil de renovar.
  • Muchos managers son sargentos chusqueros y deberían ser entrenadores. Donde las empresas basadas en los paradigmas de Taylor y Ford necesitaban de un supervisor que controlara la productividad de sus trabajadores, las empresas del conocimiento de hoy en día necesitan de líderes que sepan motivar y potenciar las capacidades de un equipo. Lo que llamaríamos en inglés un enabler, alguien que pueda conseguir que su equipo dé lo mejor de sí mismo.
  • Mejor que intentar ser agile es entender por qué queremos ser agile. Al igual que en el ejemplo del cargo cult, el hecho de poner post-its en la oficina para indicar las tareas (al estilo de las oficinas con sala de relax con el guitar hero porque Google la tiene) no va a hacer que nuestra empresa mejore. Tenemos que entender qué motivaciones tiene agile para poder comprender por qué queremos usar agile (¡o incluso si realmente queremos usarlo!)
  • Agile no es un paracaídas ni la pluma de Dumbo. No nos engañemos: la mera implantación de Agile no va a conseguir que hagamos software de calidad, ni que ingresemos más dinero, o que nuestros competidores vayan a la ruina. Es simplemente una metodología de desarrollo de proyectos mucho más orientada al cambio y a la mejora continua. Podemos migrar una empresa a agile, pero esto no va a  otorgarnos capacidad de mejora, entrega o adaptación. Estas capacidades son los requisitos para el camino Agile, no las recompensas.
  • Tenemos que ser escépticos respecto a Agile. Las metodologías ágiles representan un camino, una serie de filosofías que pueden ser de utilidad para las empresas. Pero no tiene por qué ser buenas para TU empresa. Como decía Henrik Kniberg, Scrum es una herramienta, puedes usarla como te plazca. Cada empresa es un mundo y como tal, es muy difícil que Agile te dé una solución personalizada. Eso sí, si modificas Scrum a tu antojo, luego no vayas diciendo por ahí que Scrum no te ha funcionado 😀

Slides de la charla en http://www.slideshare.net/proyectalis/agilidad-empresarial

¿Para qué sirve ser ágil en una start-up?

Mucho agile, mucho agile… pero si te descuidas puedes acabar en una empresa en la que lo único agile es el motor y para de contar, más cuando el equipo de producción, como en nuestro caso, está aislado del resto o directamente, como pasa en las consultoras, no hay resto. Ésta es un poco la conclusión que he obtenido tras leer los libros “Lean Start-up Method” de Eric Ries, “The four steps to the epiphany” de Steve Blank y después de conocer un poco el mundillo éste del agilismo en España… y por experiencia propia, por qué no decirlo.

Supongo que en parte es porque el mundo del software ibérico está principalmente orientado a programar para terceros y en ese caso ser ágil es “tan fácil” (y tan difícil) como pegarte unos años hasta que haces scrum, tdd y demás como Dios manda y conseguir que el cliente acuda a las reuniones y se involucre en el proceso de cada sprint. Pero la realidad es que detrás de los métodos ágiles hay mucho más y es algo de lo que no se oye hablar demasiado. Hace mucho que no acudo a ninguna AOS, ni CAS (siempre me coinciden con algo que no puedo dejar para otro momento), pero la primera CAS a la que acudí (2010) me encantó, sabíamos tan poco de métodos ágiles que cada charla era un nuevo mundo de conocimientos y posibilidades. Desde entonces si no yo, siempre alguien de Frogtek ha acudido a estos eventos y trasladado lo que allí ha aprendido. Últimamente, sin embargo, me empezó a sorprender que si bien toda la comunidad está muy interesada en ser técnicamente ágiles, no parece haber tanta ebullición, o al menos yo no la he detectado, una capa por encima de eso. Está bien tener un método de producción iterativo-incremental, está bien ofrecer al cliente (que muchas veces no es el usuario final, desgraciadamente) un proceso súper adaptable a sus cambios de humor y requisitos… pero estaría mejor dotarnos de los procesos, que tiene que haberlos, para utilizar este gran método para crear el producto que el usuario final necesita. Para ello no basta con que el equipo de desarrollo sea ágil, hay que aprovechar esa agilidad para que los equipos de marketing y ventas (o el product owner, o los encargados de desarrollo de cliente, o quien sea) puedan, a su vez, realizar sus propios experimentos, implementar sus propias métricas y tener sus propios objetivos iterativos e incrementales que nada tengan que ver con el desarrollo y sí con el negocio. Por eso, echo de menos, conceptos que Ries maneja en su libro como “indicadores vanidosos”, “indicadores accionables”, “análisis de cohortes”, “contabilidad de la innovación“… conceptos sin los que scrum, tdd, los sprints y todo lo demás no sirven más que para tener un proceso de desarrollo flexible y adaptable… lo cual no tiene porqué evitar que se acabe construyendo de forma eficiente y completamente flexiblemente un producto totalmente inútil. Supongo que, en España, el principal problema es precisamente que no existen muchas start-ups y hay, sin embargo, demasiadas factorías de software… y en una factoría de software es difícil vislumbrar nada más allá de lo técnico (por no hablar ya de meter baza) y suficiente se tiene con lidiar con el cliente.

Frogtek no es una software factory pero también hemos sufrido en parte ese problema. Tras varios años de trabajo teníamos un equipo de tecnología muy “agile” y muy “kaizen” que implementaba las “ocurrencias” de la empresa de manera eficiente y puntual. Ocurrencias, dicho en el mejor de los sentidos y con todo el cariño, que trataban de ser lo más meditadas posible y que suponíamos beneficiosas para los tenderos y que, lo fueran o no permanecían en el producto sine die. El problema de esta aproximación es que no es todo lo científica que debería ya se basa en asunciones que habría que comprobar, pero que rara vez se comprueban, por falta de tiempo y de proceso principalmente. No basta con implementar User Stories por muy bien definidas que estén, el cementerio está lleno de productos técnicamente impecables. Para solucionar esto en Frogtek vamos a utilizar una capa más de abstracción, basada en Épicas, que iría sobre los sprints de User Stories. Una Épica no es más que un objetivo del product owner para un sprint determinado. Algo así como el objetivo estratégico de alto nivel de mejorar el indicador X de la empresa en un x% (p.e. “hay que conseguir que el 80% de los tenderos levanten su inventario en menos de 2 horas”). Muchas veces, este tipo de mejoras no es cuestión de una sola User Story es, más bien y por limitarlo al producto, un conjunto de historias (“el producto debe adivinar los precios”, “el producto debe adivinar los costes”, “el producto debe proponer los productos más comunes”, “el interfaz debe cambiar así o asá”…) que se pueden desarrollar durante un sprint (de forma ágil, claro), la diferencia con nuestra aproximación pasada es que terminado el sprint el trabajo del product owner no ha hecho más que empezar y a la vez que se empieza a pensar en el sprint siguiente, tiene que echarle un ojo al indicador asociado a la Épica del sprint pasado con el objeto de aprender si los cambios en el producto están teniendo el efecto deseado en el comportamiento real de los usuarios o, por el contrario, no han servido para nada y se necesitan más cambios (volver a iterar).

 

El trabajo del product owner se complica, ya que como se ve en el dibujo el contenido del sprint N empieza a analizar incluso antes de que empiece el sprint N-1.  La secuencia es la siguiente:

  1. Recoger indicadores.
  2. Analizar indicadores y Épicas en evaluación para decidir los objetivos (creando nuevas o modificando Épicas).
  3. Desglosar las Épicas en historias de usuario.
  4. Preparar la historias de usuario (mock-ups, pruebas de usabilidad con clientes, más mock-ups…).
  5. Estimar historias de usuario.
  6. Ejecutar el sprint (incluyendo pruebas, instalación en friendly users, etc).
  7. Instalar nueva versión en usuarios.
  8. Vuelta a 1.

Normalmente los indicadores a recoger y analizar necesitan un tiempo hasta que se generan, al menos en nuestro caso, así que no será extraño que las Épicas que se evalúen en un momento dado se hayan implementado hace dos, tres o más sprints. Por lo tanto el PO, no sólo tiene que estar pendiente del sprint actual sino que tiene que pensar en las Épicas (objetivos estratégicos del producto) que querrá definir para el sprint siguiente, mientras que monitoriza meticulosamente los indicadores asociados a las Épicas que están ahora mismo en evaluación y que pueden seguir así por uno o varios sprints. Porque una Épica, como una User Story, tiene un ciclo de vida ¡e incluso su propia tabla! (se proponen, se discuten, se diseñan, se implementan, se evalúan y si están bien se archivan, muy propio para una tabla de kanban) pero a diferencia de una User Story la evaluación no depende de factores meramente técnicos, si no que es función del valor que aporte al usuario final (si está bien definida y si se monitoriza usando datos reales). El paralelismo con las User Stories también tiene otras ventajas, se puede medir el throughput en Épicas de un equipo, es decir, la velocidad de la empresa para poner hipótesis a prueba y aprender de la realidad, concepto directamente relacionado con las posibilidades de la empresa de sobrevivir.

Al final como en muchos aspectos de la vida, se pueden extraer unas cuantas enseñanzas muy interesantes: No llega más lejos la empresa que hace más User Stories, sino la que hace User Stories como consecuencia del aprendizaje validado de otras User Stories. Es importante tener un framework de gestión del trabajo ágil, pero más importante es integrar en el proceso de producción herramientas de medida como Google Analytics o Flurry que permitan obtener información sobre la utilización de las distintas funciones y que permitan discriminar entre distintos grupos de usuarios con distintas versiones para poder relacionar causas y efectos usando el análisis de cohortes (¿a los usuarios de la versión x+1 les ha ido mejor que los de la version x?). Así que ahí estamos en Frogtek, peleándonos, como buenos novatos, con Analytics y con nuestras propias métricas, discutiendo las métricas que debemos aplicar a las Épicas y tratando de encajar su ciclo de vida con el de definición e implementación de los sprints. Este post, más que una realidad, es una declaración de intenciones acerca de lo que queremos hacer para conseguir ser una “agile data-driven company” para lo cual es necesario ser ágil pero, visto lo visto, no suficiente.

Avances en burn-down charts: la “burn-up-down” chart

Hacemos Scrumban y eso nos ha obligado a hacer alguna que otra cosa curiosa. Una de ellas consistía en tener dos gráficas el burn-down para nuestras historias de Scrum (las planificadas) y el burn-up para nuestras historias de Kanban (las no planificadas). Básicamente se trataba de poner un objetivo de historias planificadas y una especie de tope a las historias no planificadas… planificar el trabajo que te va a llegar de forma no planificada tiene algo de absurdo, pero se puede hacer. No hay que medir el pasado y esperar que el futuro se comporte. Tener dos gráficas resulta un poco incómodo, aunque no es un gran problema. Reservar ya desde el principio una parte de tu ancho de banda a Kanban denota que tenemos unos POs un poco “volubles”. Tampoco pasa nada.

En cualquier caso en la última vuelta de tuerca a nuestro sistema hemos decidido superponer ambas gráficas para así poder saber de un vistazo cómo va el Sprint independientemente de haya habido mucho o poco Kanban. Aquí os pongo un ejemplo de nuestra “burn-up-down chart”:

En este caso la línea azul señala el ritmo ideal de completado de US de Scrum del Sprint. En rojo vemos la realidad, como la parte de Scrum lleva un pequeño retraso; en amarillo el Kanban real, las historias no planificadas que se han ido terminando. De esta gráfica podemos obtener la siguiente conclusión, la primera semana a pesar de que se acumuló retraso entre las historias planificadas el equipo de desarrollo cumplió con su objetivo (ya que lo que faltó de Scrum se hizo de Kanban), la segunda semana la cosa fue peor.

Al final la manera de leer esta gráfica es sencilla.

  • Si las gráficas amarilla y roja se cortan antes de terminar el Sprint el equipo de desarrollo ha cumplido su objetivo.
  • Cuanto más suba la línea amarilla peor planificación se hizo.

Scrum, Kanban y la matriz de Eisenhower

Érase una vez un Scrum Master que controlaba el proceso Scrumban que un equipo seguía. ¿Le pitan a alguien los oídos?. Dicho de otro modo, para que no se diga que aquí sólo escribimos para los “talibanes agilistas” ;P.

Erase una vez un gestor de un equipo encargado de llevar a cabo tareas planificadas y no planificadas en un periodo de tiempo determinado y cíclico. No sé cual de las dos introducciones es peor.

Érase, también, una vez un Product Owner malvado que no hacía más que meter Kanban en el sprint, haciendo sufrir al Scrum Master y poniendo a prueba la velocidad del equipo. El Scrum Master le insistía al equipo para que no dejara abandonadas las tareas de Scrum, mantuviera una velocidad de Scrum aceptable y consiguiera los objetivos del sprint. Y en estas llegó la retrospectiva y el equipo le afeó al Scrum Master que priorizara el Scrum frente al Kanban, ya que todos son hijos de Dios (del Product Owner en este caso). Así que el Scrum Master se puso a pensar y sacó las siguientes moralejas además de escribir este post.

  • El equipo tiene razón, en teoría, el Kanban es tan válido como el Scrum. La suma de todo nos da la velocidad total del equipo y si los puntos totales al final del sprint son iguales o mayores que los planificados el equipo habrá cumplido con su papel.
  • El Scrum Master también tiene razón, en la práctica, el Product Owner siempre, salvo cambios grandes de requerimientos, espera que todo el Scrum esté acabado en la fecha final de sprint. Si el Scrum se termina, el Scrum Master habrá cumplido con su papel.
  • El hecho de no tener definidos claramente las prioridades del Kanban (FIRE, PRIO, ASAP) puede fomentar estos problemas. El Kanban en Frogtek entra directamente en la pila de producto del sprint y se empieza antes o después en función de lo arriba que entre en la columna. Es decir, es priorizado junto con lo demás (hasta ahí bien), pero luego cuando entra y navega por las diferentes fases no tiene ni más, ni menos prioridad que el resto de lo que está en desarrollo. De ahí que el Scrum Master en algún caso acabe defendiendo lo planificado y el programador quiera que todo se valore por igual, ambos defendiendo su trabajo. Pero ¿debe hacerse?.

Aquí es cuando entra en juego la relación entre las tareas de Scrum, Kanban y la matriz de Eisenhower. Eisenhower se ve que era un tío muy organizado y las malas lenguas dicen que inventó el típico plano cartesiano con cuatro cuadrantes, con un eje señalando la importancia y otro la urgencia. Así tras analizar una tarea en un momento dado podía decidir qué hacer con ella:

  • Urgente e importante. Consejo de Eisenhower: ¡Hazla ya!. Consejo ágil: Normalmente esto es Scrum (en el peor de los casos esto entrará como Kanban de alta prioridad a mitad de sprint pero en ese caso es bastante fácil poner al Scrum Master y al equipo de acuerdo en lo importante que es sacarla la tarea cuanto antes adelante).
  • No urgente pero importante. Consejo de Eisenhower: Planifícala. Consejo ágil: Vuelve a analizarla en la siguiente ronda de planificación y métela como Scrum en el siguiente sprint cuando ya sea urgente e importante.
  • Urgente pero no importante. Consejo de Eisenhower: Delega. Consejo ágil: Normalmente esto es Kanban, ya que su urgencia suele salir a relucir a mitad de sprint y nunca tendrá la importancia suficiente para entrar como Scrum. Este tipo de tareas son las que crean conflicto a veces y las que acaban retrasando los sprints.
  • Ni urgente, ni importante. Consejo de Eisenhower: ¡A la basura!. Consejo ágil: si ves muchas de estas en tu tabla, cambia de Product Owner.

Simplificando un poco se podría asimilar Importante con Scrum y Urgente con Kanban. Es por eso que como Scrum Master creo que Scrum casi siempre debe ir por delante que Kanban. Siendo flexibles, claro. 🙂

Sprints fijos, entregables adaptables (I)

Cualquiera que nos haya seguido desde el inicio sabe que hemos cambiado de metodología varias veces. Unos lo llamarán Kaizen, otros lo llamarán “culo veo culo quiero”, otros lo llamarán “vagabundeos por la el mundo de la agilidad”. La cuestión es que empezamos con un SCRUM chapucero, evolucionamos a un Kanban de postal y ahora estamos con un ScrumBan del que nos podemos sentir bastante orgullosos.

El tamaño del sprint también ha sufrido alguna que otra modificación. Empezamos, como mandan los cánones, haciendo sprints de 2 semanas (casi tan difíciles de estimar como de implementar), el resultado, por novatos, fue tan malo que nuestra evolución por reacción nos llevo al lado contrario, “¿un sprint largo? ¡no!, mejor”, fuera sprints y viva el despliegue continuo. El despliegue continuo (también llamado bug continuo por aquellos tiempos), funcionó mientras teníamos una aplicación beta en un puñado de tiendas alrededor de nuestro apartamento de Bogotá. En cuanto nuestra red de tiendas y nuestra exigencia aumentó volvimos a los sprints, esta vez largos, de 2 meses, dada la gran dificultad para actualizar todas y cada una de las tiendas a mano y volvimos, por tanto, a Scrum pero con un toque de Kanban: Scrumban.

Pronto nos dimos cuenta de que el entorno real en el que se ejecutaba nuestra aplicación no era comparable al de nuestra oficina, ni a nada que pudiéramos reproducir en ella, así que seleccionamos una tienda como beta tester y decidimos instalarle antes las versiones que producíamos. Concretamente decidimos dividir nuestro sprint de dos meses en tres mini-sprints de 3 semanas e instalar la versión resultante de cada uno de esos mini-sprints en la tienda de nuestro compañero Boris para que él nos diera feedback temprano.

El resultado ha sido que las primeras historias que se implementan en el sprint no tienen que esperar dos meses para llegar a una tienda de verdad, sólo 3 semanas, de forma que detectamos los errores antes y los corregimos antes, además de que repartimos los tests exhaustivos pre-release durante todo el sprint en lugar de acumularlos todos al final y mantenemos la tensión (la buena, se entiende) del equipo de forma constante. No hemos, no obstante, modificado la estructura del sprint, que se planifica para dos meses, es decir, no hacemos planficación, demo y retrospectiva en cada uno de los mini-sprints, sino sólo en el sprint principal. Los mini-sprints nos marcan los hitos en los que es necesario alimentar a nuestro beta-tester para ir cazando errores complicados, (para los fáciles tenemos el TDD, los test de integración y demás) que de otra manera se macerarían durante unas cuantas semanas provocando una infección de las buenas al final del sprint.

Así llevamos varios meses y varios meses nos quedan por delante. Hasta que llegue un momento en el que el ritmo de añadir funcionalidad a TiendaTek disminuya, la necesidad de nuevas versiones también y todos nuestros esfuerzos pasen a un entorno mucho más amigable y actualizable como es la web, entonces… ¿qué haremos?

Los 10 ranamientos

Al igual que existen los 10 Mandamientos de Java que indican como usar el lenguaje de programación de manera eficiente, igual que Google tiene sus 10 Design Guidelines que marcan las reglas fundamentales que cualquier producto de Google tiene que cumplir, Frogtek, como no podía ser menos, tiene sus “10 ranamientos“. ¿Y qué es un ranamiento?, pues básicamente son una serie de reglas que nos hemos dado para diseñar productos para nuestros queridos tenderos de la base de la pirámide.

Mientras las guidelines de Google son genéricas y de alto nivel, las nuestras son bastante concretas y se centran en la experiencia de usuario que una persona de un país emergente (no necesariamente acostumbrada a la tecnología) debe tener con un dispositivo tan particular como un teléfono móvil. Así que perfecto, realmente podemos completar las Guidelines de Google con nuestras prácticas concretas para tener buen compendio de reglas y guías al encarar el diseño de un nuevo producto. El libro de cabecera que todo buen Product Owner y diseñador gráfico debe tener para trabajar en Frogtek (cortesía de nuestra PO favorita cuyo apellido tiene 2 vocales y 9 consonantes, Yael Schwartzman).

A saber:

  1. No pensarás que tú eres el usuario – Los tenderos no tienen por qué necesariamente estar familiarizados con la tecnología y desde luego no tienen tanto tiempo como nosotros en la oficina. No podemos diseñar pensando que nosotros somos los usuarios finales!
  2. Entenderás el contexto de uso – Los tenderos quieren vender y ponen su atención en vender, nuestra aplicación es una herramienta, no el centro de su universo. Nuestra aplicación los debe de ayudar a hacer estas tareas sin estorbarles.
  3. Escucharás al tendero – El equipo de diseño tiene como obligación visitar alguna tienda por lo menos una vez cada dos semanas con alguna pregunta clara en mente y dispuestos a escuchar recomendaciones generales. Todas las recomendaciones, sugerencias y problemas que veamos a través de la aplicación y del equipo de operaciones serán también tomadas en consideración.
  4. No harás al tendero esperar – La interacción con el lector y con la aplicación tiene que ser lo más rápida posible. Si no el tendero se desespera y lo deja de usar por que tiene que atender a varios clientes impacientes a la vez.
  5. No pondrás texto menor a 12 puntos – No queremos que nuestros tenderos se queden ciegos!!
  6. No sacarás cosas de la aplicación sin pedirle permiso al tendero – Su opinión es a que vale, no la nuestra.
  7. No meterás cosas en la aplicación a menos que añada un valor claro para el usuario final – Sólo podemos añadir funcionalidad que claramente añada valor al tendero, empresas fabricantes o equipo de operaciones.
  8. Seguirás principios de diseño establecidos para el diseño de interfaces
    1. Coherencia – con el mundo real y el resto de la aplicación (Usar terminología sacada de la boca del tendero, usar metáforas del mundo real cuando aplique, coherencia interna entre pantallas).
    2. Flexibilidad – varias maneras para hacer lo mismo si los usuarios lo piden.
    3. Eficiencia – encontrar el menor número de pasos para completar una tarea. Proveer “wizards” para simplificar tareas difíciles.
    4. Simplicidad – Encontrar el diseño (tanto gráfico como interactivo) más simple… que no le sobre nada.
    5. Buenos sistemas de retroalimentación y ayuda – entender en que estado está el sistema y proporcionar ayuda en contexto todo el tiempo, hacer siempre accesible la ayuda y trata de educar en cada ocasión posible
    6. Transparencia – no esconder información que el usuario necesita conocer.
    7. Sistemas de prevención y recuperación de errores – evitar errores pero proporcionar al usuario con una manera de recuperarse de ellos si los hay. No queremos callejones sin salida.
    8. Uso de estándares – utilizar elementos de la UI de Android  siempre que sea posible.
    9. Baja carga de memoria del usuario – el interfaz debe ayudar y guiar al usuario al realizar una tarea, no dejar el peso en el usuario.
    10. Aprendible – el uso de la aplicación se aprende de manera orgánica con su manejo.
    11. Satisfactoria – una experiencia satisfactoria que guste la aplicación para que nunca dejen de usarla!
  9. Seguirás principios de diseño establecidos para el diseño de interfaces móviles y touch screens
    1. Minimizar input de usuario (uso mínimo del teclado)
    2. Minimizar el scroll vertical y evitar scroll horizontal
    3. Minimizar el número de pasos a ejecutar
    4. Proveer mensajes de error útiles
    5. Priorizar la información en cada pantalla (qué es lo más importante que quieres que el usuario vea)
    6. Controlar los cambios de orientación
    7. Apoyar uso de trackball
    8. Visibilidad de efectos causados por acciones (presionar botones, seleccionar, etc)
  10. Un botón no debe tener más de 2 palabras (palabra + conectivo + palabra).
  11. EXTRA: Seguirás los lineamientos de diseño de interface de Google :

    1. Useful: focus on people – their lives, their work, their dreams.
    2. Fast: every millisecond counts.
    3. Simple: simplicity is powerful.
    4. Engaging: engage beginners and attract experts.
    5. Innovative: dare to be innovative.
    6. Universal: design for the world.
    7. Profitable: plan for today’s and tomorrow’s business.
    8. Beautiful: delight the eye without distracting the mind.
    9. Trustworthy: be worthy of people’s trust.
    10. Personable: add a human touch.

 

Detalles para el Coding Dojo

Rubén ha publicado en su blog los detalles de la kata que haremos el próximo día 8 de abril. Se trata de la conocida String Calculator: conéctate a su página para conocer los detalles del enunciado y los consejos de Rubén para iniciarte en el TDD.

Aún tenemos huecos para el Dojo, ¡nos vemos en menos de dos semanas!.

Antiguas entradas