#cas_2011: Otro punto de vista (más)

Atendiendo a Twitter, éste es de los últimos artículos sobre la Conferencia Agile-Spain 2011 (CAS2011). Como no somos muchos los que tenemos una perspectiva tal que nos permita opinar desde los orígenes de esta proto-comunidad llamada Agile-Spain, me he sentido en la obligación de pensar mucho lo que voy a decir. Pero ahora que se acercan las Elecciones Generales del 20 de noviembre, y en contra de la recomendación de David Bonilla en su bonilista, hablaré de política.

En nuestra sociedad, nuestro estilo de vida premia los mensajes cortos, rápidos, originales, sorprendentes… brillantes. Todo lo que no se pueda consumir como un anuncio de televisión nos acaba resultando pesado, aburrido, casi indigesto. Esta regla la aplicamos a los telediarios, a los mensajes de los políticos, a la comida, a los libros o el cine, a las charlas más sesudas e incluso a las conferencias profesionales.

Los telediarios tienen un formato parecido a la lectura rápida “en diagonal” de un periódico: un pastiche de telegramas deslavazados que no dan la oportunidad al telespectador para reflexionar sobre la avalancha de mensajes que está recibiendo. En este espacio, muchos agentes tratan de incorporar su mensaje porque saben que, con un solo disparo, llegan a muchísima gente. Como ejemplo de actualidad están los mensajes electorales. Los partidos, especialmente los mayoritarios, que tienen más medios y mayor capacidad de influencia, tratan de colar sus mensajes en un formato aún más breve. El telediario conecta con el mitin de turno, se enciende una luz en el atril y el político suelta el anuncio de que va a subir las pensiones o que va a bajar los impuestos. Desgraciadamente, la letra pequeña no es relevante en estos casos. Al menos en los anuncios de coches te explican las condiciones de financiación, aunque sea a la velocidad de un neutrino.

Nuestra alimentación también se ha resentido. Vamos a restaurantes “de menú” para comer en menos de una hora y llevamos a casa “platos” precocinados, a los que tenemos la desfachatez de adjetivar como “caseros”; en el colmo del paroxismo gastronómico somos capaces de hablar de “las croquetas de la abuela” para referirnos a unas croquetas ultracongeladas. Se ha convertido en normal consumir conservantes y colorantes capaces de transformar un insípido líquido espeso de color indeterminado en una sabrosa y atractiva crema de zanahorias que servimos sin pudor a nuestros hijos.

La lectura no se ha librado tampoco de este efecto “colapsador”. La mayoría de los libros o películas de gran consumo son de una estructura tal que no representan un gran reto intelectual. Las editoriales piden a los autores que no usen formatos complicados para el lector medio y que las historias sean lo suficientemente sencillas de entender para que no se pierdan y sigan leyendo… y consumiendo la segunda, tercera, cuarta parte…

El formato TED, del que he de confesar que estoy enamorado, o el formato Pecha Kucha, son otros ejemplos de condensación de ideas. Pensamientos muy elaborados, pero presentados en apenas unos pocos minutos. En la radio oigo concursos de microrrelatos y soy un asiduo de Twitter. A veces tengo la sensación de que toda la sabiduría y las emociones del mundo se podrían condensar en un haiku.

Y finalmente llegamos a las conferencias profesionales, a las que les pedimos también que tengan esa capacidad de iluminación, de ilustración, de sorpresa incluso.

Por otro lado, cuando somos capaces de detener por un momento nuestra vida acelerada, por ejemplo cuando salimos de vacaciones a algún pueblo del interior o a un país “sin civilizar” o simplemente haciendo una barbacoa con nuestros amigos, entonces nos damos cuenta de que somos capaces de charlar tranquilamente con otros y poner en jaque nuestras creencias basadas en los mensajes recibidos por twitter, radio, televisión… también somos capaces de cocinar tranquilamente nuestra propia comida, a fuego lento; a veces incluso somos capaces de percibir los sabores de los productos cultivados tranquilamente, durante meses. Incluso cuando conseguimos encontrar ese tiempo mágico de leer tranquilamente un cuento a nuestros hijos nos damos cuenta de matices que no percibimos en nuestras relaciones del día a día. Esa capacidad a veces perdida de “tener tiempo” es un bálsamo maravilloso que nos aclara la vista, despeja el olfato, afina el oído, amplifica el gusto y, sobre todo, sensibiliza el tacto. ¿A cuánta gente habéis abrazado últimamente durante más de 3 segundos?

Esta semana, pensando en este artículo y leyendo la resaca de tweets y blogs acerca de la CAS2011 he sentido mucho de estas dos sensaciones. Por un lado he visto cómo esta necesidad de ir siempre más allá ha concentrado muchos esfuerzos de organizadores, ponentes, patrocinadores y asistentes en hacer La Mejor Conferencia Jamás Vista. Por otro lado, he visto muchos mensajes profundos y elaborados que requieren más reflexión por mi parte para aprender de ellos. Ambas visiones son, en mi opinión, dos caras de una misma moneda: una comunidad que está aún muy en pañales, ni siquiera me atrevería a decir que estamos en la niñez y mucho menos en la adolescencia. Personalmente ya he dicho en muchas ocasiones que no creo que la gente que hoy nos congregamos en torno a las metodologías ágiles seamos exactamente la comunidad agilista; creo más bien que somos profesionales del desarrollo de software que buscamos maneras de mejorar y que estamos encontrando una manera de rodearnos de gente con intereses similares. En este sentido creo que aún somos un bebé que apenas empieza a dar pistas sobre cuál será su personalidad en el futuro. Nos queda muchísimo camino aún por recorrer y muchos errores que cometer. ¡Y ya veréis cuando lleguemos a la edad del pavo! Por eso creo que no se puede ser tan exigente con la CAS2011 como con la Devoxx 2011, por ejemplo, ni tampoco caer en la autoindulgencia.

Para ilustrar mejor lo que digo y abandonar el a veces pedregoso terreno de las metáforas, voy a dar un par de ejemplos. Empezaré por hacer autocrítica. Yo, por ejemplo, puse a mis propuestas de sesión títulos y descripciones llamativos con la intención de que fueran atractivas y las aceptaran: “El jardinero fiel (y ágil)” y “Show me the money”. Desgraciadamente, la que tenía más ganas de hacer porque la estaba trabajando con Enrique Amodeo fue la que descartaron. La otra fue una especie de impulso de última hora que no había reflexionado demasiado y a la que, a pesar de trabajarla muchísimo, no conseguía encontrar la manera de contar lo que había comprometido en la descripción de la charla. Finalmente, gracias a conversaciones que tuve con mucha gente, especialmente en el coche con Germán del Zotto y en el hotel con Israel Alcázar, el jueves decidí no asistir a la charla de Jorge Baez contando la experiencia de despliegue ágil en Idealista, pero fui capaz de poner en orden mis ideas y darle forma a mi discurso final. Tuve que pagar el alto precio de perderme una de las mejores charlas de la CAS2011 según me han contado, y por ello debo buscar una manera de evitarlo en el futuro. Se me ocurre que no debo proponer ninguna sesión que no tenga suficientemente preparada, para ello voy a meter en mi backlog el estar constantemente preparando charlas. Así, si me aceptan una, sólo tendré que trabajar “la puesta en escena”.

Como ejemplo de las charlas que requieren una mayor reflexión podría hablar de ambas keynotes, la de Xavier Quesada o la de J.B. Rainsberger, o incluso de la, para algunos, insulsa charla de Enrique Comba. Como están grabadas, el tiempo, vuestro criterio y la reflexión que todos haremos de ellas las pondrán en su lugar. Sin embargo, sí me gustaría poner como ejemplo la sesión de Javier Acero. Javier, al que conozco personalmente y por el que tengo un gran afecto, creo que representa muy bien el perfil de alguien a quien me gustaría poner en valor especialmente. Ésta era la primera charla de Javi en una Conferencia de este calibre, y estoy segurísimo de que no será la última. Su sesión sobre legibilidad del código estaba muy cuidada: se notaba. Pero lo mejor de la sesión fue cuando terminó. Preguntó si alguien tenía alguna pregunta y todos-todos nos quedamos en silencio. Aún estábamos noqueados por el mensaje:

Escribid el código para que os entiendan otras personas, no sólo para que os entienda la máquina.

Había sido devastador. Mi sensación era: tengo que pensar sobre esto y actuar, tengo que buscar maneras de ayudar a escribir mejor código. Javier había conseguido sacarme de mi circuito de estímulo-recompensa facilón y me había creado la necesidad de reflexionar. Gracias, Javier, eso es justamente para lo que creo que sirven las Conferencias. Javier hizo un esfuerzo muy generoso, igual que todos los que se expusieron frente a todos y dieron una parte importante de su tiempo para preparar esos discursos que nos hagan pensar por un par de días y darme la oportunidad de contrastar esas reflexiones con los que allí asisten. En general, eso no lo hicimos. Y eso forma parte de nuestra deuda como asistentes. Yo asistí a pocos debates, la verdad, y creo que eso es justamente lo que más eché de menos, sobre todo si comparo con la experiencia en los Agile Open que ha organizado Agile-Spain o en los pequeños openspaces que han organizado en 2011 gente como Raquel Laina en Decide o Jesús Jiménez a título individual.

