25 JanObjetivo: buscar empleo en una semana

Bueno, dicho así parece un objetivo imposible, pero es que también tiene algo de truco: no empiezo desde cero.

Como algunos ya sabéis, sigo pendiente de aquel dichoso trabajo para el Ayuntamiento de Alcobendas, pero después de más de un mes aún espero incorporarme. Llamé hace tres semanas (a la vuelta de las vacaciones) y me dijeron que era un proceso lento… buff, eso me recordó el comentario que Javier Neira hizo en el blog acerca de armarme de paciencia. Lo malo es que financieramente ya estoy muy justito, así que o me incorporo pronto o tendré problemillas. :(

Lo peor es que podría haber ya empezado y terminado un trabajillo para los buenos amigos de Biko, teletrabajando y todo. Pensé que lo del Ayuntamiento sería algo más rápido (me llamaron a los 20 minutos de haber terminado la entrevista y estuve firmando mogollón de papeles para incorporarme, pero no estoy en nómina todavía). Quise ser honesto con los de Biko y les dije que yo no podía, pero les puse en contacto con otros. La verdad, no sé si al final resolvieron el asunto. Espero que sí.

Así que mañana sin falta me paso en persona por el Ayuntamiento y que me expliquen. :)

Hace dos semanas, mientras operaban a mi padre, me entrevisté telefónicamente con un posible empleador. Mañana, después de saber el estado del “proceso municipal” les llamaré por si aún hay posibilidades. Me gustaría mucho colaborar con esta gente porque, aunque la oferta es para un proyecto más estándar (donde buscan un “arquitecto” cuando en realidad quieren decir “jefe de proyecto que también programa”), ellos internamente están haciendo Scrum (o lo intentan, como la mayoría) y creo que podríamos extenderlo por toda la compañía e incluso por sus clientes. Tiempo al tiempo.

También tengo una oferta que me llegó a través de un amiguete del grupo local de Agile Spain en Madrid. Es de esas de “lo necesito para antes de ayer”, pero curiosamente les contesté hace ya varios días y aún no he recibido respuesta. En fin…

Y por último, hace ya varias semanas recibí un correo a través de agilismo.es de una empresa de formación que necesitaba formarse para dar los cursos financiados que le habían concedido. Creo que Xavi Gost no ha podido dedicarse a esto, así que me pondré en contacto con ellos enseguida.

Así que ya sabéis, no dudéis en poneros en contacto conmigo si buscáis o conocéis a alguien que necesite un perfil como éste: programador experto en entornos Java (Spring, Hibernate y “todas esas cosas”), consultor y jefe de proyecto durante varios años y capaz de inducir cambios en el proceso de desarrollo de software mediante la incorporación de buenas prácticas y la capacitación de los equipos. Además, si alguien quiere tener en su nómina al Presidente de la asociación Agile Spain: éste es un buen momento. :)

Estoy abierto a tratar cualquier oferta. Las condiciones las podemos discutir por teléfono, pero por favor abstenéos aquellos que sólo podáis pagarme a 60 días o más y, sobre todo, los que sólo queráis consultoría gratis. ;) Eso sí, si el puesto está localizado en Alcobendas o San Sebastián de los Reyes (Madrid), os haré una sustancial rebaja. :D

Escribidme a agilismo.es. Incluso si no soy vuestra persona adecuada, casi seguro que puedo poneros en contacto con alguien que pueda ayudaros.

24 JanÉrase una vez… el diseño ágil con TDD

Después de varias semanas de retiro en las lejanas tierras de Huelva, obligado por razones familiares, y después del fenomenal éxito del libro “Diseño Ágil con TDD” que mi buen amigo Carlos Blé me ha dejado prologar, debo reconocer que ahora mismo no tengo mucho que aportar en este blog salvo extraer ese prólogo. Me siento bastante orgulloso de él, no sólo porque es original, sino porque creo que resume bastante bien cómo enfocar un desarrollo de software guiado por las pruebas además de reflejar el espíritu del cambio (aunque tardío) que se está produciendo en nuestro sector y que desde iniciativas como Agile Spain o agilismo.es trato de apoyar en primera persona. Espero que os guste:

Érase una vez que se era, un lejano país donde vivían dos cerditos, Pablo y Adrián, que además eran hermanos. Ambos eran los cerditos más listos de la granja y por eso el gallo Iván (el gerente de la misma) organizó una reunión en el establo, donde les encargó desarrollar un programa de ordenador para controlar el almacén de piensos. Les explicó que quería saber en todo momento cuántos sacos de grano había y quién metía y sacaba sacos de grano del almacén. Para ello sólo tenían un mes, pero les advirtió de que en una semana quería ya ver algo funcionando. Al final de esa primera semana, eliminaría a uno de los dos.

Adrián, que era el más joven e impulsivo, inmediatamente se puso manos a la obra. “¡No hay tiempo que perder!”, decía. Y empezó rápidamente a escribir lineas y lineas de código. Algunas eran de un reciente programa que había ayudado a escribir para la guardería de la vaca Paca. Adrián pensó que no eran muy diferentes un almacén de grano y una guardería. En el primero se guardan sacos y en el segundo pequeños animalitos. De acuerdo, tenía que retocar algunas cosillas para que aquello le sirviera, pero bueno, esto del software va de reutilizar lo que ya funciona, ¿no?

