You are currently browsing the always an underachiever blog archives for July, 2011


Conferencia Rails 2011 (2/2)

Y llega la segunda parte del post sobre la conferencia rails 2011. Al segundo día llegamos con sueño y nos esperaba lo siguiente:

  • Rails for mobile devices (Alberto Perdomo)

Sesión analizando las posibilidades de Rails, HTML5 y otras tecnologías para el desarrollo de webs para dispositivos móviles. Muy recomendable echarle un ojo. La parte de HTML5 la conocía pero tocó media queries y frameworks multiplataforma.

  • Ruby and Rails, as secret weapon to build your service-oriented apps (Felipe Talavera)

Sesión sobre RoR orientado a aplicación complejas con módulos que interactúan con servicios externos. No me interesaba mucho para empezar por lo que no puedo analizarla en profundidad.

  • A SaaS startup: lessons learned (Pablo Villalba)

Lecciones desde la experiencia de un español en San Francisco. Muchas recomendaciones, centradas en métricas y cobro. Se notaba la experiencia de alguien que lleva tiempo luchando por su idea y su empresa y comenta lo que ha aprendido en el camino (a parte del nivel de inglés). Sin duda, de las mejores sesiones, por contenido y comunicación. Slides.

  • Humpty-Dumpty: When the Cloud Falls Down (Amy Woodward)

Sesión centrada en los efectos de la caída de Amazon en Abril. El tema en sí no me resultaba muy interesante, por lo que no me pareció una sesión muy destacable.

  • Travis CI – Distributed, Continous Integration for the Ruby community (Sven Fuchs and Josh Kalderimis)

Sesión contando las características del servidor de integración continua Travis CI, desarrollado para la comunidad rails. Los dos ponentes son core-comitters de rails y se notaba su experiencia en este tipo de eventos, por su capacidad de comunicación. Recomendable si tienes un proyecto open source con ruby, slides.

  • Practical Ruby Projects with MongoDB (Alex Sharp)

Una sesión centrada en las características de MongoDB y su aplicación en un proyecto de gran envergadura. Muy centrada en MongoDB, interesante. No hay slides disponibles.

  • 60 to 0 MPH in 2.5 Seconds: A Retrospective (Jim “Big Tiger” Remsik)

Retrospectiva filosófica desde la experiencia de un accidente de tráfico, pese a las buenas críticas que he leído me pareció la sesión más floja.

Conclusiones

La primera conclusión, más evidente, era el poco contenido de rails en las charlas. No recuerdo bien pero probablemente hubo menos de 5 slides con código ruby en toda la conferencia (otra cosa en los workshops). Es el mismo fenómeno que sucede en la comunidad ágil, no se habla del tema principal de la conferencia, se habla del ecosistema.

Lo menciono porque es destacable pero no me parece negativo. Quizá el tema principal está muy visto (y extrapolando a la comunidad ágil), quizá temas avanzados son complicados de tratar presuponiendo un nivel, puede haber miles de razones. Si estos temas tangenciales interesan a la comunidad, no me parece mal realizar sesiones sobre ellos.

Otra conclusión fue la falta de participación en general. No se si fue el tiempo, que en muchas sesiones acechaba o mucho más probable, el idioma. Las sesiones se impartían en inglés y las preguntas se esperaban en ese idioma. En general los oyentes extranjeros fueron mucho más participativos que los españoles. Dar las sesiones en inglés y que sólo hubiese un track no me parecen mal de por sí, pero dan pie a discusión.

Por último, el nivel de algunas sesiones me pareció un poco pobre. Más que de contenido, que podía interesarme o no, creo que fallaba más la comunicación del mismo. No es un error que podamos atribuir al idioma porque se dió por igual entre ponentes extranjeros y nativos. Faltaba experiencia en hablar en público y se notaba bastante la diferencia de nivel de los ponentes. Las conclusiones de mis opiniones reflejan bastante bien los votos realizados. Todo esto desde mi perspectiva de la inexperiencia absoluta (es fácil pedir y no dar :\)

El networking y las conversaciones que rodearon la conferencia estuvieron a un nivel muy alto, un placer estar con gente como @edulan, @jacegu, @amuino, @germanDZ, @lparedesdev y muchos otros.

La conclusión general es que, pese a las pegas, me ha gustado bastante y volveré el próximo año :D.

