jueves, 28 de enero de 2010

Scrum vs Kanban en Castellano

He tenido el privilegio y el honor de participar en el equipo de traducción/edición de este interesantísimo libro sobre ambas metodologías. Sus ventajas e inconvenientes.

Pero para una explicación más completa y entretenida, os remito al blog del coordinador Angel Medinilla.

Y para bajarlo directamente (ojo, pesa unos 74Mb).

Que lo disfrutéis!!

Kanban, Scrum, CMMI light.

“La vida te da sorpresas” decía Rubén Blades en su canción Pedro Navaja. Y llevando casi un mes mirando las paredes en mi antigua empresa, me llegó una oferta de trabajo tan interesante como crítica en su plazo de decisión. Como “las oportunidades solo se dan una vez” y “camarón que se duerme se lo lleva la corriente”, he cerrado una etapa de casi tres años en Alten, donde he realizado de todo tipo de labores. Y empiezo en mi nueva empresa –Quadramqs- como Jefe de Proyecto . NET. Bueno, más bien líder de equipo. Es decir, sigo picando código y además hago la documentación.

Lo bueno es que al ser una empresa joven tengo capacidad de decisión sobre la metodología a utilizar y un equipo de nóveles que me acompañan en el “hambre” por probar cosas nuevas.

En el primer aterrizaje, lo primero es “levantar” el servidor de base de datos y el servidor del repositorio de código/documentación. Es decir instalar un SQL2005 y un servidor TFS. Mientras espero que entre Sistemas y yo montemos el tinglado y quede accesible a todo el dominio – revienta todo cuando a la máquina de un tfs la metes en dominio – tengo que probar el conocimiento y velocidad del equipo que, además, está habituado a la metodología ASM (A Salto de Mata @Rodrigo del Corral)  y más bien llegan justos de conocimientos.

Para ello ataco dos vertientes diferentes de modo simultáneo:

1. Técnica:  Les pongo un ejercicio de construcción de una pequeña aplicación en donde, aumentando la complejidad poquito a poco, veo cuales son sus límites y sus conocimientos. Arquitectura de dos capas, datos y representación. Acceso a los datos por Linq to Entities. Pruebas unitarias para cada método. Cargas de datos con SqlAdapter. Y construcción manual de GridView.

2. Metodología: Con el objetivo final de utilizar SCRUM en el desarrollo del proyecto real, tengo que empezar con un tablero Kanban de tres columnas: ToDo, Doing(2), Done. Y, además, este tablero será virtual en Scrumy ya que aún no tenemos el tablero físico.

Insistiendo un poquito y revisando desde internet en casa o en la calle el tablero y comentándolo al llegar a la oficina, motivo para que lo mantengan actualizado, pero observo cierta tendencia a tenerlo en segundo plano. Más como un reporte qué como seguimiento del flujo de trabajo.

A los pocos días llega nuestra flamante pizarra y plasmamos el tablero con rotulador. Y entonces si que se convierte en un punto en donde sin tener que preguntarme, el propio equipo decide qué tarea hacer y cuando. Ha llegado el momento de darle una vuelta de tuerca a la metodología y les pido estimaciones.

Esto provoca en los noveles incomodidad ya que lo entienden como fiscalización. Pero después de dos o tres previsiones fallidas, pero cada vez más cercanas, se convierte en una motivación más y se les ve como empiezan a sentirse responsables de sus actuaciones. Se implican… :)

La próxima semana empezamos a trabajar en el proyecto real. Las tareas realizadas ahora, sin que ellos lo supieran, son exactamente las mismas que vamos a realizar para construir el primer módulo que nos va a llevar el primer sprint. Y el lunes conocerán que es un planning meeting, e intentaré ser disciplinado con las daily meeting.

Mientras, en mi lado de Gestor del proyecto. Tengo mil reuniones de toma de requisitos en donde lo de las “historias de usuario” es pura ciencia ficción. De todo lo leído he puesto en práctica el recorrerme todos los puestos de los usuarios reales de la aplicación y estar con ellos horas hablando, recabando sensaciones, mejoras y problemas. También realizo actas de reuniones tipo CMMI level2, y quiero realizar análisis funcionales de cada módulo a realizar ANTES de llegar al inicio del sprint, tanto como documentación para el cliente como para el Backlog Product.

Para dar una vuelta de tuerca a la visibilidad del proyecto, además de las entregas de cada iteración, pondremos el servidor de desarrollo accesible al cliente para que nos indique las desviaciones lo antes posible.