Pablo, sin embargo, antes de escribir una sola línea de código comenzó acordando con Iván dos cosas: qué era exactamente lo que podría ver dentro de una semana y cómo sabrían que efectivamente estaba terminada cada cosa. Iván quería poder conocer cuanto antes cuántos sacos de grano había en cada parte del almacén porque sospechaba que en algunas partes del almacén se estaban acumulando sacos sin control y se estaban estropeando. Como constantemente tenían que entrar y salir sacos del almacén, no podía saber cuántos había ahora mismo, así que acordaron ir contabilizando cuántos había en cada zona del almacén y que cada vez que entrara o saliera un saco apuntarían a qué zona iba o de qué zona venía. Así, en poco tiempo podrían tener una idea clara del uso que se estaba dando a las distintas zonas del almacén.

Mientras Adrián adelantaba a Pablo escribiendo muchas líneas de código, Pablo escribía primero las pruebas automatizadas. A Adrián eso le parecía una pérdida de tiempo. ¡Sólo tenían una semana para convencer a Iván!

Al final de la primera semana, la demo de Adrián fue espectacular, tenía un control de usuarios muy completo, hizo la demostración desde un móvil y enseñó además las posibilidades de un generador de informes muy potente que había desarrollado para otra granja anteriormente. Durante la demostración hubo dos o tres problemillas y tuvo que arrancar de nuevo el programa, pero salvo eso, todo fue genial. La demostración de Pablo fue mucho más modesta, pero cumplió con las expectativas de Iván y el programa no falló en ningún momento. Claro, todo lo que enseñó lo había probado muchísimas veces antes de hacer la demostración gracias a que había automatizado las pruebas. Pablo hacía TDD, es decir, nunca escribía una linea de código sin antes tener una prueba que le indicara un error. Adrián no podía creer que Pablo hubiera gastado más de la mitad de su tiempo en aquellas pruebas que no hacían más que retrasarle a la hora de escribir las funcionalidades que había pedido Iván. El programa de Adrián tenía muchos botones y muchísimas opciones, probablemente muchas más de las que jamás serían necesarias para lo que había pedido Iván, pero tenía un aspecto “muy profesional”.

Iván no supo qué hacer. La propuesta de Pablo era muy robusta y hacía justo lo que habían acordado. La propuesta de Adrián tenía cosillas que pulir, pero era muy prometedora. ¡Había hecho la demostración desde un móvil! Así que les propuso el siguiente trato: “Os pagaré un 50% más de lo que inicialmente habíamos presupuestado, pero sólo a aquel de los dos que me haga el mejor proyecto. Al otro no le daré nada.”. Era una oferta complicada porque por un lado, el que ganaba se llevaba mucho más de lo previsto. Muy tentador. Por el otro lado, corrían el riesgo de trabajar durante un mes completamente gratis. Mmmmm.

Adrián, tan impulsivo y arrogante como siempre, no dudó ni un instante. “¡Trato hecho!”, dijo. Pablo explicó que aceptaría sólo si Iván se comprometía a colaborar como lo había hecho durante la primera semana. A Iván le pareció razonable y les convocó a ambos para que le enseñaran el resultado final en tres semanas.

Adrián se marchó pitando y llamó a su primo Sixto, que sabía mucho y le aseguraría la victoria, aunque tuviera que darle parte de las ganancias. Ambos se pusieron rápidamente manos a la obra. Mientras Adrián arreglaba los defectillos encontrados durante la demo, Sixto se encargó de diseñar una arquitectura que permitiera enviar mensajes desde el móvil hasta un webservice que permitía encolar cualquier operación para ser procesada en paralelo por varios servidores y así garantizar que el sistema estaría en disposición de dar servicio 24 horas al día los 7 días de la semana.

Mientras tanto, Pablo se reunió con Iván y Bernardo (el encargado del almacén) para ver cuáles deberían ser las siguientes funcionalidades a desarrollar. Les pidió que le explicaran, para cada petición, qué beneficio obtenía la granja con cada nueva funcionalidad. Y así, poco a poco, fueron elaborando una lista de funcionalidades priorizadas y resumidas en una serie de tarjetas. A continuación Pablo fue, tarjeta a tarjeta, discutiendo con Iván y Bernardo cuánto tiempo podría tardar en terminarlas. De paso aprovechó para anotar algunos criterios que luego les servirían para considerar que esa funcionalidad estaría completamente terminada y eliminar alguna ambigüedad que fuera surgiendo. Cuando Pablo pensó que, por su experiencia, no podría hacer más trabajo que el que ya habían discutido, dió por concluida la reunión y se dispuso a trabajar. Antes que nada resolvió un par de defectos que habían surgido durante la demostración y le pidió a Iván que lo validara. A continuación se marchó a casa a descansar. Al día siguiente, cogió la primera de las tarjetas y, como ya había hecho durante la semana anterior, comenzó a automatizar los criterios de aceptación acordados con Iván y Bernardo. Y luego, fue escribiendo la parte del programa que hacía que se cumplieran esos criterios de aceptación. Pablo le había pedido ayuda a su amigo Hudson, un coyote vegetariano que había venido desde América a pasar el invierno. Hudson no sabía programar, pero era muy rápido haciendo cosas sencillas. Pablo le encargó que comprobara constantemente los criterios de aceptación que él había automatizado. Así, cada vez que Pablo hacía algún cambio en su programa, avisaba a Hudson y éste hacía, una tras otra, todas las pruebas de aceptación que Pablo iba escribiendo. Y cada vez había más. ¡Este Hudson era realmente veloz e incansable!

