Global Day of Code Retreat en Aragón

Tenemos el placer de anunciar que, junto con Teresa Oliver (más conocida en twitter como @tolivern) y el Parque Tecnológico Walqa, Frogtek va a organizar el Global Day of Code Retreat en Aragón.

¿Qué es el Global Day of Code Retreat?. Corey Haines lo explica mucho mejor que yo, pero en pocas palabras se podría decir que es un día para celebrar la pasión por el software y por el craftmanship, palabro que se refiere a la calidad personal que un artesano pone en su trabajo y que muchos programadores se esfuerzan por poner en el suyo.

¿Cómo lo vamos a celebrar?. Con una especie de gran Coding Dojo de un día entero de duración que llevaremos a cabo simultáneamente con decenas de ciudades en otras partes del mundo. En Aragón, los programadores que estén por la zona y quieran pasar un día de práctica intensiva de diseño y programación están invitados a unirse a nosotros en el edificio de servicios generales (el de la cafetería) del Parque Tecnológico Walqa en Huesca. Será el próximo 3 de Diciembre y contaremos con un facilitador de lujo, Sebastián Hermida. Sebastian posee el acento raro de los vídeos de http://holatdd.com. Le gusta el fresco aroma del verde de los tests y la programacion por pares. Intenta hacer que escribir tests sea divertido con http://happyprog.com. Quiere que te lo pases en grande hablando y programando en ingles con http://elkataingles.comDespués de 10 años fuera del pais, vuelve a disfrutar de España empezando una nueva aventura con http://path11.com, de la que es co-fundador junto con, entre otras personas, otro de los grandes, Enrique Comba. No te lo pierdas y ven a conocer gente interesante a Walqa.

Algunos temas logísticos:

  • Horario: de 10:00 a 18:00
  • Lugar: Edificio de Servicios Generales del Parque Tecnológico Walqa
  • Precio: Gratuito
  • Inscripciones: mandando un correo con título “Inscripción Code Retreat” y con tu nombre a walqa@ptwalqa.com
  • Número de plazas: mínimo 12, máximo 30
  • Comida: Walqa nos pone café y galletas a discrección, para la comida hemos negociado un menú de 9€ en la cafetería
  • Trae tu propio ordenador!

Un saludo y os esperamos a todos en Walqa. ¡Con todo esto y otras sorpresas!.

Actualización: además de la inscripción oficial vía mail puedes unirte al evento en la web de Code Retreat donde puedes ver parte de la gente que va a acudir y mandar comentarios y propuestas.

Posted in miscelánea | Tagged , , , , | 2 Comments

Tabla de kanban para las retrospectivas

Al principio nuestras reuniones de retrospectiva eran de lo más… cómo decirlo sin ofender a nadie… anárquico. Tanto en contenido como en periodicidad, es decir, las hacíamos cuando queríamos y como queríamos. Podían pasar meses entre una y otra, y cuando por fin hacíamos una nos dábamos cuenta de lo útiles que eran y la cantidad de cosas interesantes que surgían. Las ha habido incluso que han supuesto un punto de inflexión en nuestra manera de trabajar, como aquella que hicimos con la excusa de que algunos habían acudido a un evento llamado AOS en una ciudad llamada Barcelona.

Con el tiempo, y conforme te haces con todos los procesos y ellos dejan de dominarte a ti, hemos sido siendo más constantes y periódicos con estas reuniones. Incluso nos compramos un libro, Agile Retrospectives (del cual he de reconocer que sólo he leído los primeros capítulos) e investigamos por internet sobre la mejor manera de hacerlas. Hay infinidad de técnicas que se pueden aplicar. Nosotros optamos por una de lo más sencillo. Básicamente cada miembro del equipo escribe en uno o varios post-its las cosas que han ido bien y las cosas que han ido mal en el último mes. Se ponen en común y se agrupan por temas, de forma que podemos identificar cuales son las principales virtudes que debemos fortalecer y cuales los principales problemas que hay que paliar. Sigue una discusión sobre estos temas de la cual obtenemos una lista de puntos de acción que se revisan de retrospectiva en retrospectiva. Además de puntos de acción también salen sugerencias y recomendaciones (o lo que podríamos llamar puntos de acción “vagos“… del estilo de “sed todos buenos“). Estas recomendaciones son un problema porque no es fácil hacer un seguimiento de su cumplimiento ya que no son objetivos SMART. En la última parte de la reunión debatimos también sobre las ideas que cualquiera haya incluido en la excel que tenemos para “ideas a discutir durante la retrospectiva”.

