Lo que no se mide, no se puede mejorar. Lo que no se mejora, se degrada.

Hace algún tiempo que en el podcast de Aporreando Teclados hemos hablado bastante sobre Agile. Y no es raro que caigan en nuestras manos libros como “Actionable Agile Metrics for Predictability” y” When Will It Be Done” de Daniel S. Vacanti.

Spoiler:

El autor nos indica que la lista de tareas realizadas en un proyecto de software es un generador de números aleatorios. Basta con monitorizar dos cosas:

  • El día en que se empieza a trabajar en esa tarea
  • El día en que se da por cerrada esa tarea

A partir de esas dos fechas, puedes obtener el número de días en las que se ha trabajado. Hace notar que si una tarea empieza y termina el mismo día, no significa que se haya tardado en cerrar cero días, sino que ese caso es un día, aunque haya sido una, dos u ocho horas. Con esto podemos obtener una tabla como la del ejemplo:

En la obra se explica que la columna de Días son números totalmente aleatorios con una sutileza: Son aleatorios sí, pero indican lo que ha ocurrido en la realidad. Y eso es lo importante, ya que con esta información se puede saber algo muy importante:

Cycle Time o tiempo en el que se tarda desde que se empieza una tarea hasta que finalmente se termina.

Una imagen vale más que mil palabras

Esta información podemos visualizarla de una forma más amigable, usaremos un gráfico de dispersión (Scatter plot). En el eje horizontal se muestra el devenir de la vida (el tiempo) y en el eje vertical el Cycle Time de todas las tareas:

Se han marcado diferentes percentiles teniendo en cuenta toda la información de lo que ha pasado en realidad: 95, 85, 50. ¿Porqué?

Los Percentiles

Una primera observación es que parece que hay más tareas por encima del percentil 50 que por debajo. Es decir, hay más tareas que tardan en cerrarse más de 10 días que menos. Por tanto, si nuestros sprints son de 2 semanas, es decir de 10 días, ¿tiene sentido ese tamaño de sprint?

Si en ese sprint decimos que vamos a hacer una tarea, da igual los puntos de historia que tenga, tenemos una probabilidad más alta de NO terminarla que de terminarla.

¿Qué acción podemos tomar? Subir el tamaño de los sprints a … 17 días que es lo que nos está indicando el percentil 85 sería una opción.

Con esto, dada cualquier tarea que añadamos al sprint, tendríamos un 85% de probabilidades de terminarla.

Esta decisión de incrementar el tamaño del sprint es cosa de cada uno, y para nada estoy sugiriendo que la regla sea: el tamaño del sprint debe estar en el percentil 85.  Un sprint de 17 días suena raro, muy raro.

Datos más datos

Una segunda observación es que hay dos puntos que están muy lejos del percentil 95. Podríamos decir que son “outliers” u “outsiders” y no hacerles mucho caso, pero eso es un error. Por muy alejados que estemos del percentil 95, esos puntos son hechos reales que han ocurrido con esas tareas. Y ya en los libros nos adelanta que las predicciones serán tan buenas como buenos sean los datos de los que partimos, si quitamos esos outsiders, quitamos bastante información.

¿Puedes imaginar una predicción meteorológica en la que no se tenga en cuenta el tiempo que hizo ayer? De hecho, es un ejemplo con el que parte el segundo libro, When Will It Be Done, y es que es necesario conocer toda la información anterior para poder hacer una predicción.

Pero una predicción no es lo que va a ocurrir, sino lo que va a ocurrir con cierta probabilidad.

Simulando que es gerundio

El libro no va sobre cómo hacer simulaciones, eso ya se estudia y ha demostrado su valía en la predicción meteorológica e incluso en los experimentos realizados en Los Alamos mientras se creaba la primera bomba nuclear. El sistema que se usa es “Simulación Monte Carlo” pero este humilde blog tampoco se va a centrar en cómo se hace, ya que lo que nos importa es la información que esas simulaciones nos van a proporcionar.