A medida que iba pasando el tiempo, Adrián y Sixto tenían cada vez más problemas. Le terminaron echando la culpa a todo el mundo. A Iván porque no les había explicado detalles importantísimos para el éxito del proyecto. A la vaca Paca porque había incluido una serie de cambios en el programa de la guardería que hacía que no pudieran reutilizar casi nada. A los inventores de los SMS y los webservices porque no tenían ni idea de cómo funciona una granja. Eran tantos los frentes que tenían abiertos que tuvieron que prescindir del envío de SMS y buscaron un generador de páginas web que les permitiera dibujar el flujo de navegación en un gráfico y a partir de ahí generar el esqueleto de la aplicación. ¡Eso seguro que les ahorraría mucho tiempo! Al poco tiempo, Sixto, harto de ver que Adrián no valoraba sus aportaciones y que ya no se iban a usar sus ideas para enviar y recibir los SMS, decidió que se marchaba, aun renunciando a su parte de los beneficios. Total, él ya no creía que fueran a ser capaces de ganar la competición.

Mientras tanto, Pablo le pidió un par de veces a Iván y a Bernardo que le validaran si lo que llevaba hecho hasta aquel momento era de su agrado. Les hizo un par de demostraciones durante aquellas 3 semanas, lo que sirvió para corregir algunos defectos y cambiar algunas prioridades. Iván y Bernardo estaban francamente contentos con el trabajo de Pablo. Sin embargo, entre ellos comentaron más de una vez: “¿Qué estará haciendo Adrián? ¿Cómo lo llevará?”.

Cuando se acercaba la fecha final para entregar el programa, Adrián se quedó sin dormir un par de noches para así poder entregar su programa. Pero eran tantos los defectos que había ido acumulando, que cada vez que arreglaba una cosa le fallaba otra. De hecho, cuando llegó la hora de la demostración, Adrián sólo pudo enseñar el programa instalado en su portátil (el único sitio donde funcionaba a duras penas) y fue todo un desastre: mensajes de error por todos sitios, comportamientos inesperados… y lo peor de todo: el programa no hacía lo que habían acordado con Iván.

Pablo, sin embargo, no tuvo ningún problema en enseñar lo que llevaba funcionando desde hacía mucho tiempo y tantas veces había probado. Por si acaso, dos días antes de la entrega, Pablo había dejado de introducir nuevas características al programa porque quería centrarse en dar un buen manual de usuario, que Iván había olvidado mencionar en las primeras reuniones porque daba por sentado que se lo entregarían. Claro, Adrián no había tenido tiempo para nada de eso.

Moraleja:

Además de toda una serie de buenas prácticas y un proceso de desarrollo ágil, Pablo hizo algo que Adrián despreció: acordó con Iván (el cliente) y con Bernardo (el usuario) los criterios mediante los cuáles se comprobaría que cada una de las funcionalidades estaría bien acabada. A eso que solemos llamar “criterios de aceptación”, Pablo le añadió la posibilidad de automatizar su ejecución e incorporarlos en un proceso de integración continua (que es lo que representa su amigo Hudson en este cuento). De esta manera, Pablo estaba siempre tranquilo de que no estaba estropeando nada viejo con cada nueva modificación. Al evitar volver a trabajar sobre asuntos ya acabados, Pablo era más eficiente. En el corto plazo, las diferencias entre ambos enfoques no parecen significativas, pero en el medio y largo plazo, es evidente que escribir las pruebas antes de desarrollar la solución es mucho más eficaz y eficiente.

En este libro que ahora tienes entre tus manos, y después de este inusual prólogo, te invito a leer cómo Carlos explica bien clarito cómo guiar el desarrollo de software mediante la técnica de escribir antes las pruebas (más conocido como TDD).

Un cordial saludo,
Jose Manuel Beas

Espero que después de leer esto, los que no hayáis comprado el libro de Carlos sintáis un impulso irrefrenable y lo hagáis rápidamente, y los que ya los hayáis comprado, o al menos leído, dejéis un comentario aquí sobre qué os ha parecido. ¿Cómo mejoraríais la historia? ¿Qué le quitaríais? ¿Le daríais otro enfoque?

Tags: ,

31 DecFeliz 2010

Feliz cambio de año a todos.