Llevamos ya varios meses siendo muy regulares con este tema y ahora hemos decidido dar un paso más y crear una tabla de kanban para ilustrar el proceso. Nos gustan los post-its y ayudan a decorar la oficina… qué se le va a hacer!!.

En la foto podéis ver cómo en verde y rojo apuntamos las cosas buenas y las malas, para que a nadie se le olviden. Más importante aún son los puntos de acción cuyo seguimiento realizamos con una tabla que no puede ser más simple. Adicionalmente tenemos nuestro apartado de sugerencias del mes… a ver si teniéndolas en la sala de reuniones a la vista, las tenemos más presentes. Si esto no funciona optaremos por recitarlas todas la mañanas en plan mantra antes del stand-up. Algo del estilo de:

  • Ser QA no me da derecho a hacer cowboy committing
  • Me flagelaré de forma inmisericorde si el stand-up dura más de 25 minutos

Muchas veces hemos oído que la reunión de retrospectiva es la más importante de todas las reuniones que conforman el espíritu ágil. Encarna la esencia del Kaizen y da la oportunidad de debatir, aportar y enriquecerse (espiritualmente, claro). He de reconocer que, personalmente, veo como muchas de estas reuniones suponen un soplo de aire fresco en Frogtek. Y veo, no sin orgullo, como nuestro equipo se autogestiona y mejora de forma imparable, día tras día y mes tras mes. Supongo que son los pequeños placeres del Scrum Master que no programa, dado que no puedo hacer el baile de la victoria tras compilar por última vez la loser story de turno.

 

Posted in agile, metodología, miscelánea | Tagged , , , | 4 Comments

Cuarta Carrera del Cerdito y Kudos en Frogtek

Esta semana ha terminado nuestra cuarta carrera del cerdito y Julio García Martín se ha llevado el gato al agua (el cerdo más bien) tras unos 5 meses impecables en los que ha sido el más regular y siempre muy productivo. Los que nos leen desde que empezamos ya saben de que va esto de la carrera del cerdito, básicamente una carrera interna por ver quien es capaz de llegar antes a 50 US terminadas, aprobadas y archivadas. Es una carrera que premia principalmente la productividad. Hace unas semanas incluimos una pequeña modificación consistente en valorar también, negativamente en este caso, los “cerditos” esos pequeños fallos que se cometen de vez en cuando y que hacen que una historia no supere correctamente la fase de pruebas. Concretando, una historia finalizada correctamente a la primera, vale un punto; si es a la segunda sólo da medio punto, si es a la tercera ninguno e incluso puede puntuar negativo si el programador tiene la diabólica cualidad de perseverar en el error. La idea era principalmente modificar nuestro pequeño juego para no sólo premiar la rapidez, si no también la calidad. El sutil cambio de reglas a mitad de carrera ni inmutó a Julio que se ha hecho con esta edición con gran suficiencia. Aquí le tenemos recibiendo el premio de incalculable valor, un pollo de $10 y un gomet en forma de estrella para el monitor, de manos del anterior ganador.

La carrera del cerdito está bien pero nos faltaba algo… y en estas que hace ya unos meses vimos un tweet de @jmbeas que enlazaba un post de @david_bonilla y junto con el tweet vimos la luz… bueno, es un decir, por no exagerar diremos que nos pareció buena idea y decidimos que con el premio al campeón de la carrera daríamos otro premio. Un KUDOS de esos, que traducido viene que significar un premio otorgado por el equipo y para alguien del equipo. Nosotros lo hemos hecho así:

  1. Todos nominamos a una persona (no vale nominarse a si mismo). Por algo concreto, lo que sea, cuanto más concreto mejor… que haya pasado desde el final de la última carrera. Puede ser algo técnico, o no. Puede ser por haberse esforzado mucho en algo, puede ser por echar una mano aquel día que tanto se necesitaba, puede ser por saber poner un toque humor en momentos complicados. Por lo que sea.
  2. Todos damos tres votos a las tres nominaciones que más nos gustan (no vale votarse a si mismo si te han nominado). Las tres nominaciones con más votos pasan a la final.
  3. En la final todos damos un voto a la nominación que más nos gusta (de nuevo no vale votarse a si mismo). Y el ganador se convierte en el afortunado poseedor de… ¡un pollo y un gomet!.

