Mostrando entradas con la etiqueta procesos. Mostrar todas las entradas
Mostrando entradas con la etiqueta procesos. Mostrar todas las entradas

viernes, mayo 06, 2011

Scrumrf. Gestión ágil a la española

viernes, mayo 06, 2011 por Martín

Hace unos días Ricardo García de Tonkalabs se puso en contacto conmigo para enseñarme la aplicación que ha creado con otro amigo: Scrumrf.

Se trata de una aplicación para gestionar proyectos de manera ágil. En el Tour podéis ver algunas de las funcionalidades, que son las que cabría esperar como poder crear proyectos, sprints, tareas, gestionar tu backlog, el calendario, y poder ver diferentes gráficas como las de burndown o burnup.

martes, enero 13, 2009

Adoptando metodologías ágiles en un entorno hostil

martes, enero 13, 2009 por Martín

Ayer estuve viendo una presentación de esas que te enganchan. Se trata de Agile Tales de Claudio Perrone que podéis encontrar unas líneas más abajo. Es de esas presentaciones en las que tienes pocas esperanzas puestas pero que en los cinco primeros minutos te enganchan y después quieres saber como termina.

Claudio cuenta en los 50 minutos de la charla la historia de un proyecto "difícil", de esos que hay por ahí. Uno de esos proyectos que llevan años ejecutándose pero del que nunca ha salido ningún resultado. Un proyecto tóxico, en el que alguna compañía ya ha desaparecido en el intento de sacarlo adelante. Pero bueno, eres joven, y todopoderoso. Nadie te puede superar técnicamente. Lo sabes absolutamente todo en tu dominio. Has trabajado muchos años ya, has tenido puestos importantes, eres contractor, en definitiva, un experto. Nadie te puede vencer.




Hasta que claro, llegas a un proyecto como este en donde lo importante no es la capacidad técnica sino la capacidad comunicativa y el carisma. Puñaladas traperas, agendas escondidas, dobles intereses, acomodamiento, hipocresia, sarcasmo, un equipo de desarrolladores absolutamente desmotivado donde el desarrollador más amable te comenta "no eres bienvenido aquí". No parece el entorno más agradable para sacar un proyecto adelante. Seguro que a más de uno le suena.

Pero Claudio lo consiguió, y en esta charla comenta como lo hizo. La base es alterar lo preestablecido. Forzar a los desarrolladores a trabajar en iteraciones pequeñas para que obtengan resultados visibles y aumente la motivación del equipo; forzar al equipo de QA a testear desde el comienzo y a olvidarse de pasar meses preparando docuemntos de pruebas para testear una aplicación que no da visto la luz; acostumbrar a los managers a trabajar con transparencia, a establecer unos objetivos fijos al principio de las iteraciones y respetarlos hasta el final; trabajar duro en las iteraciones para implantar esa inercia en el equipo gracias a la transparencia de los Sprints diarios. Todas estas son algunas de las sugrencias de Claudio que son consecuencias de adoptar una metodología ágil en una empresa anquilosada en procesos obsoletos y abocados al fracaso.



Muy recomendable el escuchar la charla. Aquí tenéis también las transparencias.

lunes, julio 14, 2008

Algunas notas sobre el proceso de desarrollo en Linkedin

lunes, julio 14, 2008 por Martín


Tenía por aquí entre las cosillas pendientes de publicar unas transparencias sobre el proceso de desarrollo en LinkedIn que presentaron en la JavaOne de este año.



A mi LinkedIn es uno de los sitios que peronalmente me gusta más, especialmente desde que le dieron el cambio de imagen hace unos meses. Entre las cosas más destacadas de la presentación:


  • Ciclos de desarrollo de 2 a 4 semanas.

  • Los requisitos se dividen en pequeñas tareas con las que se rellenan tarjetas para cada desarrollador.

  • ¡¡Minimizar las reuniones!!

  • Test Driven Development

  • Más de 6500 tests de unidad e integración. Más de 500 tests de HTMLUnit.

  • El sistema de integración continua tiene más de 20 nodos. No se trata sólo de integración continua sino que ahí también se realizan los smoke tests.

  • El testing de integración puede llevar demasiado tiempo. Aquí easymock se muestra como una mejora importante.

  • 99% Java: Spring, ActiveMQ, Quartz, HTTPClient, Lucene, Grails, Jetty, DWR, jUnit, HTMLUnit, Hudson, Eclipse+Mylyn, EHCache. - Me llama la atención la ausencia de Hibernate o cualquier otro ORM. ¿JDBC Template "a pelo"?

  • Más de un millón de líneas de código, con ¡20 branches activas! Uso intenso de genéricos.

  • 50 ingenieros, 8 equipos. - Viendo el impacto de esta red y la importancia que ha adquirido, ¿no os esperaríais más?