Espero que sea mejor que el 2009. No es que para mi haya sido malo. He hecho muchas cosas buenas, de las que me siento orgulloso, pero tengo grandes expectativas para el nuevo año. Entre ellas que me llame el Ayuntamiento de Alcobendas para incorporarme a mi nuevo puesto. Y no tanto por tener trabajo asegurado para los próximos 6 meses sino porque realmente es un proyecto interesante. Un reto atractivo para alguien como yo, que está intentando demostrar que en España hace falta cambiar el sector del desarrollo del software. Y qué mejor cliente que las administraciones locales. Uuuuuu….

Tengo muchos planes para el 2010 y espero poderlos llevar adelante. Estoy acompañado de grandes amigos y una estupenda comunidad con muchas ganas de hacer cosas. Así que parece fácil que muchos de estos planes se puedan hacer realidad.

Ea, feliz año desde el semiaislamiento que me provocan las telecomunicaciones en España (en relación calidad-precio) cada vez que me voy de vacaciones.

P.S.
Si después de las uvas no tenéis muy claro qué deseo pedir, os propongo que deseéis que en el año 2010 se recupere el nivel de empleo de antes de la crisis. Suerte y salud para todos.

18 DecPracticar por el placer de mejorar

Angel Medinilla practicando aikidoLa foto de hoy es en parte un homenaje a uno de mis maestros en esto del agilismo: Ángel Medinilla. El martes de la semana que viene (día 22) será el primer Coding Dojo “agilismo.es powered by autentia”, en el que podré compartir un buen rato con otro de mis maestros, Xavi Gost y de ahí la foto de Ángel practicando aikido.

En el artículo de Robert C. Martin (@unclebobmartin) que hemos traducido en Agile Spain por “¿Qué es toda esta tontería de las katas?”, el maestro UncleBob lo dice bien claro:

(…) la ejecución no es el objetivo. Ni los expertos de artes marciales practican su arte para que puedan realizarlo en un escenario. Un artista de artes marciales practica para alcanzar la perfección personal en el arte de la defensa personal. El hecho de que la práctica se pueda realizar es un (agradable) efecto secundario.

Y ése es justamente el objetivo de agilismo.es (Xavi Gost y yo mismo) a la hora de plantear este coding dojo: conseguir ese (agradable) efecto secundario mientras practicamos por el mero placer de mejorar individual y colectivamente.

10 DecMuchos temas pendientes

Tengo pendientes ya demasiadas cosas. Tantas que me van a salir hasta telarañas (como las de la foto). No sé si tengo justificación para todas, pero tampoco es que vaya a cambiar nada el poner excusas. Así que voy a hacer un pequeño resumen (otro) del estado de mi vida y así, de paso, me ayudará a poner en orden mis prioridades.

Contenidos recuperados

Tengo pendiente la segunda parte de la explicación de cómo conseguí importar mi viejo blog usando Groovy y la API de Google Reader. Esto es algo que requiere bastante esfuerzo pues, aunque tengo el código escrito, hay que explicarlo convenientemente (no es mi mejor pieza de código y no es suficientemente autoexplicativa) y además tengo que buscar un plugin de Wordpress o algo que permita que el código fuente se vea decentemente. Se admiten sugerencias.

Claro, ahora que Google ha tenido a bien devolverme el viejo blog, algunas tareas de mejora sobre el proceso de recuperación pierden interés (me refiero a que hay anuncios que han quedado empotrados en los artículos importados y a que los enlaces han quedado apuntando al viejo blog) y aparecen necesidades nuevas. Lo primero que he hecho ha sido hacerme una copia de seguridad tanto de los contenidos -incluyendo los comentarios y la plantilla- y lo segundo poner un aviso de que me he mudado “para que conste”. Así que ahora he pensado que lo ideal sería importar esa copia de seguridad al nuevo blog, pero tengo que hacer una prueba en local y todo eso antes de hacer el cambio… y me está dando una pereza…

En cualquier caso, prometo escribir (pronto) la segunda parte del artículo sobre cómo importé el contenido del viejo blog. Aunque sólo sea porque lo prometido es deuda.

Reunión Agile Madrid

Tengo también pendiente el resumen de la última reunión del grupo local de Agile Spain en Madrid. Lo que pasa es que Alberto Peña (@plagelao) ha hecho tan buen resumen en su blog que casi que me voy a quedar en dejar constancia y poco más. Ya he subido las diapositivas que utilicé, pero no subiré las notas que escribí para ayudarme porque realmente no aportan nada a la presentación. Sólo para quede constancia: no es ni mucho menos mi mejor presentación; y me alegro mucho, mucho, de que se me olvidara comprobar el espacio en disco antes de empezar a grabar el video, y vuelvo a pedir disculpas públicamente a mis compañeros del grupo de Agile Spain por no haberme preparado bien la presentación. Podríamos haber aprovechado mucho más la reunión. Aunque son gente estupenda: no hicieron sangre conmigo y además me ayudaron a que el resultado final de la reunión fuera muy positivo.

Mi resumen de la discusión es el siguiente:

La confianza es el valor más difícil de alcanzar dentro de un equipo que se quiera autoproclamar ágil. Confianza en sí mismos, confianza entre ellos y confianza hacia el exterior (incluyendo a otros departamentos y, sobre todo, al cliente).

