Experiencias con Extreme Programming y RoR
Os transcribo un mensaje enviado a la lista de correo de ror-es, donde Rubén, explica sus expericias en la empresa Pivotal de San Francisco programando con Ruby on Rails y utilizando Extreme Programming para realizar los proyectos. Me parece muy interesante la filosofía de trabajo que tienen, totalmente diferente a la que se aplica en España.
Si les gusta Java, se van a enamorar de Ruby on Rails. Estoy haciendo una "Inmersión de Extreme Programming con Ruby on Rails", por tres semanas, de las cuales ya cumplí una. La empresa en la que estoy haciendo la experiencia se llama Pivotal, www.pivotalsf.com, situada en San Francisco, California. Está en el edificio histórico James Flood, en las calles Market y Powel, que sobrevivió al terremoto de 1906. La empresa hace desarrollos en Java y Ruby on Rails para "start-ups" y tiene como clientes, entre otros a Google y Ebay.
El CEO de la empresa es Robert Mee, que es coautor con Martin Fowler del libro "Patterns of Enterprise Application Architecture". Los desarrolladores de la empresa, como suelen ser los californianos, son gente "cool", aspecto social necesario para hacer "pair programming" o programacion en pares.
Un día típico comienza con la reunión de pie en circulo (stand up meeting), donde cada uno comenta brevemente a los demás sobre lo que esta haciendo. Si es lunes, se pasa a la reunión de planeamiento semanal. Una vez por semana tienen lo que ellos llaman "retrospective" (retrospectiva), donde piden pizzas y/o cerveza y hacen presentaciones de temas que sean de interés para los desarrolladores. La semana pasada presentaron sobre la seguridad en las aplicaciones web, los métodos de ataque y como prevenirlos, en las aplicaciones web y en particular con Ruby on Rails. Los casos de uso o requerimientos que guían el desarrollo se llaman "histories" o historias. El par de desarrolladores elige una historia de un proyecto y trabaja en ella. Antes de escribir el código que implemente la historia, se escriben las pruebas, ya sea de unidad, o funcionales.
Las herramientas que usan son sorprendentes, JsUnit, para JavaScript (donde el "test runner" fue desarrollado por Pivotal (http://www.jsunit.net/runner/testRunner.html); los test funcionales y de aceptacion con Selenium (http://www.openqa.org/selenium/) que tiene una realimentacion visual para el usuario sorprendente y para la integracion continua usan CruiseControl (http://cruisecontrol.sourceforge.net/), estas dos ultimas desarrolladas mayormente por programadores de ThoughtWorks, la empresa de Martin Fowler.
Usan el navegador Firefox con los pluggins Firebug,XPather/XPath checker. Usan como IDE InteliJ IDEA, con un pluggin para Ruby. El hardware de desarrollo es heterogeneo: coexisten Macs, y PCs (con Linux y Windows). Cada estacion de trabajo tiene dos monitores (en un monitor está el IDE, el otro muestra la UI), dos teclados y dos ratones, especialmente para programacion en pares.
Antes de hacer el "commit" en el repositorio SVN, se corren todos los tests y se verifica que ningun test falle. Luego de actualizar el código en el repositorio, se procede a tomar la siguiente historia. Las historias desarrolladas, si son aceptadas por el cliente, pasan a formar parte de la siguiente liberación (release), que es semanal, quincenal o según sea la duración de la iteración. La comida y bebida no falta: hay una mesa con golosinas, chocolates, cereales, snaks y un refrigerador con leche, frutas, quesos, jugos y bebidas gaseosas. Tambien hay distintos tipos de te - incluso yerba mate- lo cual es bueno para mi porque soy paraguayo y rioplatense.
Uno de los muchachos, casi todos los días, trae dulces y pasteles que cocina su esposa y otro, los viernes trae baguels. Si el trabajo se vuelve de repente tedioso, damos una vuelta y salimos afuera a tomar un café en Starbucks (disculpen la publicidad gratuita). Al medio dia, el gran parte del grupo decide que ir a comer juntos, generálmente a un restaurante étnico, ya sea comida china, hindu,mexicana, japonesa, etc.
Me comentaron ahi que Larry Paige (cofundador y presidente de Google) le pregunto a Rob Mee cual es el secreto que explique que los desarrolladores de Pivotal sean tan productivos, ya que no conseguió lo mismo reclutando los mejores "cerebros" que el dinero puede comprar. La respuesta esta en, ademas del talento de la gente y las herramientas, el método ágil de desarrollo utilizado.
Saludos, Ruben.