Conferencia Rails 2011 (1/2)

El 14 y 15 de Julio asistí a la conferencia rails en Madrid. Partía con muy poca experiencia en Ruby On Rails pero @edulan me comentó que quería asistir y me animé a acompañarle. No fue un impedimento, ya que la mayor parte de las sesiones no trataban sobre rails en sí, si no sobre el ecosistema que acompaña a rails.

from above
Gracias a valakirka por la foto con licencia CC

Las fotos de la conferencia están aquí. Cómo veis la localización era cuanto menos curiosa, el salón de bailes Florida Park situado en el Retiro. Las diapositivas, libros y más fotos están en este gist.

No pude asistir a los talleres prácticos (MadridOnRails) que acompañan a la conferencia que se celebraron el día antes. En los días propios de la conferencia se celebraron 14 sesiones en un sólo track.

Sesiones

Describo y critico (:P) las sesiones brevemente:

  • Five years of Rails, from Spain with <3 (J. Ramírez)

La primera sesión fue un recuerdo de los éxitos de la comunidad rails y las experiencias que han vivido. La sesión fue muy entretenida, aunque como @jacegu me quedó la sensación de que llegaba ‘tarde‘ a la escena rails, después de 5 años de andadura. Es una sensación amarga, de que me he perdido algo increíble, pero el culpable, obviamente, no es la sesión en sí que estuvo muy bien.

  • Migrating a development company to Rails 3.x (Julian Fischer)

Una sesión sobre las razones de actualizar proyectos en desarrollo o mantenimiento a versiones actuales de rails. Por el aire se percibía que se hablaba de la no trivial migración de rails 2x a 3x. El argumento de la sesión era que el software tenía un mantenimiento como el resto de elementos de tu vida (coche, casa) y las actualizaciones de versiones eran uno de esos mantenimientos. El primer paso era convencer a los desarrolladores de su importancia y luego al cliente, que era el que tenía que pagar. Si el cliente no podía permitírselo…

Yo no salí convencido por lo que la sesión en sí no me terminó de convencer. Se trataron razones y consejos pero ninguno me pareció decisivo.

  • Let’s Have a Cup of CoffeeScript (Nicolás Sanguinetti)

Una sesión de introducción a CoffeeScript. Había leído y oído cosas interesantes y esta sesión me ha animado aún más a probar. Estaba bien planteada, con ejemplos y comparativas de javascript normal. La sensación de la sesión fue muy buena.

  •  How I Learned to Smell Code (Renée De Voursney)

Renée de Voursney nos contó sus experiencias en la búsqueda de la calidad de código. Recomendó varios libros (Clean Code…). El contenido de la charla no era nuevo para mí, por lo que estuve más distraído y no me llamó tanto la atención como otras.

  •  Five languages in a moment (Sergio Gil)

@porras hizo una recopilación de lo que había aprendido jugando con varios lenguajes (Haskell, Clojure, uno muy peculiar…). La sesión fue muy interesante. Eché de menos algún ejemplo más cercano al desarrollo web en los lenguajes funcionales que trató, pero es un problema mío con todas las charlas de lenguajes funcionales. Muy elaborada, de las mejores sesiones. Las slides están aquí.

  •  Java is from Mars, Ruby is from Venus (Paolo Perrota)

Paolo Perrota, el autor de Metaprogramming Ruby nos contó los problemas que experimenta un desarrollador de Java o Ruby que decide aprender otro lenguaje. Orador experimentado, supo convencer a la audiencia de las ventajas/desventajas y diferencias entre los dos lenguajes. En mi opinión fue la mejor sesión de la conferencia y echo de menos la grabación. Las slides están aquí.

java is from mars, ruby is from venus
De nuevo, gracias a valakirka por la foto con licencia CC

  • Lightning talks

Una ronda de lightning talks, algunas de ellas enumeradas aquí. Se notó la experiencia y brilló Luismi Cavallé con Steak is a scam. Muy recomendable echarle un vistazo.

Fiesta!

Con esto se acabó el primer día de sesiones, nos dimos una vuelta y volvimos al recinto del Florida Park para la fiesta de la conferencia en sí. Networking y conversaciones interesantes con el mundillo rails y al siguiente día que contaré mañana :)

Lean Code