Yo siempre había pensado que la clave estaba en el coraje y la autoexigencia, pero después de esta reunión me di cuenta de que éstos son valores individuales, que requieren un esfuerzo individual. Pero el mayor obstáculo para ser ágil es un obstáculo colectivo: la confianza. Es relativamente fácil confiar en uno mismo, pero confiar en los demás… ay, ay, eso ya es otra cosa. Y que los demás confíen en nosotros… eso ya ni te cuento. ¿Verdad?

Agilismo.es

También estoy arrancando agilismo.es con el inefable Xavi Gost. Queremos hacer de agilismo.es un portal de referencia para el agilismo desde su perspectiva más de las trincheras. Hay ya muchos portales en español sobre Scrum y en general desde un punto de vista de la gestión de los proyectos. Por ejemplo, Proyectos Agiles (que dirige Xavier Albaladejo) es muy buen punto de referencia para esto. También Scrum Manager (iniciativa de Juan Palacio). Pero hemos visto que hay una gran carencia de contenidos de calidad cuando nos ponemos a buscar, desde el punto de vista de los desarrolladores, referencias en español sobre Extreme Programming, Integración Continua, TDD, Programación por Parejas, etc.

Ahora mismo es poco más que una “página güeb” donde este tipo y yo nos ofrecemos para dar coaching, pero no dudéis que va a ir creciendo rápidamente, con contenidos propios y de calidad.

iExpertos.com

Con Carlos Blé y su iExpertos.com tengo una relación muy curiosa. Además de proporcionarme “por la cara” el wordpress donde tengo mi nuevo blog, Carlos se ha empeñado en que yo puedo dar cursos. Bueno, a mi también me ha parecido buena idea, claro. Yo le había propuesto dar un taller sobre Integración Continua, pero no cuajó. Ahora parece que hay posibilidades de uno sobre Refactoring. Éste es más complicado porque requiere preparar muy bien el material. Pero me parece un taller muy, muy bonito. Ya veremos si sale y si lo puedo hacer yo o lo hace el propio Carlos, que de eso también sabe.

Por otro lado, hace tiempo le comenté que podríamos hacer un podcast “agilismo.es powered by iExpertos.com” y el tío ya tiene casi todo montado. Hasta hemos tenido que decir que no a Jorge Rubira para grabar un podcast de JavaHispano sobre el Agile Open Spain 2009, porque queríamos sacar el primer podcast antes de Navidades y Jorge ya no tenía hueco. Carlos es un tipo muy emprendedor e incluso se ha buscado un amigo que nos ha hecho una sintonía para no tener que pagarle a Ramoncín. Je, je.

También estamos pendientes, junto con Gregorio Mena, de arrancar una serie de webinars. Esto último es mucho más complicado incluso que el podcast, que ya tiene miga. Pero si conseguimos darle forma va a ser un bombazo.

¡Ah! Y el ya casi famoso libro de TDD de Carlos… adivinad quién ha escrito el prólogo… y no es el típico prólogo. Pero para saber de qué va lo tendréis que descargar. ¡Que será gratis!

Trabajo

Y la noticia de la semana es que ya tengo trabajo. La verdad es que ya casi tenía trabajo. Estaba a punto de cerrar un acuerdo para teletrabajar de “freelance” programando un par de aplicaciones JSF en un equipo scrum de tres personas (una jefa de proyecto, un junior y un servidor). Iba a ser mi primera experiencia como trabajador por cuenta propia. Pero hablo en pretérito imperfecto porque ayer por la mañana fui a una entrevista a la que había llegado convocado a través del INEM. (Sí, ya sé que es un poco extraño, pero ha sido así). Y resulta que he aceptado trabajar en un proyecto de 6 meses para el Ayuntamiento de Alcobendas. Bueno, y ellos también han aceptado trabajar conmigo, claro.

Estoy seguro de que va a ser un proyecto muy bonito en el que voy a poder aprender mucho. Creo que será muy bueno también para el Ayuntamiento, para los empleados a los que voy a ayudar y en última instancia para los ciudadanos. Durante la entrevista les expliqué por encima esto del agilismo y “alucinaron”. Claro. Les gusta mucho eso de ir teniendo “software que funciona”. Pero a continuación les cambia el gesto cuando se acuerdan de “las cosas de palacio van despacio”. Je, je. Dentro de un par de meses ya veremos quién ha sido más testarudo: si yo y mi “agilismo de guerrilla dentro de la recalcitrante administración pública” (parece el título de una peli de miedo) o ellos con su “no, no nos moverán”. Sospecho que ganaré yo. Mis armas son mucho más poderosas. Estoy dotado de un optimismo a prueba de bomba y ellos no. Todavía.

Coding Dojo

¡Pero esto NO es todo, amigos! El día 22 (el día de la Lotería) estamos montando un “coding dojo” en las intalaciones que Okuri Spaces tiene en el barrio de Tetuán (en Madrid). El maestro Xavi Gost vendrá a darnos una clase de su kung-fú programando en Java una aplicación para hacer un “pomodoro”. Y eso en un “pomodoro” de duración: 25 minutos. La sala es pequeña (apenas cabrán sentados unas 20 personas), pero lo grabaremos, tranquilos. Será gratis y la idea es que nos sirva para promocionar agilismo.es powered by autentia, que si todo va bien será una iniciativa muy interesante relacionada con la formación de calidad y de la que por el momento no os puedo comentar más porque tampoco hay mucho más y porque, ¡qué caramba!, hay que crear un poco de expectación.