La presentación sigue con notas sobre la arquitectura de LinkedIn, que también son interesantes para los que no conozcan los fundamentos básicos sobre los que se sustenta, es decir el mover la integridad a un segundo plano y el mantener toda la red de contactos de todo el mundo en memoria. El año pasado ya ponía algunos comentarios sobre el tema.

jueves, junio 21, 2007

Nuevas metodologías de desarrollo (humor)

jueves, junio 21, 2007 por Martín

No me puedo resistir a poner aquí un enlace a este post Asshole Driven Development.

Destornillante.

martes, abril 03, 2007

Eclipse: 5 años lanzando software a tiempo.

martes, abril 03, 2007 por Martín

Hoy he estado viendo la presentación que Eric Gamma realizó en la JavaPolis 2006. Me parece que es una referencia para cualquier persona que tenga que dedicarse a la gestión de procesos en una compañía de software, y desde luego de obligada visión para cualquiera que esté interesado en estos temas. En las siguientes líneas intentaré condensar los cuarenta minutoes a los que no llega la charla.

Y es que no muchas compañías pueden vanagloriarse de de haber estado liberando software en los plazos establecidos durante cinco años consecutivos. Como dice Eric, shipping matters, al menos si quieres hacer crecer una comunidad.

El proyecto Eclipse está actualmente distribuido a lo largo de todo el globo pero comenzó como un desarrollo cerrado en el que simplemente algo no existía si no había sido liberado previamente. Nadie podía hablar de proyectos que no habían sido liberados. Es fácil comprender que esto suponía una gran barrera entre los desarrolladores y los usuarios ya que era imposible recoger feedback hasta que el producto no se lanzaba.

Es muy interesante ver como Eclipse migró a una cultura orientada al lanzamiento de software. La regla es sencilla: "Si algo contribuye al lanzamiento de software, incluso indirectamente, entonces se considera bueno. Si algo no contribuye, entonces es malo". ¿Vamos a liberar enormes documentos de diseño? ¿No? Ok, entonces no los haremos. Dentro de la cultura se valora siempre la habilidad para liberar software. ¿Has liberado software? Bien, entonces puedes hablar.

En 2001 Eclipse realizó la transición a un proceso abierto de desarrollo. Pero un proceso abierto de desarrollo genera una comunidad, y una comunidad requiere atención. De repente los desarrolladores se encontraron con que los usuarios podían interactuar con su bugzilla, que en los newsgroups aparecían constantemente preguntas, etc. Para sobrevivir a este efecto, Eric señala como algo fundamental el invertir en interacción con la comunidad. Cada desarrollador de Eclipse puede invertir el 30% de su tiempo en interactuar con la comunidad. Se trata de romper las barreras entre los usuarios y los desarrolladores.

En un proceso de desarrollo abierto las dos partes se comprometen y las dos partes ganan. El proyecto le ofrece al usuario el compromiso de escuchar y reaccionar a su feedback, demostrar un progreso continuo y hacer transparente el proceso de desarrollo, es decir, mostrar los planes de desarrollo, permitir acceso a las diferentes milestones, etc. Por otra parte, como contrapartida los usuarios comenzarán a involucrarse y a resolver las preguntas fáciles (si la comunidad es saludable los desarrolladores sólo tendrán que gastar su tiempo en contestar las preguntas complejas), informarán sobre errores y defectos, validarán la tecnología escribiendo plug-ins, enviarán mejoras y parches, etc.

Para conseguir un proceso de desarrollo abierto se requieren live betas, es decir, se requiere que el software se pueda probar pronto, conforme se va creando. Esto requiere que el proyecto sea saludable ya que se debe obtener calidad en todo momento. En Eclipse esto son las milestones. Eclipse lanza una versión mayor de su software por año, de otro modo sería demasiado estrés para el equipo, el resto son milestones.