En la Software Craftsmanship 2011 tuve la suerte de asistir a una sesión sobre Lean Code, impartida por Chris Parsons. Las slides de la sesión están en su blog. La idea principal era aplicar los principios de Lean Manufacturing al desarrollo software, Lean Software Development.

La idea fue popularizada en el libro Lean Software Development de Mary Poppendieck y Tom Poppendieck y ha sido desarrollada en posteriores libros. Los principios Lean se pueden resumir en los siguientes puntos:

  1. Eliminar desperdicios (waste): todo lo que no aporta valor al cliente es superfluo, se considera un desperdicio y se deben minimizar o eliminar. Es interesante la clasificación de desperdicios (7+1) y su equivalencia en el desarrollo software:
    • Defectos (la falta de calidad es un desperdicio)
    • Esperas
    • Inventario
    • Transporte
    • Sobreproducción (fabricación de demasiados productos, lo que lleva a inventarios y gastos que tiene que asumir el cliente final)
    • Movimiento
    • Sobreproceso (entendido como la construcción de productos que hacen demasiadas cosas no útiles o que no necesita el cliente).
    • Infrautilización de las personas (como desperdicio de habilidad o talento)
  2. Entregar tan rápido como se pueda: Esta idea ha arraigado bien en el mundo del desarrollo, los ciclos de feedback son vitales para que el sistema solucione las necesidades reales y actuales del cliente.
  3. Decidir lo más tarde posible: Tomar decisiones en el último momento responsable, basadas en hechos y no en suposiciones. En The Art of Lean Software Development comentan una anécdota del desarrollo del Toyota Prius. Al parecer en las especificaciones de desarrollo no se concretaba el tipo de motor, sólo unas limitaciones en consumo. Toyota trabajó en base a esas especificaciones y paralelamente en varios diseños de motores, hasta que en el último momento posible se decidieron por un tipo específico de motor híbrido.Este principio parece que entra en conflicto con eliminar desperdicios, en el ejemplo del Prius se podría ver cómo desperdicio el diseño de motores que al final no se escogieron, pero el resultado final podría haber sido un desperdicio completo si no se hubiese tomado la decisión en el último momento posible, basada en hechos.
  4. Dar poder al equipo: La metodología Lean se centra en crear el ambiente correcto para que los desarrolladores puedan hacer su trabajo, eliminando impedimentos y dejándoles tomar decisiones.
  5. Ver el total: Se puede resumir en la máxima: “Think big, act small, fail fast; learn rapidly“. El producto es más que la suma de sus partes, tenemos que tener en cuenta las interacciones con terceros o dentro del propio equipo.

Lo más interesante (IMHO) de la sesión era el taller práctico en el que intentamos aplicar los principios comentados durante varias iteraciones. Posteriormente discutimos sobre qué entendíamos como waste en desarrollo y el resto de principios aplicados al desarrollo. Casos particulares recurrentes fueron tests que se quedaba desfasados con el cambio de funcionalidad (eliminarlos?, adaptarlos?)…

La experiencia en sí fue muy enriquecedora, la práctica nos reveló carencias técnicas (sobre todo en la interacción con entrada/salida), diferentes enfoques de desarrollo en los equipos (TDD, tests después, sin refactorización…). Hubo grupos que utilizaron sistemas de control de versiones, gente que terminó sin problemas, grupos que refactorizaron entre iteraciones y al final no llegaron…

Esta sesión se celebró después en el AOS2011, con @plagelao de facilitador y, cómo me gustó tanto la experiencia, actúe de facilitador en una sesión en mi empresa, LUCE I.T.. He podido visualizar el resultado de la sesión en tres entornos muy diferentes, con desarrolladores de diferentes niveles y ver las dificultades de cada grupo y los diferentes enfoques técnicos.

Las soluciones técnicas solían recaer en implementaciones llenas de ifs hasta casos más elaborados (en 10 minutos por iteración). Me gustó la simplicidad de aproximación de solución con Hashes de Ruby (ejemplo: DISCOUNT = { ‘A’ => {:quantity => 3, :discount => 20 } }).

Si queréis echar un ojo a la sesión (y estropear el estrés y las prisas que causa la parte práctica ) tenéis las slides traducidas con notas aquí (‘c’ para mostrar algunos comentarios).

Si tenéis alguna duda o queréis saber más, comentad!