En fin, esperemos a ver qué tal nos lo pasamos en el Dojo y si alguno de vosotros se decide a venir, no olvidéis saludarme, que a todo bloguero le hace ilusión conocer a sus lectores.

30 NovContenidos recuperados (I)

Por fin he conseguido recuperar mis contenidos del viejo blog en Blogger después de que Google y sus maléficas hordas de robots me lo robaran. Pero no creáis que lo que ha pasado es que Google se ha apiadado de mi y me los ha devuelto. Ni mucho menos. De hecho, sigo sin recibir noticias de Skynet. Creo que fue Leo Antolí el que me puso en la pista cuando me dijo que él podía leer mi blog con el Google Reader. Así que vi que había una API no documentada pero relativamente fácil de ir encontrando cómo extraer todo el contenido de mi blog desde el principio. Y me puse a ello. El resultado es que, a veces a ratos, a veces a sesiones más largas, ha dependido un poco del tiempo libre disponible, he conseguido:

  • extraer el contenido de mi viejo blog usando Google Reader,
  • lo he guardado en un fichero xml (luego explicaré un poco sobre el formato)
  • y ese mismo fichero lo he importado en el Wordpress que mi amigo Carlos Blé ha sido tan amable de cederme en iExpertos.com para alojar mi nuevo blog.

He aprovechado que tenía que escribir este programita para poner en práctica lo que aprendí en el curso de Groovy al que asistí no hace mucho. Groovy es un lenguaje lo suficientemente parecido a Java como para que la curva de aprendizaje no sea una barrera, y además incorpora toda una serie de simplificaciones de la vida normal del programador que hace que ponerse a hacer algo y que funcione sea muy atractivo.

Lógicamente he practicado un poco de TDD, pero sinceramente, la experiencia de refactorizar en un lenguaje dinámico como Groovy hace que sea bastante pesado y a veces desmotivador. El IDE no te ayuda tanto (no puede hacerlo en parte por la naturaleza del lenguaje) y eso se nota. Hay que ser mucho más cuidadoso, ir más despacio… buff. Y lo peor es que te tienes que pensar muy bien los nombres de las cosas porque renombrar un método o una variable implica hacerlo a mano, con mucho cuidadito.

En cualquier caso, es estupendo programar usando TDD: te obligas a que tu diseño sea testeable, lo cuál te obliga a pensar muy bien en las responsabilidades de cada objeto. Se hace muy fácil ir explorando el problema simplemente añadiendo consideraciones en los tests.

Mi estrategia ha sido ir escribiendo todo lo que era necesario en el test para conseguir mis objetivos. Inicialmente lo que quise fue obtener el contenido de cada artículo del viejo blog en HTML y guardarlo (por si acaso, ya sabéis) :-) Más tarde, después de pensar un poco en cuál debería ser mi estrategia, decidí que lo mejor era guardar esos contenidos en un fichero para ser importado en el nuevo blog: un Wordpress.

El primer objetivo era más bien jugar, practicando Groovy e ir escribiendo lineas de código para ir desentrañando la API de Google Reader. Una vez hecho esto, me olvidé un poco del código escrito (lógicamente aproveché trozos, pero no hice un trabajo de refactorización propiamente dicho). Lo interesante de esta primera parte fue que me ayudó a sacar varias conclusiones y afinar el entorno de trabajo:

  • trabajé con NetBeans y Eclipse y, aunque no está afinada la integración con Groovy en ninguno de los dos casos, me he de quedar con Eclipse. Por varias razones:
    • La más importante (para mi) es la fuerza de la costumbre. Estoy quizás demasiado acostumbrado a Eclipse y todos sus “keystrokes” (y eso que no programo últimamente demasiado)
    • La integración con Maven (uso el plugin m2eclipse -lo siento, Abel, no uso IAM)
    • El IDE de SpringSource, que apuesta decididamente por Grails y Groovy, está basado en Eclipse
  • La integración del plugin de Groovy y el plugin de JUnit es pésima. Hay que tener mucho cuidado porque te puedes encontrar persiguiendo fantasmas: se ejecutan tests que ya no están escritos, no se ejecutan tests que acabas de escribir o cosas por el estilo. Compilas, vuelves a compilar… y nada.
  • Llamar a Google Reader y procesar el JSON que devuelve como resultado usando Groovy es muy, muy, muy sencillo:
    def result = command.toURL().text
    JSON resultAsJSON = new JsonSlurper().parseText(result)
    
  • Extraer el contenido de cada artículo embebido en algún lugar de ese JSON se hace también muy, muy, muy fácilmente con Groovy:
    feed.items.each { item ->
      String title = item.title
      String content = item.content.content
      def out = prepareWriter(item.alternate[0].href - 'http://jmbeas.blogspot.com/')
      out << composeContentAsXhtml(title,content)
      out.close()
    }
    