En la primera edición de los KUDOS Frogtek los finalistas fueron:

  • Javier Linares por su papel en los últimos meses como QA, siempre atento a todos los bugs, atendiendo a todas las reuniones que nuestros compañeros de Latam tienen a horas intempestivas…
  • Pedro Fraca por su gran mejora durante este último año y por su gran trabajo con las historias más complicadas de un proyecto de cuyo nombre no quiero acordarme y que ha sido el protagonista del final de nuestro último sprint.
  • Alberto Gualis, por “kamikaze”… a lo que es lo mismo, porque no le tiene miedo a nada y se atreve con todo.

Y el ganador fue: ¡Javier Linares!. Y aquí le vemos recibiendo el premio a manos del presentador de la gala.

Es la primera vez que lo hacemos. El tiempo dirá si es buena idea o no, si persiste, si ilusiona. Pero mi impresión ayer fue que el rato que pasamos nominándonos, votándonos, el buen rollo que se generó (y que por otro lado siempre hay en la oficina) y la oportunidad de agradecer a tus compañeros por aquellas cosas que tan bien hacen… son impagables.

Posted in miscelánea | 2 Comments

Pomodoros de verdad

La última semana tuvimos el placer de acoger en las oficinas de Frogtek al freelance y experto en craftmanship Enrique Comba (@ecomba), el cual trabajó codo con codo con nosotros para ayudarnos a mejorar nuestro proceso.

Siendo un experto en la materia como es él, aprovechamos para preguntarle cómo mejorar nuestros pomodoros. La técnica del pomodoro es un método de timeboxing (administración del tiempo) para realizar tareas en periodos alternos de trabajo exhaustivo y pausas. Nosotros ya habíamos integrado esta técnica a nuestro trabajo habitual, y esto era lo que sabíamos:

  • Cada pomodoro consiste en un periodo de trabajo continuo de 25 minutos.
  • Durante ese tiempo, hay que trabajar concentrándose en la tareaevitando cualquier distracción (correo, twitter, etc.). Algunas distracciones, sin embargo, son inevitables, como otros compañeros preguntando una duda, una llamada al teléfono, etc.
  • Un pomodoro es indivisible (no existe medio pomodoro). Lo utilizamos como unidad atómica de trabajo.
  • Después de cada pomodoro, hay que tomar una pausa breve de 5 minutos.
  • Después de un cierto número de pomodoros (entre 3 y 5 en nuestro caso) hay que tomar un descanso largo, de entre 15 y 25 minutos.
  • Al principio de cada jornada de trabajo, hay que planificar los pomodoros y descansos que se van a realizar.
  • Además hay que estimar cuánto tiempo (medido en pomodoros) va a costar realizar una tarea determinada.

Sin embargo, Enrique nos dio algunos consejos sobre las pausas, que no estabamos aplicando:

  • Es muy importante levantarse del asiento e incluse hacer ejercicios para evitar contracturas.
  • Debe intentar dejarse la mente en blanco. Esto es debido a que nuestro cerebro almacena la información y crea conexiones o momentos de inactividad, como durante el sueño.
  • No vale mirar el correo o twitter. Si es necesario utilizarlo, mejor tomar un pomodoro de “comunicación” de 25 minutos para realizar este tipo de tareas.

Sobre las distracciones:

  • Cualquier distracción (tanto interna como externa) debe anotarse en un papel, indicando su procedencia.
  • Al acabar la jornada, habrá que revisar la lista de distracciones y comprobar si pueden reducirse de alguna manera. En caso contrario, intentar agruparlas dentro de un mismo pomodoro.