Para los datos del ejemplo, esta simulación, iterada 10.000 veces, para intentar predecir cuándo se terminarán 20 tareas más nos da el siguiente resultado:

  • Con un 50% de probabilidad, las 20 tareas estarán el 14 de Marzo de 2024
  • Con un 70% de probabilidad, las 20 tareas estarán el 2 de Abril del 2024
  • Con un 85% de probabilidad, las 20 tareas estarán el 21 de Abril del 2024
  • Con un 95% de probabilidad, las 20 tareas estarán el 16 de Mayo del 2024

Curiosidad

Fijaos que no hemos hablado de tamaño de tareas ni nada por el estilo; por tanto, da igual si están estimadas o no esas tareas, la realidad al final siempre se acaba imponiendo, y parece que no tiene sentido estimar las tareas, ojo, para un proyecto en marcha, con varios sprints a sus espaldas.

Aunque parezca mentira, no hace falta usar mucha información para empezar a hacer estas simulaciones, tendría que leer otra vez los libros, pero me resuena en la cabeza que con 11 mediciones de tareas que hayas realizado suele ser suficiente para empezar.

A medida que vayamos avanzando en nuestro proyecto, cerrando tareas, estas simulaciones deben ir rehaciéndose. Como la predicción del huracán que decía al principio, cada día que pasa hay que ir actualizando la predicción.

Ganando pasta

Haciendo de décimo hombre, y criticar por criticar, los libros parecen un panfleto publicitario de la herramienta que usan para hacer estos cálculos, que tenéis disponible en https://actionableagile.com/ (Las capturas de pantalla y las simulaciones que he hecho se han sacado de ahí con el plan free)

Los libros y este post son una lista de puntos de porqué debemos empezar a medir ese cycle time, hacer simulaciones y actuar en consecuencia con la información real que tenemos lo antes posible.

Espero que os sirva.

Videos de ASP.NET Web Forms y ASP.NET MVC

Hemos publicado recientemente unos cursos de principio a fin en el sitio http://asp.net

Creados por Pluralsight (una gran empresa de training .NET), estos video cursos están disponibles gratuítamente y ofrecen una forma genial de aprender (o de refrescar nuestro conocimiento) sobre ASP.NET Web Forms 4 y ASP.NET MVC 3. Cada curso loda un tutor, y ofrece un curriculum bastante interesante (desde los conceptos básicos hasta trabajar con Entity Framework code first pasando por seguridad, despliegue y testing). Continue reading “Videos de ASP.NET Web Forms y ASP.NET MVC”

VS 2010 SP1 y SQL CE

El mes pasado publicamos VS 2010 Service Pack 1(SP1) beta. Podéis aprender más de VS 2010 SP1 Beta de los dos post de Jason Zander, y del post de Scott Hanselman que cubre algunas de las nuevas capacidades que se le han añadido.

La semana pasada hablamos sobre el nuevo soporte de Visual Studio para IIS Express que hemos añadido en el SP1 de VS 2010. En el post de hoy vamos a ver las nuevas herramientas e VS 2010 SP1 para SQL CE, y veremos algunos escenarios de su aplicación. Continue reading “VS 2010 SP1 y SQL CE”

Anuncio de Entity Framework Code-First (CTP5 Release)

Esta semana el equipo de datos ha publicado la CTP5 de la nueva librería de Entity Framework Code-First. EF Code-First permite un flujo de desarrollo centrado en el código para trabajar con datos. Nos permite:

  • Desarrollar sin tener que abrir el diseñador para definir el archivo XML de mapeo.
  • Definir modelos de objetos escribiendo clases planas sin necesidad de tener clases base.
  • Usar una aproximación de “convención sobre configuración” que nos permite persistencia de datos sin tener que configurar nada.
  • Sobreescribir opcionalmente esa convención de persistencia y usar una API fluida para personalizar totalmente el mapeo de la persistencia. Continue reading “Anuncio de Entity Framework Code-First (CTP5 Release)”