De momento lo dejo aquí. En un par de días completo este artículo con la segunda parte, donde os explicaré cómo he generado el fichero en formato WXR (un RSS 2.0 extendido con etiquetas propias de Wordpress), que tampoco está precisamente documentado.

14 Nov¡Vaya semanita!

Me da mucha rabia no poder hipervincularme a mi mismo porque Google me ha robado mi blog, pero trataré de sobrevivir sin ello de momento.

No hace mucho explicaba que, aunque estoy desempleado, tengo mi agenda bastante ocupada. Esta semana ha sido un buen ejemplo:

Lunes

Para empezar, la semana ha sido más corta porque en Madrid el lunes fue festivo (“La Almudena”) y yo estuve de excursión familiar todo ese fin de semana largo. Estuve en el Valle del Jerte pasando unos días. En mi caso no sirve para quitar “estrés” ni cansancio, sólo se sustituye por otro tipo de “estrés” y cansancio. :-)

Martes

Tengo una vida doméstica muy rica. Lo cuál hace que a veces tenga que pasar mucho tiempo poniendo lavadoras y similares. :-) Pero entre lavadora y lavadora tuve tiempo para actuar como moderador en la lista de Agile Spain y dar “un toque” respecto a la Netiqueta. Esto de la Web 2.0 nos hace olvidar a veces que nuestra manera de comunicarnos debe adaptarse al medio. Pero bueno, también estoy seguro de que tiene mucho que ver con que el grupo de personas que participaban en la lista de Agile Spain ha crecido mucho en las últimas semanas y eso, necesariamente, obliga a que las costumbres se vayan ajustando.

Miércoles

El miércoles tuvimos reunión del grupo local de Agile Spain en Madrid. Agustín Yagüe (@ayague) nos explicó Kanban y estuvimos discutiendo sobre cuándo era conveniente usarlo. El resumen de Alberto Peña (@plagelao) es estupendo (así, de paso, me ahorro escribir más). Eso sí, una fotillo del “afterhours” donde la charla siempre es demasiado corta (sobre todo para los que tenemos que volver en cercanías).

El miércoles también empecé un mailing a algunos contactos para avisar de que vuelvo a estar dispuesto para incorporarme al mercado laboral. Efectivamente, he puesto el cartel de BUSCO EMPLEO. Así que ya sabéis, si conocéis a alguien que pueda necesitar un perfil como el mío para transformar sus equipos de desarrollo en equipos de alto rendimiento, no dudéis en darle mi CV. Lo siento, no os puedo ofrecer comisión, pero sí mi agradecimiento.

Jueves

El miércoles había grabado con la webcam del portátil la presentación sobre Kanban. ¡4 Gigas! Con lo que me pasé casi todo el día liado con conversiones de formato, subir el resultado a Vimeo, configurar el canal AgileSpainTV y el twitterfeed para avisar por Twitter. Incluso me curré una sencilla portada para el video, aunque ya estaba muy cansado y ha quedado como un “thumbnail”, que no me parece lo mejor, pero así se quedará por ser el primero.

Viernes

De madrugada me di cuenta de que Skynet me prometía que iba a restaurar mi blog en un día laborable. ¿Eso es calendario español? ¿USA? ¿China? No sé, no sé… Pensaba que Skynet tenía vocación de compañía global. ¿Acaso no saben que hay otros calendarios laborales? Podrían indicar a qué calendario laboral se refieren. ¡Ggrrr! ¿Se nota que estoy de uñas con esta gente porque me han robado mi blog?

A pesar de todo el maltrato, estuve jugando con Google Wave. Está muy verde. Mucho. Pero tiene pinta de que va a ser una plataforma de colaboración “brutal”. Yo ya estoy empezando a usarlo para colaborar con algunos a los que estoy enredando en cosas que tienen que ver con agilismo.es. De momento agilismo.es está más verde incluso que GoogleWave, pero creo que en el futuro será algo de lo que me podré sentir muy orgulloso e incluso vivir de ello (¡espero!).

También tuve mis más y menos con Juan Quijano (@Bendem) sobre si hay que poner comentarios o no en el código. Lo doy como batalla perdida. :-)

Sábado

Curso de Grails organizado por Escuela De Groovy (@escueladegroovy) y JavaHispano (@javahispano). Nacho Brito explica muy bien. Se nota que sabe de lo que habla. Me da un poco de “miedito” esto de Groovy y Grails por varias razones:

  • Me dan miedito los lenguajes dinámicos porque me gusta tener más control en tiempo de compilación y apoyo desde el IDE.
  • No me gusta el “scaffolding” por defecto porque da la sensación de que hacer aplicaciones CRUD-like está bien. ¡Y no es así!

Pero he de reconocer que hacerse una consola de administración con Grails es “cosa de niños” y que es ideal para arrancar una aplicación rápidamente y comenzar a obtener un retorno de la inversión rápidamente. Esto encaja muy bien con un enfoque ágil: iterativo e incremental.

Groovy es un lenguaje muy potente y una plataforma que ayuda mucho al
desarrollador. Está claro que ahorra muchas horas de programación
repetitiva.

Un cotilleo. Durante el café, Abraham me ha contado que están montando algo para Febrero relacionado con Spring. ¡Sólo puedo decir eso! ;-)