Tampoco he visto que hayamos compensado a los organizadores, todos ellos voluntarios, con un ejercicio de generosidad comparable al suyo, y eso también se debe añadir a nuestra deuda como asistentes. Mi sensación general es que muchos hemos ido (me incluyo) a una Conferencia “a mesa puesta” y nos hemos permitido el lujo de criticar sin aportar nada más que nuestra asistencia, el desplazamiento y quizás el coste de una entrada (muy barata, por cierto). Lógicamente, no incluyo a los patrocinadores ahí porque ni he estado en la organización ni he patrocinado nada. Los organizadores han cometido errores, han intentado fórmulas nuevas, algunas han funcionado y otras no, y han acertado en muchas cosas. Organizar una conferencia para unas 250 personas en un sitio donde pudiéramos tener todo lo necesario, conseguirlo en tan poco tiempo y además sacando tiempo de su vida personal no es nada fácil además de muy generoso. Lo mínimo sería ofrecer nuestra ayuda para lo que sea necesario y ayudar a resolver cualquier inconveniente antes, durante y después de la Conferencia. Quizás deberíamos pensar que la camiseta que nos entregan al registrarnos no es un regalo sino una obligación para el que la lleva, la obligación de colaborar con la organización para hacer La Mejor Conferencia Posible. Autoorganización: ¡eso sí sería ágil! :)

En mi opinión, la Conferencia Agile-Spain 2011 ha sido buena, pero podría haber sido mejor si nuestra actitud hubiera estado más dispuesta a aprender, compartir y ofrecer lo que sabemos. Tengo la sensación de que nos gusta llamarnos Comunidad pero no siempre estamos en ese estado de ánimo generoso y orientado a la colaboración desinteresada. Han faltado voluntarios y, en mi opinión, muchos de los tweets y blogs que he leído estos días están escritos como si esperaran algo de los demás en vez de explicar lo que ellos han aportado a esta Conferencia o lo que van a aportar a la próxima. Creo que estamos, como comunidad-aún-por-hacer que somos, en un estadío en el que nuestro comportamiento es muy egoísta y nos miramos demasiado al ombligo y ni tan siquiera somos conscientes de que tenemos que aprender a andar antes que a correr.

Dicho esto, creo que tenemos una nueva oportunidad de mejorar participando activamente en la organización de la Conferencia Agile-Spain 2012. ¡Yo me apunto!

Repositorio remoto con git

Para que no se me olvide si tengo que volver a hacerlo (y por si alguno de vosotros no lo sabía ya). Está basado en este artículo pero adaptado a mi uso particular.

$ cd miproyecto
$ git init
$ vi notas.txt
$ git add .
$ git commit -m "Primer commit"
$ cd ..
$ git clone --bare miproyecto miproyecto.git
$ scp -r miproyecto.git usuario@servidor:repos
$ cd miproyecto
$ git remote add origin usuario@servidor:repos/miproyecto.git

Hasta aquí tenemos en nuestro espacio de trabajo un repositorio sincronizado con el remoto “origin”. A partir de ahí ya podemos tener a más compañeros trabajando con nuestro repositorio haciendo:

$ git clone "url hasta miproyecto.git en servidor"

Si con ssh accedemos al sistema de archivos en el servidor remoto veremos que hay una carpeta llamada “repos/miproyecto.git”, pero si queremos replicar el contenido podemos hacer:

$ git clone "trayectoria hasta repos/miproyecto.git"
$ git pull

Tengo que ver cómo simplificar muchas de estas tareas y cómo usar ramas, en este sentido tengo aún pendiente leerme este artículo.

eXtreme Coaching

No, no se trata de este tipo de coaching

La semana pasada estuve en Altea (Alicante) porque DreamStarCash me pidió que les diera un taller de TDD con PHP. Lo cierto es que yo no he programado nada serio en PHP y me parecía estar fuera de mi zona de confort, aunque estoy tan bien rodeado que así no es posible acomodarse. ¿Verdad Luis? ;)