Jo!! Que gusto volver a estar en la brecha.

miércoles, 27 de enero de 2010

Linq to Entities. Alias de columnas para un DropDownMenu

Los cambios siempre estresan. Y el cambiar de un ADO.NET en T-SQL a Linq to Entities me está produciendo algún que otro ardor de estómago.

Es el caso en el que quiero mostrar el nombre y apellidos en un DropDownMenu de ASP.net. Y en mi antigua cadena SQL lo que hacia era:

"SELECT idPersona, idNombre + " " + idApellido1 + " " + idApellido2 AS Persona FROM Personas"

Pero ahora en LinQ es una de esas cosas que buscas y rebuscas por Google y nada. ¿Porqué? Porque es tan sencillo que es muy difícil encontrarlo:

var db = new PruebasModel.PruebasEntities();
var losVehiculos = db.Vehiculo;
var resultado = from vehiculo in losVehiculos
select new{vehiculo.idVehiculo, persona = vehiculo.matricula + " " + vehiculo.matricula};

Ya solo me queda meterlo como dataSource de mi combo y voala!!.
DropDownList1.DataSource = resultado;
DropDownList1.DataValueField = "idVehiculo";
DropDownList1.DataTextField = "persona";
DropDownList1.DataBind();

lunes, 11 de enero de 2010

¡El libro de TDD se ha publicado!

Carlos Ble, junto a un impresionante grupo de colaboradores, ha publicado el – posíblemente – primer libro de desarrollo TDD en el idioma de Cervantes.

Como soy un personaje rehacio a esta métodología (picar el test antes que el código) inmediatamente lo he leido de cabo a rabo. Y he de muy señalar que es un muy buen libro, a mi entender, por el excelente ejercicio práctico que se realiza de una super calculadora y en el que Carlos nos lleva de la mano  utilizando TDD.

Lo curioso es que, para mí, es una joya desde el punto de vista de la exquisitez de su pureza en la programación orientada a objetos siguiendo las recomendaciones SOLID y las buenas Prácticas. Provoca una apabullante sensación de calidad y de claridad tanto en la refactorización como en el análisis inmediato de qué y cómo hacer que el código sea límpio y eficiente.

Esta obra empuja al lector – apasionados del desarrollo – a mejorarse a sí mismo ante la constatación de lo mucho que  se puede seguir aprendiendo en esta profesión antes de poderse declarar medianamente satisfecho.

En resúmen, un libro para sentarse e ir practicando con detenimiento cada una de las piezas que lo componen y así asimilar los cuando y los porqué del diseño emergente que vá surgiendo. Hijo de los test y de las refactorizaciones.

A mí, ya me ha enseñado mucho.

Web del autor Carlos Ble

martes, 5 de enero de 2010

Aplicación Pomodoro en C# Mobile 6.5 – En pruebas funcionales

Bueno, aunque parezca mentira, por fin tengo la aplicación funcionando en beta. Desde que empecé este proyecto personal hasta el día de hoy, la refactorización ha sido completa tanto en arquitectura como en estructura. Y el funcionamiento va más allá de lo inicialmente pensado.

Ahora estoy en fase de probarla para encontrarle esos pequeños fallos que pueden deslucir todo el trabajo. Antes de meterme con el grafismo del interfaz (que eso tiene tela).

En cuanto la tenga un poquito pulida, la publico en CodePlex para que cualquiera pueda trastear o disfrutar de la aplicación.

VS2010 beta 2 y Vs2008 SP1

Llevo más de una semana jugando con sistemas instalando en máquinas virtuales VirtualPC y VMware servidores TFS sobre Windows2003, Windows2008, Sql2005,sql2008 y tfs2008 t tfs2010 beta 2.

Resumen, es una auténtica pasada de complicaciones!!

Cuando por fin consigo una máquina virtual VMware con windows2008, sql2008 y tfs2010 beta2… caigo en la importancia del Service Pack 1 para Visual Studio 2008. Pero, siguiendo la ley de Murphy, el VS2010beta2 de mi Windows7 host se vuelve loco y deja de funcionar.

Decido desinstalarlo y, ala, el SP1 también se desinstala… o sea que otra vez poniendo el el SP1 y pensándome seriamente rendirme, ya que ahora el vs20101 beta 2 me da un error en el almacenamiento de los ficheros temporales del instalador, y quedarme con la máquina virtual que ha avisado Luis Fraile y que solamente funciona en las máquinas virtuales de Redmon (en MVware dá un pantallazo azul).