Conferencia Agile Spain 2011

Los días 20 y 21 de octubre de 2011 se celebró la Conferencia Agile Spain 2011.

He necesitado reflexionar durante algunos días para poder valorar la conferencia tal y como se merece. Después de resumir la experiencia al resto de compañeros, me he dado cuenta de que realmente he aprendido y me he llevado muchas más cosas de las que en un principio imaginaba.

La conferencia del año pasado fue mi primer contacto con las metodologías ágiles y este año he tenido el privilegio de presentar una sesión junto con Marcin Gryszko, en la que hemos explicado cómo es la evolución de uno de nuestros proyectos, que al igual que el resto, está gestionado con metodologías ágiles. El proyecto es BKOOL.

BKOOL at CAS 2011

Mi experiencia personal

De entre todas las sesiones a las que asistí, me gustaría destacar las siguientes:

Lo que superó todas mis expectativas:

  • He conocido a muchísima gente con grandes ideas y proyectos, personas con mucha ilusión y ganas de continuar mejorando.

  • He aprendido la forma en la que trabajan otros equipos, sus problemas, sus retos, sus soluciones.

  • Me han sorprendido los diferentes modelos de negocio de algunos proyectos, reflexionando desde un punto de vista económico.

  • He comprendido que ser ponente es algo realmente difícil, pero al mismo tiempo muy positivo y enriquecedor.

  • He recordado que una persona es capaz de llegar tan lejos como se proponga (aunque quizás nunca he llegado a olvidarlo).

Groovy Metakoans

You may have done Groovy Koans. But it’s not the end of the long way to enlightment. Groovy Metakoans will teach you how Meta Object Protocol works and how to change object behavior at runtime.

What is metaprogramming?

According to Wikipedia is

the writing of computer programs that write or manipulate other programs (or themselves) as their data, or that do part of the work at compile time that would otherwise be done at runtime

You will learn:

  • how dynamic method dispatch works with Groovy
  • how to obtain information about an object at runtime using MetaObjectProtocol interface
  • how to do AOP with Groovy
  • how to add new methods with categories and mixins
  • how to inject new methods and properties using MetaClass
  • how to synthetize behavior upon invocation (like Grails/GORM dynamic finders)

The Koans assume that you have some basic practical experience with Groovy. If not, I recommend you personally Programming Groovy by Venkat Subramaniam. Although it covers Groovy 1.5.4, you find on 300 pages everything about Groovy from first steps with the language to advanced metaprogramming.

Grab’em while they are hot!

Spock Grails extension – execute or ignore specification depending on the environment

Our newest Spock Grails environment extensions plugin adds two annotations to Spock:

  • @ExecuteForEnvironment
  • @IgnoreForEnvironment

You specify environment(s) as the annotation parameter, e.g. @ExecuteForEnvironment(['test_integration', 'test_performance']) or @IgnoreForEnvironment('test'). More examples can be found in the official user guide.

Grails Fixtures Plugin – Object Templates

Grails Fixtures plugin gives you a Grails domain object factory (or object mother if you like fancy names :)) thats lets you define your test fixture using a DSL.

Now, starting from the current snapshot (1.0.8-SNAPSHOT version) you can define domain object templates. A template defines an object with some common properties that will be replicated in all object instances based on that template.

Interested? Then continue reading Marcin’s blog…

Trabajando con diferentes versiones de Grails

En OSOCO hace tiempo que apostamos por Grails como framework para desarrollar aplicaciones web, y es la herramienta que elegimos por defecto en todos los proyectos nuevos de esta índole.

Con el tiempo, esto ha ocasionado que tengamos que trabajar con diferentes versiones de Grails a la vez, lo que por defecto puede ser algo engorroso.

Hace poco subí a mi GitHub un script que se encarga de lidiar con este problema. Sé que había cosas ya hechas para esto, pero me gusta cocinarme estas pequeñeces yo mismo :-), así que he subido el script al GitHub de OSOCO para quien lo encuentre útil:

Grails Multiple Versions

No tiene ningún misterio, pero ahorra tiempo :-D. Para hacerlo funcionar, basta con ponerlo en el path con mayor prioridad que la instalación de Grails (yo suelo tener estas cosas en $HOME/bin o $HOME/bin/scripts, que está al principio de mi path).

Se pueden configurar un par de variables (el nombre de la instalación por defecto y en qué directorios se buscarán tanto esa instalación como cualquier otra), pero con los valores por defecto debería funcionarle a la mayoría de la gente :-).

En cualquier caso, podéis ver una descripción de uso más detallada en el README.

Agile Inception

Muchos proyectos mueren sin ver la luz principalmente por dos razones:

  • No son capaces de hacer las preguntas correctas.

  • No tienen el valor de hacer las preguntas difíciles.

Cuando comienza un proyecto, cada miembro del equipo se forma una idea del mismo y de cómo llevarlo a cabo con éxito. Sin embargo esta visión puede ser completamente diferente para el resto.