Y después de comer me he puesto a escribir este post, que iba a ser telegráfico pero ya ves… Je, je… y aún queda la noche del sábado y el domingo.

NOTA:
A todo esto, mi viejo blog sigue expropiado por Skynet.

11 NovGoogle me ha robado mi blog

El 29 de octubre de 2009 (hace ya casi dos semanas) me avisó un amigo de que mi blog había desaparecido. Vaya, pongo el URL y Blogger (empresa propiedad de Google) me contesta con un lacónico “No se encuentra el blog que busca”. Tirando del hilo resulta que parece que algún robot de Google ha decidido, sin avisar a nadie, que mi blog era una mina de contenido inapropiado. Como en todo este tiempo no he recibido ni un triste correo de Google para explicarme la situación de mi caso, he decidido mudarme y, si en un tiempo prudencial no puedo recuperar mis contenidos, tendré que denunciar a Google. Sí, denunciar. Porque son mis contenidos y Google me los ha robado. No valdrán mucho, pero son míos y los quiero.

Por cierto, muchas gracias iExpertos.com por acogerme. Me parece que éste es el comienzo de una bonita amistad…

22 OctInformática Profesional

Por fin tengo en mis manos el libro de Roberto Canales, Director General de Autentia. Se titula “Informática Profesional” y es un pedazo de libro. No sólo por sus 548 páginas, sino por todo lo que lleva dentro. Debería ser un libro de texto obligado en las universidades por todo lo que de transmisión de experiencia hay en él. Roberto retrata nuestro sector de una manera amena y didáctica. ¿Qué más se puede pedir? Pues si además le pides que dé consejos prácticos, que haga autocrítica y que tome partida, pues también.

Además, se puede leer a varias velocidades. Las excelentes ilustraciones de Jorge Crespo en formato cómic hacen que puedas hacer una primera lectura en “modo tebeo” (con breves incursiones al texto) y luego, más reposadamente leer todo el texto, que es mucho y con consejos muy sabios.

Reconozco que aún no lo he leido completamente, ni tan siquiera a velocidad “tebeo”. Me he quedado justamente antes de empezar el capítulo 5 “Vender Tecnología”. Pero he echado un vistazo en profundidad al índice y ojeado algunos capítulos que me resultaban especialmente interesantes (como el de “Metodologías”, claro), y creo que, como dice Jorge Crespo en la penúltima página:

Guarda bien este ejemplar. ¡¡Será la revolución del conocimiento empresarial!!

Estamos a punto para el Agile Open Spain 2009, que será mañana por la tarde y…

¿¿Mañana por la tarde?? ¡¡Maldita sea!! ¡¡Y todo lo que me queda por hacer todavía!!
Lo siento, os tengo que ir dejando…

Por cierto, y a propósito del Agile Open, me ha gustado mucho el cómic de la página 123. ¡Ah! Os lo tendréis que comprar… Sólo os daré una pista:-)

Enhorabuena, Roberto. Y muchas gracias. De mayor quiero ser como tú (bueno, puestos a pedir, un poco más guapo) :-)

21 OctNubes de etiquetas


Hoy va a ser uno de esos días “apretados”. Tengo muchas cosas en la agenda esperando desde hace demasiado y además el día es un poco más corto porque tengo que ir a Madrid para la reunión de nuestro grupo local de Agile Spain. Hoy va a ser divertido porque vamos a hacer presentaciones de 5 minutos para ayudarnos a montar el backlog de temas de esta temporada. Yo he propuesto el tema “Pruebas de aceptación automatizadas con Concordion”, que ya tocaba. Aunque me acabo de dar cuenta de que aún nos queda por tratar el tema del Manifiesto Ágil, que lo hemos ido posponiendo durante el verano y al final se ha quedado en nada. Bueno, si algún compañero se lo quiere “apropiar”… libre es de hacerlo.

Pero a pesar de lo apretado del día, no he podido evitar arrancar el ScribeFire para dar una referencia rápida de este artículo al que he llegado vía el twitter de Kevlin Henney. Se trata de usar Worlde (herramienta que ya he citado en otra ocasión) con el código fuente de un proyecto Java. Hace una comparación de nubes de palabras muy curiosa. El estilo de programación y el diseño de los dos proyectos en comparación hace que, visualmente, sea muy evidente en uno de los casos de qué va el proyecto pero que, por el contrario, en el otro sea prácticamente imposible (visualmente) decir de qué va. En el caso de este artículo se compara un diseño guiado por el dominio (DDD) con otro más “tradicional” (¿guiado por los datos?) pero a mi me gusta más por la reflexión que ofrece de fondo. ¡Jo!, cómo me gustaría tener más tiempo para probar esto y meterlo en la documentación a generar en los builds de integración continua. Se me antoja que si en una retrospectiva nos encontramos con que resulta difícil (visualmente) decir de qué va un proyecto/módulo… mmm, algo en el diseño debe estar fallando y una refactorización se “ve venir”. :-)

[La foto es de ... bueno, si hay alguien de Alicante o alrededores leyendo, quizás sepa de dónde es... y me invita a verlo en directo. :-) ]
Tags: