Archivos de la categoría ‘Project management’

h1

Integración contínua

Agosto 23, 2008

Seguro que a todo proyecto de software le llega el momento en que su código se hace MONSTUOSO, GRANDE y las pruebas son cada vez más difíciles de ejecutar o simplemente el tiempo que se dedica para “probar lo mismo” encarece el producto tóntamente.

Para ello, estos días nos estamos dedicando a montar un pequeño sistema de integración continua. Bueno, realmente estamos siendo un poquito más ambiciosos y estamos montando 3 sistemas :)

- Producción: Un entorno en el que se encuentra la última versión liberada de todas las aplicaciones y plataforma. Con ello nos es más fácil reproducir los bugs que reporta la comunidad y tenemos un entorno que enseñar a nuestros clientes cuando nos visitan y quieren ver cosas.

- Testing: Este sirve para trastear pero sin hacer pruebas de regresión. Se descarga la última versión de la rama de desarrollo y sirve para tener las nuevas aplicaciones corriendo y que se puedan ver y probar de forma manual.

- Entorno de regresión: Aquí lo chulo del tema. Un sistema que se dedicará a descargar la última versión de la rama de desarrollo, compilará todos los módulos y realizará las pruebas unitarias y de sistemas que vamos definiendo. Al final de la prueba, nos enviará un correo con el resultado de todas las pruebas.

Hay varias herramientas que te permiten tener un sistema de integración continua. Pero después que un buen amigo nos aconsejara, nos hemos decidido por Hudson. Realmente es impresionante, y OpenSource (¿Aún hay alguien que duda de la potencia del software libre?).

Creo que no hace falta que de una “point list” de puntos fuertes de usar un sistema de integración continua, porque las ventajas saltan a la vista. Hudson le añade un regustillo de sencillez y potencia al asunto del que no nos hemos podido resistir.

Por lo que hace los otros entornos, hemos tirado con un simple script de bash, que he utilizado para testear que estoy perdiendo facultades de programación :(. Que fácil que es equivocarte en la declaración de una variable, con la buena fe cambiarte a root para poner permisos de ejecución al fichero y… zas,,, olvidarte de volver al usuario simple :). Informe de daños: Un ubuntu que reinstalar :) (Que siempre le va bien).

Pero nada, el motivo de este post es recordar que los sistemas de integración continua no son grandes monstruos al alcance de grandes compañías de software o consultoras. Si se plantea desde un buen principio (Que nosotros no lo hicimos) te acaba ayudando muy mucho en el día a día y reduce incertidumbres. Son de aquellas cosas que… cuando las pruebas… no entiendes como has podido vivir tantos años sin ellas :)

h1

Locos por SCRUM

Junio 14, 2008

En abiquo (pfff, aún tengo que contar porque abiquo), hemos dando un pasito más en el proceso de desarrollo.

Cuando planteas roadmaps de producto, cuando los clientes empiezan a moldear tu producto con requerimientos, cuando piensas en crecer un poquito más y sobretodo ser óptimo en tu trabajo, es en ese momento en el que te planteas aplicar soluciones de base o metodologías de base que te ayuden en esa mejora sin cargar tu día a día.

Es por eso que ya hace medio mes que hemos empezado a desarrollar usando SCRUM. Para quien no lo conozca, mi resumen personal e intransferible :), de rendimiento individual a rendimiento de equipo, de desarrollo orientado a requerimientos técnicos, a pensar directamente en requerimientos funcionales, de visibilidad a 1 semana a visibilidad n meses.
Tampoco quería haceros un curso de SCRUM, porque aún soy junior en el tema ;) En abiquo alguna cosa hacíamos al respecto porque más o menos todos hemos mamado de metodologías ágiles pero nos faltaba tener un hilo conductor con el que organizarnos.

En mis primeras valoraciones… doy esta opinión:

  • Los post-it en la pared se caen y nos cabrea :). Buscaremos solución.
  • Estuvimos 6 horas preparando el SPRINT del mes, al equipo se les hace algo largo, y afecta en el rendimiento de las estimaciones finales ;)
  • Nos preocupa porque en tareas de PURO I+D el valorar “en cuanto tiempo el equipo puede hacer…” pues es demasiado indeterminado y puede afectar en el resultado final del sprint. Aunque con sudor y lagrimas todo se puede ajustar.
  • El hecho de tener una plataforma con tecnologías segmentadas (C++, JAVA; flex, etc,), hace que se complique el hecho de valorar en equipo, etc. Para ello estamos planteando el pensar en velocidades segmentadas por tecnología.
  • También estamos introduciendo tecnologías que apoyan a ser óptimos con el scrum. Ya hemos metido el Hudson en el despacho. Poco a poco iremos integrando todo un sistema completo de integración continua, así como otras herramientas de desarrollo.

Realmente… me quedo un post algo desordenado… y poco estructurado, pero tampoco quería ser ningún manual. Si queréis saber algún detalle al respecto… pues preguntar que si lo sé contestaré ;)

h1

Demo adventures … reflexiones

Abril 18, 2008

Me acabo de levantar :). La culpa la ha tenido esto. La verdad que como dice Santiago, apetece dormir después de un buen trabajo y más cuando las cosas han salido bien. Pero una vez superado creo que ya que Diego le ha dado un enfoque real-time yo le daré un enfoque instructivo: ” Como afrontar una demo”. O dejar por escrito las cosas que se han de tener en cuenta aunque siempre acabes haciéndolo de la peor manera. Siempre dentro de mi modesto entender:

1º Analiza el objetivo de la demostración. A quien va dirigido y que es lo que quieres llegar a mostrar. En nuestro caso teníamos claro que la idea era demostrar con algo vistoso que nuestra plataforma funciona y permite crear un market place de dispositivos alrededor de un router permitiendo crear aplicaciones como churros. Este objetivo ha de ser transmitido a todo el equipo para que se sienta importante e involucrado en el proyecto. Sin ellos no hay demo (Gracias chicos :)).

2º Ten claro en que va constar la demostración y hasta donde quieres llegar. Aquí hemos fallado :) Las ganas de hacer cosas crecían inversamente proporcional al tiempo que teníamos para desarrollarlas. La verdad que todo empezó con 2 o 3 ejemplos de aplicación que teníamos allí desordenados desde hacía tiempo y por el afán de innovación faltaban 12 horas para la demo y aún probábamos de añadir alguna cosa más. No es que me guste cortar el afán innovador del equipo, pero siempre he pensado que lo mejor es no cortarse en la definición, montar una lista (tan larga como uno quiera). Marcar las features mínimas para sentirse satisfechos y empezar a desarrollar hasta donde se llegue (Siempre superando ese mínimo).

3º Los timings de desarrollo. Sin querer fomentar los sobreesfuerzos en los equipos de trabajo… si alguna vez puedes pedirle un poquito más a alguien, este es el momento. Y así lo hemos hecho. Pero como siempre algo hemos hecho mal. No se si es por previsión o por sentirme más a gusto (Al fin y al cabo, las broncas por una mala planificación siempre caerán sobre mi persona). Pero el sprint final me gusta hacerlo el día D-2 :) Es decir, la penúltima noche. Parece una tontería, pero la sensación de riesgo, a 1 hora de la Demo y fallando todo por culpa de falta de sueño… no se la recomiendo a nadie :). Es jugársela… y que se te vaya todo a tomar por saco por culpa de una línea que has puesto 30 min antes de empezar la demo… crea inseguridad y desilusión en el equipo. También es cierto que la especie humana tiene la costumbre de dar el último esfuerzo en el último instante poniendo a prueba su “yo” interior :).

4º El plan B siempre debe existir :). Y nosotros finalmente no lo hicimos. Nos la juguemos a una sola carta :). Porque la solución de Diego de simular un accidente con los dispositivos no es buena solución (Aunque efectiva :))

5º No esperes con una demo mostrar todo lo que eres capaz. Porque ese no es el objetivo de una demo. Apóyate de una presentación, susténtate con un buen speach y hazle ver la mejora y el negocio a tu  observador. Demuestra que tienes el enfoque de su mercado y que sabes lo que necesita para mejorar.

Y creo que con esto ya he hecho mi pequeña contribución a la comunidad :). Espero que os sea de ayuda. Y si alguien quiere añadir otros puntos al respecto… ya sabe…