El proceso de desarrollo comienza con una fase de calentamiento que dura un mes. En esta fase cualquiera puede hacer lo que desee y nadie le va a pedir cuentas por ello. Es una fase también en la que se analiza lo que se ha hecho en la versión anterior y se buscan posibles mejoras. Al final de esta fase se crea el plan inicial de lanzamiento.

Posteriormente se entra en el proceso de milestones. Eclipse lanza de siete a ocho milestones por año. Inicialmente una milestone duraba tres semanas pero pronto encontraron que a medida que el proyecto se hizo complejo esta medida no era suficiente, así que en la actualidad cada iteración consume seis semanas. El objetivo inicial es conseguir software saludable, y las milestones les ayudan a mantener la forma, es decir mantener siempre un ritmo de trabajo saludable. De este modo, cuando llega el momento de lanzar la versión final, el espacio que hay entre la última milestone y una versión de producción no es tan grande y el esfuerzo a realizar es menor. Una vez terminada cada milestone es firmada por los diferentes equipos.

Un proceso de desarrollo transparente requiere también planificación transparente, es decir, mostrar el plan al público. Este plan ya no será nunca más estático, sino dinámico, y se actualizará continuamente según la evolución del proyecto y el feedback de la comunidad. Para eso los elementos que forman el plan tienen estados: commited, proposed o deferred.

Una milestone saludable significa consumible, es decir, que pueda ser probada (testable) y que pueda ser demostrada (demo-able), y al mismo tiempo debe ser honesta, es decir, con un tiempo fijo de lanzamiento y un incremento en las funcionalidades. Con cualquier milestone de Eclipse los usuarios deben ser productivos. El software debe siempre ser continuamente consumible, continuamente interesante y debe continuamente escuchar el feedback.

Para conseguir estos objetivos los equipos de desarrollo tienen que consumir sus propios productos. Eclipse trabaja con un sistema de integración continua multi-componente (es decir cada componente, cada equipo, tiene su sistema de CI que se coordinan para dar el resultado final). La milestone se divide a su vez en dias y semanas. Cada dia un equipo debe consumir lo que ha creado el día anterior y comenzará a trabajar sobre esa base. A su vez, cada semana, los diferentes equipos comenzarán a consumir todo lo que el resto de equipos realizaron la semana anterior. Finalmente, el último gran salto es la milestone, en la que serán los usuarios finales los que consumirán el producto en el que se ha trabajado durante las últimas semanas. Todo esto lleva a un feedback continuo, primero el equipo, después el resto de equipos, para llegar finalmente al usuario final.

Finalmente el proceso termina con el end game. Este se divide en fases de pruebas y corrección de errores: test-fix-test-fix-test ... Eclipse no tiene una sección de testers. Todo desarrollador es un tester. El ritmo de hacer tests puede ser cansino, por ello no pasan más de dos días realizando tests y a continuación pasan a corregir errores. Una vez corregidos, se vuelven a los tests, y el ciclo continua. El ciclo se vuelve más duro y estricto conforme avanza el tiempo y se acerca la fecha definitiva. El número de bugs es menor, hay más revisiones y se controla mucho más el número de regressions.

Posteriormente Eric Gamma habla sobre la transición en productos comerciales hacia un Open Commercial Software Development, que según él (yo estoy de acuerdo) es el futuro del software comercial. El objetivo es conseguir la misma transparencia que hay en Eclipse pero en proyectos comerciales. Todo ello requiere que el proyecto comercial:

  • Ofrezca acceso directo al sitio web de los desarrolladores.

  • Ofrezca acceso al código fuente (o parte), que exista una comunidad, que los propios clientes puedan crear mejoras y parches, ...

  • Permita interactuar directamente con el equipo de desarrollo.

  • Ofrezca acceso a todas las versiones previas, milestones, betas o versiones de integración.



Creo que esto resume más o menos lo que es la charla de Eric. Parecen un conjunto de ideas muy a tener en cuenta, y que pueden ayudar a muchas organizaciones que realmente sufren para ser capaces de lanzar lo que inicialmente parece como una simple versión de producción pero que sin un proceso de desarrollo adecuado se puede convertir en un infierno que se alarga durante meses o incluso años.