Anuncio de ASP.NET MVC 3 Release Candidate

Hace unos días el equipo de ASP.NET  ha publicado ASP.NE T MVC 3 RC (Release Candidate). Podéis descargarla aquí.

ASP.NET MVC 3 es una release increible, incluye toneladas de nuevas funcionalidades y refinamientos. También mantiene compatibilidad hacia atrás con ASP.NET MVC V1 y V2 – lo que hace fácil actualizar aplicaciones existentes (leed las notas de la release para saber qué pasos hay que seguir). Podéis aprender más sobre algunas de las nuevas capacidades de ASP.NET MVC 3 en posts que he hecho anteriormente:

Introducción a IIS Express

Hoy en día los desarrolladores crean y testean aplicaciones ASP.NET usando uno de estos dos servidores web:

  • El servidor ASP.NET que viene integrado con Visual Studio
  • IIS Server que viene integrado con Windows.

Ambas opciones tienen sus pros y sus contras, y muchos desarrolladores de ASP.NET nos han dicho: “Me gustaría tener la facilidad de usar el servidor web de Visual Studio pero con la potencia de IIS”. Hoy me complace anunciar una nueva y gratuita opción que vamos a publicar -IIS Express- que combina las mejores características de las dos opciones anteriores, y que hace más sencillo crear y ejecutar aplicaciones ASP.NET

IIS Express estará disponible tanto para VS 2010 como para Visual Web Developer 2010 Express, funcionará en Windows XP y superiores, no requiere una cuenta de administrador, y no requiere ningun cambio de código para usarlo. Podremos ser capaces de usarlo con cualquier aplicacion ASP.NET, y podemos usar todas las c aracterísticas de IIS 7.x. Continue reading “Introducción a IIS Express”

ASP.NET MVC 2

[Además del blog, podéis seguir a Scott en twitter: witter.com/scottgu]

En los últimos seis meses, el equipo de ASP.NET ha lanzado previews, la beta y ahora la release candidate de ASP.NET MVC 2.

Dado que la release final no está muy lejos, creo que es un buen momento para comenzar una serie de post sobre ASP.NET MVC 2 en la que veremos las nuevas características y cómo aprovecharlas. Continue reading “ASP.NET MVC 2”

ASP.NET MVC Preview 4 (Parte 1)

El equipo de ASP.NET MVC está en la fase final de terminar la nueva Preview 4 que esperan publicar al final de esta semana. La Preview 3 se centró en finalizar un montón de trabajo en el núcleo de las apis y en puntos de extensibilidad en ASP.NET MVC. A partir de esta Preview 4 de esta semana empezarán a aparecer nuevas características de más alto nivel que se construirán encima del núcleo y añadirán una mayor productividad.

Hay un montón de nuevas características y capacidades en esta nueva build – tantas que en realidad necesito dos post para cubrirlas todas. En este primer post veremos el nuevo sistema de Caching, Gestión de Errores y Seguridad, así como algunas mejoras para realizar test. El próximo post versará sobre las nuevas características AJAX que se han añadido con esta release. Continue reading “ASP.NET MVC Preview 4 (Parte 1)”

Truco: Crear y usar controles Silverlight y WPF

Uno de los objetivos en el diseño de Silverlight y WPF era permitir a los desarrolladores encapsular la funcionalidad de la interfaz de usuario en controles reutilizables.

Podemos implementar controles personalizados derivando de una clase de control ya existente (tanto de la clase base Control como de TextBox, Button, etc). También podemos crear controles de usuario reutilizables – haciendo más sencillo el uso de los archivos XAML para crear la interfaz de usuario (y haciéndolo super fácil de crear). Continue reading “Truco: Crear y usar controles Silverlight y WPF”

Design a site like this with WordPress.com
Get started