foto-team-18102011En enero de 2011 tuve ocasión de compartir una semana de trabajo en la oficina de SaludOnNet en Madrid. Daniel Ortube, CTO de la empresa me contrató porque siempre mantiene un ojo en la comunidad de Agile Spain. Impartí formación de introducción a TDD y estuve 2 días trabajando con ellos en su día a día para diagnosticar posibles puntos de mejora. La experiencia fue muy buena. Se trata de una empresa con tiempo en el mercado como para no ser ya una start-up, pero que en muchos aspectos aún lo es. Sólo 6 desarrolladores y sin jerarquías ni protocolos de empresas grandes. El CEO de la empresa, Carlos Falcato, se involucró desde el primer momento en la semana de trabajo y se interesó muchísimo por los resultados y sobre todo por el qué hacer para llevar a su empresa  a lo más alto en términos de calidad para sus clientes.

En septiembre Dani había visto la propuesta de iExpertos.com de contratarnos para hacer equipo y nos lanzaron la oferta a mí y a mi buen amigo Oscar Moreno. Oscar se muda a Madrid y yo trabajo desde casa. De vez en cuando me doy un salto por Madrid para tomarnos unas birras corporativas más que nada.

El reto es grande y las metas espectaculares. La compañía está pasando de ser nacional a multinacional gracias a la calidad de su producto durante años y al know-how que se tiene del funcionamiento de la sanidad privada. No hay competencia en cuanto al know-how y tampoco en cuanto a funcionalidad del producto. Pero saben que para jugar en primera división tiene que haber un salto al siguiente nivel de calidad ténica que permita ofrecer a sus clientes el nivel de servicio correspondiente.

La historia de la empresa es bonita porque el CEO fue la persona que escribió la primera versión de su software, hace ya una década. Empezó siendo una aplicación para el negocio familiar que se basaba en el fuerte conocimiento del dominio. Ya hace años que Carlos no tiene tiempo de escribir ni una sola línea de código 🙂

Nos encontramos con 800k (800.000) líneas de código legado que necesitan soportar ahora gran cantidad de cambios (nueva funcionalidad). Vamos a pasar de miles de usuarios a millones y nuestros usuarios ya no solo estarán en España sino en toda Latinoamérica y pronto en Norteamérica también. Y como en toda empresa de desarrollo de software, hay mucha deuda técnica. Vértigo por un lado y reto por otro.

daily1En este primer de trabajo hemos introducido kanban como proceso y estamos haciendo toneladas de refactoring acompañado de tests automáticos. En principio son tests de integración pero ya empezamos a tener tests unitarios. Hacemos un daily meeting de 15 minutos por la mañana con un iPad que me permite ver el panel y ver a los demás con buena mobilidad, imagen y sonido. Tenemos un kanban para incidencias y un kanban de desarrollo de nueva funcionalidad. El objetivo de esta primera etapa es estabilizar el proceso de releases, con plazos semanales. El product owner deja la semana planificada el viernes, con lo que le gustaria tener para el próximo y el lunes, el equipo de desarrollo decide cuántas de esas tarjetas se compromete a tener para el viernes, sin perjudicar la calidad del producto.
Ya vamos agregando tests automáticos que demuestran los bugs antes de arreglarlos y en la funcionalidad nueva lo intentamos con TDD.

daily9Yo trabajo practicamente todo el tiempo haciendo pair programming con los compañeros, de manera rotatoria. Suelo trabajar con dos personas cada día. Es la mejor manera de que mi conocimiento vaya calando en el equipo. He descubierto que con un buen ancho de banda (800kbits de subida y 10mbits de bajada, desde mi lado y muuucho más desde la oficina), la programación en pareja en remoto es igual de buena que en persona. Usamos skype para ir hablando y teamviewer para compartir escritorio.

Quitamos TFS porque nadie se apañaba demasiado bien con él y usamos Mercurial como control de versiones. Hacemos commit cada pocas líneas de manera que podemos seguir el código de los demás. A mí me va permitiendo corregir malas prácticas y sentir que el código va teniendo propiedad colectiva.

Mi objetivo es llevar al equipo al siguiente nivel, donde ya no haga falta un lead developer y exista esa paz sostenible que se produce en los equipos que han interiorizado eXtreme Programming.

daily81

Estamos volcados con la calidad del producto porque sabemos que repercute en el cliente hoy pero en nosotros mañana. Estoy contento de iniciar este proyecto porque la empresa se ha dado cuenta que sólo con el salto de calidad podía llegar a donde se han propuesto. Lo han intentado todo y ya saben por experiencia que el software hay que hacerlo bien, con las mejores técnicas disponibles para ello.

Si nos sale todo bien, en 2012 el producto se habrá expandido a todo Brasil y a otros paises de Sudamérica y habremos crecido también en número de desarrolladores.
Pronto organizaremos algún coding dojo en abierto para que quien quiera se acerque a programar con nosotros y conozca la oficina.

Estoy cumpliendo mes y medio en el equipo y Oscar se acaba de incorporar hoy, 18 de octubre de 2011, fecha en que hemos tomado la foto de equipo de arriba.

Seguiremos informando 🙂