Ideas diferentes

En el libro The Agile Samurai de Jonathan Rasmusson, se describe la herramienta Agile Project Inception.

Básicamente lo que se propone es que nos planteemos una serie de preguntas antes de comenzar cualquier proyecto. El espíritu que hay detrás de esto es llevar el proyecto a su verdadera esencia, definiendo y comunicando esa visión entre todo el equipo.

Ideas iguales

10 Preguntas

  • ¿Por qué estamos aquí?

    Esta es la primera pregunta y la más obvia. Es un recordatorio de por qué estamos aquí, quienes son nuestros clientes, y por qué decidimos hacer este proyecto.

  • Elevator Pitch

    Si tuviéramos treinta segundos y dos frases para describir nuestros proyecto, ¿qué diríamos?

  • Diseña tu caja

    Si hojeamos una revista y vemos un anuncio de nuestro producto o servicio, ¿qué diría? y lo más importante, ¿lo compraríamos?

  • Crea una NOT List

    Esta claro lo que queremos hacer en este proyecto. Vamos a ser aún más claros y mostrar lo que no vamos a hacer.

  • Conoce a tu comunidad

    La comunidad de nuestro proyecto siempre es mayor de lo que pensamos.

  • Visualiza la solución

    Vamos a pensar en alto nivel la arquitectura y las tecnologías que vamos a utilizar para asegurarnos de que todos estamos pensando en lo mismo.

  • ¿Qué te quita el sueño?

    Algunas cosas que pueden ocurrir durante el proyecto nos pueden asustar. Pero hablando de ello, y pensando qué podemos hacer para evitarlas, puede que den menos miedo.

  • Calcula el tamaño

    ¿El proyecto es cosa de tres, seis o nueve meses de duración?

  • ¿Cuáles son tus prioridades?

    En los proyectos se pueden definir prioridades en cuanto a tiempo, alcance, presupuesto y calidad. ¿Qué es lo más y lo menos importante para este proyecto en este momento?

  • ¿Cuánto me va a costar?

    ¿Cuánto cuesta? ¿Con qué equipo vamos a sacar esto adelante?

Seis meses en OSOCO

La semana pasada cumplí 6 meses trabajando en OSOCO.

No suelo recordar fechas importantes o aniversarios, pero de alguna forma he tenido muy presente el día en el que comencé a trabajar aquí.

Durante este periodo de tiempo mi vida ha cambiado en muchos aspectos, tanto personal como profesionalmente. 6 meses puede parecer poco tiempo para sacar grandes conclusiones pero a mí me parece suficiente para reflexionar y poder valorar el pasado y el futuro.

Trabajo

Cuando comencé a buscar trabajo, tenía muy claro el tipo de empresa en la quería estar y desde el primer momento sentí que había llegado al lugar correcto.

Hay muchos conocimientos y tecnologías que tengo que dominar en mi trabajo diario, quizás los más destacables son el lenguaje de programación Groovy y el framework de desarrollo web Grails así como Scrum, pruebas, refactoring, patrones de diseño, HTML/CSS, etc…

Ser el peor me está permitiendo mejorar muy rápido. Cada cosa que aprendo la intento compartir con el resto de mis compañeros y alguna de mis ideas ya se ha puesto en marcha, como los breakfast speech. Estoy muy orgulloso de sentirme parte activa de este equipo.

Gracias

Si tuviera que resumir este periodo de tiempo en una palabra, esta sería gracias.

Lo primero que tengo que agradecer es que un lugar como OSOCO exista. Puede parecer extraño agradecer algo así pero para alguien tan idealista como yo, encontrar empresas donde se hacen las cosas bien y se intenta mejorar constantemente es esencial.

Lograr que todo funcione sólo es posible gracias al esfuerzo y trabajo de las personas que hay detrás, un gran equipo que me ha dado toda su confianza y libertad, ayudándome a mejorar constantemente. Gracias chicos!

Creo que cada época en la vida nos aporta algo en mayor o menor medida, para mí estos 6 meses han sumando muchísimo.

Todo lo que me ha ocurrido es demasiado evidente para llamarlo casualidad y lo suficientemente real para llamarlo destino.

CRM en Grails

Hoy hemos puesto en producción uno de los proyectos en los que hemos estado trabajando últimamente. Se trata de un CRM desarrollado en grails.

La aplicación permite gestionar usuarios y crear una estructura jerárquica comercial. Los potenciales clientes (leads) se asignan a comerciales según diferentes criterios y la aplicación permite registrar y gestionar los pasos necesarios  durante el proceso de preventa.

Otro de los puntos fuertes de la aplicación es la gestión de comisiones y la gestión de las visitas a los clientes integrado con Google Calendar.

Por último, estamos trabajando en desarrollar con Activiti una aplicación para gestionar los procesos de negocio y su integración con el CRM.

Enhorabuena a todos los participantes en el proyecto: Geli Crick, Adrián Santalla, Arturo Herrero, Jesús Gómez y ek10.