Para más información, recomiendo leer este PDF del propio creador de la Técnica Pomodoro, Francesco Cirillo.

Posted in eficiencia, herramientas, metodología, programación | Tagged , , , | Leave a comment

Produce el mejor código que puedas

Leyendo un post de Lisa Crispin he leído algo que me ha hecho recapacitar sobre el modo en que programo.

He exhorted us every day to write code that we’d be proud to take home and show our moms. He told us over and over, “I don’t care how much you get done, or whether you meet some deadline. I only care that you produce the best quality that you can.”

Traducción al español

Y ahí le doy toda la razón. Deberíamos escribir código del que estuviéramos orgullosos.  Y reconozco que yo no lo hago o no tanto como debería.

Por eso me encanta que me lo recuerden de vez en cuando. Porque si no serán los propios bugs que he generado los que me demuestren que no debería correr tanto o escribir tan pocos tests…

Posted in miscelánea | Leave a comment

Empezando a usar Git

Como alguna vez hemos comentado ya, en Frogtek usamos SVN como gestor de versiones. Hace tiempo valoramos cambiar a un DCVS, Git, Mercurial o similares. Estuvimos estudiando las posibilidades e hicimos varias pruebas de concepto con algunos de ellos. Incluso llegamos a instalar y configurar Gerrit.

Al final no hicimos el cambio. Sabíamos que un cambio de arriba abajo, directo, era inviable. Pero no encontrábamos el momento para ir migrando poco a poco parte los proyectos. Siempre había User Stories que terminar u otras cosas que hacer. En resumen, la idea se quedo en eso, una idea.

Pero hace menos de un mes, por culpa de la gente de Cachirulo Valley y gracias a @leptom, la idea resurgió.  Esta vez, de forma distinta. Una aproximación más llevadera y tranquila. En vez de modificar los proyectos, ¡¡decidimos modificar a los developers!!

Gracias a que Git dispone de un módulo que permite comunicar un repositorio Git y uno SVN , dos developers han empezado a trabajar con Git en su ordenador. Sufriendo las maldades múltiples de dicho gestor de versiones del demonio, por mucho que diga Linus que no.

La idea es ir migrando todos los clientes poco a poco. De esta forma los developers se irán familiarizando poco a poco con Git, aprendiendo sus peculiaridades y compartiendo su conocimiento. Y cuando estemos todos ya trabajando con Git en local daremos el paso final, y cambiaremos el servidor central de SVN a lo que nos apetezca o nos beneficie más.

Os iremos contando qué tal va nuestra experiencia.

 

 

 

Posted in miscelánea | 3 Comments

Drive, de Daniel H. Pink

Drive book

Increíble libro que ahonda en el “sistema operativo” que nos conduce. Planteando lo anticuado que se está quedando el sistema tradicional de motivación del “palo y las zanahorias” del Siglo XX con respecto al nuevo sistema del Siglo XXI, donde la motivación se basa en factores no tan extrínsecos y más intrínsecos como la autonomía, el propósito y la maestría.

Conforme iba leyendo me ha encantado ver que en nuestra empresa mucho de estos conceptos ya se están aplicando en mayor o menor medida. Y me encanta poder disfrutar de un ambiente tan positivo para crecer como persona y profesional.

Mucho de lo explicado en el libro me sonaba ya. O lo había comentado de una forma u otra con los amigos… Pero no es lo mismo hablarlo, o intuir un concepto que leer las teorías, las explicaciones, todo. He salido con muchas ideas nuevas para auto motivarme. Un libro que vale la pena mucho leerse, desde mi punto de vista.

Para aquellos más vagos, os dejo un vídeo que resume parte de sus teorías de una forma graciosa e interesante. Además también esta disponible la Ted Talk que dio Daniel Pink en 2009.

 

Posted in eficiencia, miscelánea | Tagged , , , | Leave a comment

Frogtek en la final del Vodafone Mobile Clicks 2011

No sé si quedará alguien por enterarse pero si no escribimos hace tiempo en este blog no es porque seamos unos vagos, sino porque la vuelta de las vacaciones está siendo algo más entretenida de lo habitual.