Para poneros un poco en contexto, DreamStarCash es una muy exitosa compañía que desarrolla software de gestión de contenidos para adultos. Traducido al castellano (y simplificando): se dedican al porno. Pero ojo, no os quedéis en eso simplemente porque os estaréis perdiendo un mundo muy interesante desde el punto de vista del negocio del software. Tienen millones de visitas diarias, que además de mucho dinero (que tienen que repartir con los proveedores de contenidos, los estudios) significa que tienen problemas de escalabilidad, seguridad, trazabilidad legal de los contenidos, calidad de servicio… Es un negocio con mucha competencia y no toda cumpliendo con la legalidad. Rodney, su director de operaciones (COO) y Steve (CEO y fundador) son tipos muy inteligentes y quieren construir una organización capaz de aprovechar las oportunidades de negocio y adaptarse más rápidamente a todos los cambios que se producen en el sector (nuevas leyes, nuevas tecnologías, nuevos competidores…). Por eso se pusieron en contacto con Xavi Gost (beCodeMyFriend) y, a través de él, conmigo. Entre otras cosas, querían consejo para hacer posible este cambio en la organización. Están siempre contratando porque no cubren puestos sino que buscan talento (si estás interesado, habla directamente con Rodney), apuestan por el agilismo, la mejora continua y hasta han salido en el blog de 37signals. Por cierto, si vas a estar por la PHPConference en Barcelona aprovecha y salúdalos.

Bueno, el caso es que al llegar a DreamStarCash (tras un más que agradable chapuzón en la playa) me reuní con Steve (CEO y fundador), Rodney (COO) y Damian (CTO) para explicarles cómo iba a ser el taller y charlar un rato sobre cómo trabajaban ellos normalmente. Fue una conversación muy honesta y eso siempre es de agradecer. Me gusta muchísimo el ambiente de startup (aunque ya no se puede decir que DreamStarCash lo sean) porque tienen esa esencia de “garaje”, de reducción de jerarquías, de buen rollo… vamos, de todo lo contrario al ambiente “enterprise”. En estas empresas puedes meter el cuchillo hasta el corazón porque sabes que tienes muchas probabilidades de ayudar realmente, en cambio, en las grandes corporaciones, la energía se disuelve entre las “politics” y los miedos al cambio.

De resultas de esta charla nos dimos cuenta de que lo que realmente necesitaban (y con urgencia) no era tanto un taller de TDD sino un cambio en su cultura. Ellos ya habían asistido a un curso de certificación en Scrum impartido por Tobias Mayer hace varios años. Con el devenir del tiempo y la búsqueda de la eficiciencia se encontraban en un escenario desgraciadamente muy habitual: una gran deuda técnica y defectos acumulados en su software y una cultura incapaz de buscar la mejora continua. Se estaban arrinconando en el típico enfrentamiento: ellos vs nosotros. “El equipo no se implica con los objetivos” o “los requisitos no son suficientemente detallados”. Y para colmo no hacían retrospectivas regulares ni la mayoría de los rituales de Scrum. Ni tan siquiera estaban haciendo Scrum en apariencia. Estaban haciendo “Scrum In Name Only” ( gratias). :)

Estuvimos dándole vueltas a la posibilidad de cambiar de planes y hacer algo diferente. Realmente los managers se habían dado cuenta de que, efectivamente, tenían un problema muy serio en la cultura de la empresa en cuanto al desarrollo del software se refería y que tenían que hacer algo. Tras una brevísima retrospectiva, propusimos al equipo hacer durante la semana un proyecto muy pequeño pero haciendo Scrum con iteraciones de 1 día. SÍ, DE UN DÍA. En realidad apenas nos daba tiempo a hacer una preparación del backlog y 3 iteraciones, pero al estresar tanto el proceso yo quería provocar que aquellos “bad ticks” que tenían afloraran con más rapidez y fuerza que en un coaching más “relajado”. Por otro lado, los ciclos de feedback iban a ser mucho más frecuentes, lo cuál nos daría muchas más oportunidades para ver qué pasa en un proyecto normal y cómo reaccionar ante ellos.

Ha sido una de las mejores experiencias de mi vida profesional. Realmente espectacular ver cómo reaccionan las personas ante este tipo de retos. Al final de la semana les di muchísima caña. Los “golpes en las rodillas” (figurado) fueron muchos y algunos seguramente no cayeron demasiado bien. Pero hubo para todos: para el equipo de desarrollo y también para los managers. (Incluso para Steve) :) Pero cuando las personas son autoexigentes valoran mucho la honestidad. En la retrospectiva final había muchas más opiniones positivas que negativas. Y las negativas estaban identificadas claramente como aspectos que querían mejorar. Ése es justamente el espíritu que trato de transmitir, y ellos lo habían entendido perfectamente. Estoy deseando poder anunciar el resultado de este pequeño proyecto, donde el equipo aprendió a escribir su backlog, historias de usuario, orientarse a construir producto incrementalmente, manejar las tareas y los conflictos durante el sprint, planificar junto al dueño de producto, decidir acciones tras las retrospectivas… vamos, a hacer agilismo del bueno. Claro, como podréis suponer, será [Adults only].