Scrum, gestión ágil de proyectos / agile project management

Scrum es una metodología de desarrollo ágil basado en procesos iterativos e incrementales. El desarrollo parte de una idea general de lo que se requiere construir, elaborando un listado de características ordenadas por prioridad (product backlog) que el propietario del producto desea obtener. El product backlog será un documento en constante actualización y al cual podrán acceder todos los interesados.

A partir de aquí se efectuará una reunión para la planificación del primer sprint (la primera iteración), en la cual se generará una lista de tareas (sprint backlog) con asignaciones de personas y una estimación de tiempo y recursos. Adicionalmente se establecerá el objetivo del sprint (necesidad del negocio a cubrir).

El sprint (iteracción) dará como resultado una primera versión parcial del producto (resultado incremental). Cabe destacar que, en cada proyecto se debe definir una duración fija de los sprints, siendo recomendable que se encuentre entre los 15 y 60 días.

Durante el sprint, se realizará una reunión diaria (15 minutos máximo) donde cada componente del equipo da respuesta a los siguientes aspectos:

  • Trabajo realizado desde la reunión de seguimiento anterior.
  • Trabajo a realizar hasta la próxima reunión.
  • Limitaciones reales o potenciales que puedan impedir la ejecución del trabajo.

Al finalizar el sprint se realiza una revisión, donde se evalúa el mismo y se presentan los resultados obtenidos.

De esta forma habrá concluido el primer sprint y se podrá dar lugar a una nueva iteración, volviendo a efectuar una reunión de planificación del nuevo sprint.
Continue reading Scrum, gestión ágil de proyectos / agile project management →

Metodologías ágiles de gestión de proyectos (Scrum, DSDM, Extreme Programming – XP…)

Tradicionalmente las metodologías de gestión de proyectos como PMBOK y PRINCE2 han tenido una fuerte orientación predictiva. Es decir, a partir del detalle del producto que se quiere elaborar (análisis funcional/técnico, requerimientos funcionales/técnicos, etc.), se definen fases/actividades perfectamente planificadas en el tiempo en base a los recursos disponibles. A partir de esta proyección inicial, el objetivo durante el transcurso del proyecto es conseguir que se cumpla aquello que se había previsto: calendario, costes y calidad.

Este tipo de metodologías ha resultado ser útil, mejorando la calidad y reduciendo las desviaciones en los proyectos que son aplicadas. No obstante, pueden presentar determinados inconvenientes:

  • El jefe de proyecto puede no tener conocimientos técnicos y dedicarse exclusivamente al control siguiendo los procedimientos establecidos y limitándose a la generación de informes, actas, diagramas de Gantt, WBS, etc… herramientas que facilitan la gestión pero que no forman parte del objetivo del proyecto. Un jefe de proyecto con estas características no podrá participar activamente en la toma de decisiones técnicas.
  • En proyectos largos, ceñirse a un plan estático puede provocar que el producto final ya no se cubra la totalidad de las necesidades del cliente dado que estas han cambiado desde el inicio. Por tanto, durante el propio desarrollo del producto, es posible que se deban ampliar las características diseñadas inicialmente con tal de que no sea obsoleto antes de su salida al mercado.
  • Incertidumbre: vivimos en un entorno rápido e inestable, donde cumplir el plan inicial no garantiza el éxito. La idea de “producto terminado” puede perder su sentido en determinados sectores (p.ej. software), dado que el producto siempre está en evolución. La capacidad de adaptación a partir de la retroalimentación e incorporación de nuevas ideas es fundamental.

En definitiva, la creación de valor mediante la adaptación a las necesidades cambiantes aparece en un primer plano frente a la tradicional idea de diseñar un plan y cumplir unos calendarios/requerimientos estáticos.

Los proyectos gestionados con metodologías ágiles se inician sin un detalle cerrado de lo que va a ser construido. A nivel comercial, los proyectos pueden ser vendidos como servicios y no como productos.
Continue reading Metodologías ágiles de gestión de proyectos (Scrum, DSDM, Extreme Programming – XP…) →

Intel Wireless (iwl4965 o iwl3945) en Ubuntu Hardy

En una de las últimas actualizaciones de Ubuntu me dejó de funcionar el Wireless. Después de varias búsquedas he encontrado la solución en la descripción del bug en launchpad:

sudo aptitude install linux-backports-modules-hardy
sudo rmmod iwl3945; sudo modprobe iwl3945

En caso de que la tarjeta funcione con el driver iwl4965 en lugar del iwl3945, simplemente hay que cambiar uno por el otro en el último comando.

Este tipo de fallos son los que pueden resultar tan molestos que alejen a nuevos usuarios de Linux, sobretodo a aquellos que no tienen tiempo/ganas para “investigar” el motivo e intentar arreglarlo.

Otro ejemplo sencillo: tengo 2 portátiles, en la versión anterior de Ubuntu (7.10) las X.org me funcionaban a la primera en uno y no en el otro… en la versión actual (8.04) la situación se ha invertido 🙁

PRINCE2 como complemento a PMBOK para la gestión de proyectos (project management)

PRINCE2 (“PRojects IN Controlled Environments”) es una metodología de gestión de proyecto desarrollada inicialmente por el Central Computer and Telecommunications Agency (CCTA) del gobierno de Reino Unido y que actualmente también es usado en organizaciones privadas.

PRINCE2 se basa en los mismos principios que PMBOK y amplia los conceptos que este presenta, proporcionando técnicas complementarias para reducir el riesgo e incrementar la calidad en los proyectos de la forma más efectiva. No obstante, PRINCE2 deja fuera de su alcance aspectos que si cubre PMBOK, como por ejemplo:

  • Gestión de personas: motivación, lideraje y delegación
  • Técnicas de planificación genéricas como Critical path y Gantt Charts
  • Técnicas de gestión del riesgo
  • Técnicas de análisis financiero o presupuestario

Continue reading PRINCE2 como complemento a PMBOK para la gestión de proyectos (project management) →

PMBOK, Project Management / Gestión de proyectos

El Project Management Institute (PMI) es una organización que intenta establecer un orden y unos criterios estándares para la gestión de proyectos. Con esa finalidad, PMI mantiene el libro Project Management Book of Knowledge (PMBOK) donde se establecen todo un conjunto de herramientas y buenas prácticas que todo jefe de proyecto debe conocer y aplicar.

En contraposición a otras metodologías (p.ej. las metodologías ágiles como Scrum), PMBOK se encuentra orientado a una gestión predictiva de los proyectos. PMBOK presenta diversas fases de un proyecto de forma lineal (una vez superada una fase, no se volverá a ella), donde la necesidad/solución, el alcance y la planificación (p.ej. coste y duración de cada una de las tareas a realizar) se establece en las fases iniciales (de ahí que sea denominada gestión predictiva).

Por tanto, podríamos considerar PMBOK como perteneciente a la rama más clásica de la gestión de proyectos (al igual que el estándar complementario PRINCE2, popular en UK). No obstante, este hecho no implica que parte de las herramientas que ofrece no puedan ser utilizadas en combinación con otras metodologías más ágiles y flexibles.

Continue reading PMBOK, Project Management / Gestión de proyectos →

Comparativa de sistemas de control versión distribuidos

Siguiendo la temática de los últimos artículos sobre Bzr, Git y Trac… he encontrado una comparativa exhaustiva que vale la pena leer (aunque sea en diagonal): Distributed Version Control Systems: A Not-So-Quick Guide Through.

En resumen, viene a indicar que Git es el sistema más eficiente en términos de espacio y CPU, además del favorito de los programadores C / Linux / Ruby / Rails. Por otra parte, Mercurial queda en un segundo lugar y es preferido por programadores Java / Sun y finalmente tenemos Bazaar, favorito para los desarrolladores de Ubuntu (launchpad soporta Bzr).

Trac, gestión documental e incidencias/mejoras con repositorio Git

Trac es un sistema de gestión documental (wiki), incidencias/mejoras (issue tracking system) para proyecto de desarrollo de Software.

Actualmente, en su especialidad es uno de los sistemas más utilizados. La versión original se encuentra diseñada para ser integrada con repositorios de control de versiones Subversion, pero existen diversos plugins que nos permiten utilizar otros backends… como por ejemplo Git.

Veamos como podemos instalar y poner en marcha el sistema Trac con un repositorio Git…
Continue reading Trac, gestión documental e incidencias/mejoras con repositorio Git →

Tailor: conversion de repositorios CVS, Subversion, Git, Bzr…

Tailor es una herramienta que nos permite convertir repositorios de control de versiones de forma que si tenemos un proyecto que ha sido mantenido con un repositorio Subversion, podemos migrarlo a un repositorio Git para así cambiar el sistema de control de versiones.

En mi caso lo he utilizado para migrar un proyecto que gestionaba mediante Bazaar-NG (bzr) a Git. Para ello, tenemos que crear un fichero ‘tailor.conf’ donde indicaremos la ubicación del repositorio original y el destino:

[DEFAULT]
verbose = True
patch-name-format = “”

[project]
source = bzr:source
target = git:target
start-revision = INITIAL
root-directory = /home/usuario/repo-git/
state-file = tailor.state

[bzr:source]
repository = /home/usuario/repo-bzr/


[git:target]
git-command=/usr/bin/git

Y a continuación ejecutamos ‘tailor –config tailor.conf’. En mi caso la transformación ha sido exitosa, pero en caso de que encontréis alguna carencia… existen multitud de herramientas alternativas.