Nos están pasando muchas cosas buenas, que ójala os podamos contar pronto, y estamos trabajando a tope para llevarlas a buen puerto. Entre ellas nuestra presencia en la final europea del Vodafone Mobile Clicks 2011. ¿Aún no lo has hecho?, ¡Pues vota por nuestro proyecto aquí hasta el día 12 de Septiembre!

Vodafone Mobile Clicks

La semana que viene nos vamos para Amsterdam a defender el pabellón español en la final. ¡Ya os contaremos que tal nos va!

Posted in miscelánea | 1 Comment

Tiendatek y sus amigos los Periféricos

Estoy seguro de que casi todos hemos visto en alguna ocasión un Sistema Punto de Venta (POS) con su correspondiente escáner de códigos de barras, impresión de recibos, pagos con tarjetas y por qué no, un lector de huellas digital. Con la demanda actual del mercado y los avances en tecnología, un POS no tendría sentido sin la ayuda de todos o parte de estos dispositivos. La realidad dicta que no es suficiente con poder registrar una venta sino que hay que hacerlo de la forma más rápida posible, a nadie nos gusta estar esperando en la cola del supermecado, porque además al cliente le gusta tener constancia de lo que ha comprado, a nadie nos gusta que nos engañen.

Tiendatek ha conocido a diferentes amigos conforme ha ido creciendo, apartándose de aquellos que no le convenían y que le retrasaban su aprendizaje. Cuando tan solo iba a la guardería conoció a un pequeño sistema de lectura de códigos de barras a través de la propia cámara del teléfono y cuyo nombre es ZXING. Una tarea que aparentemente puede parecer sencilla, al final resultaba desesperante para el tendero, debido a su baja eficiencia. Enseguida se dio cuenta de que tenía que encontrar a alguien que de verdad estuviese diseñado para ese fin. Así, cuando empezó la primaria conoció a un lector bluetooth llamado CipherLab quién además de bonito era barato. Se podía decir, que hasta el momento, el lector es y ha sido su mejor amigo. De esas relaciones donde nada cambia con el paso de los años.

Ya en la secundaria, Tiendatek y LectorTek, hicieron nuevos amigos. En esta ocasión se trataba de una linda y joven impresora de recibos vía bluetooth. Desde el primer día supo como seducirlos tanto a ellos como a los tenderos pasando por los programadores y el “product owner” de Tiendatek. Apenas han pasado unos meses, pero a simple vista se ve que existe química entre ellos.

 

Todavía les queda mucho camino que recorrer y periféricos que conocer pero ¿por qué no?, ¿veremos algún día a Tiendatek saliendo a bailar con un lector de pagos con tarjeta y/o sistema de identificación por huella digital en el día de su graduación?

Posted in android, programación | 2 Comments

Lanzar un Job de Jenkins desde Google App Engine

La semana pasada estuve dándole vueltas a este problema, después de varios intentos fallidos llegué, con la ayuda de Julio, a la solución que planteo en el título del post.

Para empezar tenemos que ir al job en Jenkins que queramos lanzar desde fuera y activar la opción de “Lanzar ejecuciones remotas”

Por motivos de seguridad, Jenkins nos obliga a usar un Token que será usado al llamar al Job desde fuera.

El código que usaremos en GAE (en Python) será el siguiente:

import urllib2, base64, httplib
from urllib2 import URLError, HTTPError
from django.http import HttpResponse
 
def call_mlp_generator(request):
 
    theurl = 'JENKINS_JOB_URL?token=TOKEN'
    username = 'USERNAME'
    password = 'PASSWORD'
 
    request = urllib2.Request(theurl, None)
    base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
    request.add_header("Authorization", "Basic %s" % base64string)
    try:
        urllib2.urlopen(request)
        response = str(httplib.OK)
    except HTTPError, e:
        response = str(e.code)
    except URLError, e:
        response = str(e.code)
 
    return HttpResponse(response)

Bastante simple, sólo había que saber tocar las teclas adecuadas.

Posted in gae, integración continua, programación, python | Leave a comment