<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>programania&#187; SCRUM</title>
	<atom:link href="http://www.programania.net/category/scrum/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.programania.net</link>
	<description>Ingeniería del Software</description>
	<lastBuildDate>Sat, 30 Jan 2010 08:03:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Gestión de riesgos ágil e Impediment Backlog</title>
		<link>http://www.programania.net/desarrollo-agil/gestion-de-riesgos-agil-e-impediment-backlog/</link>
		<comments>http://www.programania.net/desarrollo-agil/gestion-de-riesgos-agil-e-impediment-backlog/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 07:17:05 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
				<category><![CDATA[METODOLOGÍAS ÁGILES]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[WEBDEV]]></category>
		<category><![CDATA[gestión de proyectos]]></category>
		<category><![CDATA[gestión de riesgos]]></category>
		<category><![CDATA[impediment backlog]]></category>

		<guid isPermaLink="false">http://www.programania.net/?p=848</guid>
		<description><![CDATA[El impediment backlog para la gestión de riesgos en proyectos de software]]></description>
			<content:encoded><![CDATA[<p>Cuando escribí <a href="http://www.programania.net/desarrollo-agil/gestion-de-proyectos-objetivos/">un esquema sobre lo que supone la gestión de proyectos de software</a>, incluí la &#8220;Gestión de riesgos&#8221; como parte de la gestión tradicional de proyectos. Pero según voy investigando dentro de las metodologías ágiles no encuentro casi nada que hable explícitamente sobre cómo hacer ésta gestión de manera ágil.</p>
<p>Esto ocurre porque <a href="http://geeks.ms/blogs/rcorral/archive/2007/06/28/exprimiendo-scrum-scrum-y-la-gesti-243-n-del-riesgo.aspx">la gestión de riesgos en metodologías como SCRUM no se hace explícitamente, se hace de manera integrada en el propio proceso y, por lo tanto, de manera continua.</a></p>
<p>Quizá, la parte más explícita de la gestión de riesgos sea el <strong>Impediment Backlog</strong>. Un Impediment Backlog es una lista de incidencias que tienen que ser resueltas por el equipo y que el Scrum Master debe gestionar y asignar al alguien para que trabaje en ellas, y que será revisada en la reunión SCRUM diaria, tras la pregunta: ¿Qué está bloqueando el progreso del proyecto?</p>
<p>Creo que no vale la pena que explique nada más aquí porque, curiosamente, he encontrado <a href="http://geeks.ms/blogs/rcorral/archive/2007/06/28/exprimiendo-scrum-scrum-y-la-gesti-243-n-del-riesgo.aspx">el mejor artículo sobre el tema en castellano. Se trata de un análisis exhaustivo sobre los riesgos clásicos del desarrollo de software y cómo los afronta SCRUM</a>. Contentísimo de que la blogosfera de habla hispana de artículos de ésta calidad, oiga.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/desarrollo-agil/gestion-de-riesgos-agil-e-impediment-backlog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Patterns: the technical cluster</title>
		<link>http://www.programania.net/desarrollo-agil/agile-patterns-the-technical-cluster/</link>
		<comments>http://www.programania.net/desarrollo-agil/agile-patterns-the-technical-cluster/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 08:37:00 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
				<category><![CDATA[Integración continua]]></category>
		<category><![CDATA[METODOLOGÍAS ÁGILES]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[WEBDEV]]></category>
		<category><![CDATA[agile patterns]]></category>
		<category><![CDATA[business smells]]></category>
		<category><![CDATA[technical clusters]]></category>

		<guid isPermaLink="false">http://www.programania.net/?p=744</guid>
		<description><![CDATA[patrones ágiles de desarrollo de software]]></description>
			<content:encoded><![CDATA[<p>Os aconsejo leeros el libro <a href="http://www.infoq.com/minibooks/agile-patterns">Patterns of Agile Practice Adoption</a>. Se trata de un libro un tanto esquemático pero bastante exhaustivo que analiza las prácticas ágiles poniéndolas en forma de patrones (qué es, cuándo usarlo, qué implica, etc.). Ademas, explica bastante bien los objetivos de las prácticas ágiles, e introduce un concepto, los Business Smells (cómo detectar cuando algo va mal) muy interesante.</p>
<p>Además, describe cómo ir adoptando las prácticas ágiles de manera paulatina, en forma de iteraciones. Una lectura realmente interesante para todos aquellos que pretendemos ir introduciendo las prácticas ágiles en nuestro proceso de desarrollo.</p>
<p>Además, en la parte final de libro, agrupa las prácticas ágiles por Technical Clusters, esto es, conjuntos de prácticas analizadas en los capítulos anteriores.</p>
<p>Lectura fácil y clarificadora. ¡ya os la estáis bajando!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/desarrollo-agil/agile-patterns-the-technical-cluster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Está PHP preparado para la empresa?</title>
		<link>http://www.programania.net/desarrollo-agil/%c2%bfesta-php-preparado-para-la-empresa/</link>
		<comments>http://www.programania.net/desarrollo-agil/%c2%bfesta-php-preparado-para-la-empresa/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 07:13:51 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
				<category><![CDATA[DESARROLLO DE SOFTWARE]]></category>
		<category><![CDATA[DSL - Domain Specific Language]]></category>
		<category><![CDATA[Integración continua]]></category>
		<category><![CDATA[METODOLOGÍAS ÁGILES]]></category>
		<category><![CDATA[MVC - Model View Controller]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PRUEBAS FUNCIONALES]]></category>
		<category><![CDATA[PRUEBAS UNITARIAS]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[SELENIUM]]></category>
		<category><![CDATA[WEBDEV]]></category>
		<category><![CDATA[ZEND FRAMEWORK]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[e-learning]]></category>
		<category><![CDATA[mediawiki]]></category>
		<category><![CDATA[moodle]]></category>
		<category><![CDATA[phpundercontrol]]></category>
		<category><![CDATA[PHPUnit]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.programania.net/?p=683</guid>
		<description><![CDATA[PHP está preparado para la empresa]]></description>
			<content:encoded><![CDATA[<div>Leyendo el artículo de la <a href="http://www.infoq.com/articles/enterprise-php">infoQ sobre si PHP está preparado para la empresa</a>, me vienen varios pensamientos a la cabeza. En primer lugar, preguntarse si un lenguaje está &#8220;preparado para la empresa&#8221; me parece muy del mundo Java. A día de hoy no sé muy bien qué significa. Y, en segundo lugar, sigo en mis trece con <a href="http://www.programania.net/desarrollo-agil/tendencias-en-el-desarrollo-de-software-2009/">la &#8220;tendencia&#8221; que comenté en un artículo anterior: creo que los lenguajes de backend están perdiendo importancia</a>. Dicho esto, ¿está PHP preparado para la empresa? Descomponiendo ésta pregunta en subpreguntas:</div>
<div></div>
<div><strong>¿Permite PHP técnicas ágiles como pruebas unitarias, funcionales, integración contínua, etc?</strong></div>
<div>SI (phpunit, selenium, phpundercontrol, etc.)</div>
<div></div>
<div><strong>¿Permite PHP aplicar metodologías ágiles de gestión de proyectos como SCRUM, etc?</strong></div>
<div>Dado que esto no tiene que ver con el código&#8230; ¿Cómo no?</div>
<div></div>
<div><strong>¿Tiene PHP los suficientes mecanismos de POO, patrones y buenas prácticas?</strong></div>
<div>Zend Framework es una buena demostración de la posibilidad de escribir programas MVC, active record, con DSL´s, Conventions over Configurations, etc.</div>
<div></div>
<div><strong>¿Qué tal funciona PHP cuando hace falta alto rendimiento?</strong></div>
<div>Cuando se trata de aguantar a millones de usuarios, PHP no tiene competidor. Está demostrado que ofrece mayor rendimiento que Java y, por supuesto, que Ruby. Cuando la clave no está en tener muchos usuarios sino en tener complejas transacciones con bases de datos, normalmente se confía en Java (el rey del software bancario). <a href="http://www.oracle.com/technology/global/lad-es/tech/php/index.html">Por mucho que Oracle siga gritando que se puede utilizar perfectamente PHP para estos menesteres</a>.</div>
<div></div>
<div><strong>¿Ofrece algunas ventajas sobre los otros lenguajes?</strong></div>
<div>PHP es, sin duda, el rey del software libre. Y prueba de ello son desarrollos como Moodle, el rey del e-learning, MediaWiki, el rey de los wikis, Wordpress (nadie le iguala en plugins y themes, y es un potentísimo CMS) y es el lenguaje que permite tener un hosting más barato.</div>
<div></div>
<div><strong>Entonces, ¿es el mejor lenguaje, plataforma, y sólo deberíamos desarrollar en PHP?</strong></div>
<div>Pues no, claro. Si quieres hacer una aplicación no-web, en PHP lo tienes difícil (a menos de que sea con Flex). Aunque PHP permita montar un marco de desarrollo realmente profesional, no obliga y permite chapucear a base de bien, hay que tener más cuidado que en otros lenguajes, por ejemplo. Y es verdad que hasta ahora le faltaban mecanismos básicos de distribuión de código como PHAR o Namespaces.</div>
<div></div>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/desarrollo-agil/%c2%bfesta-php-preparado-para-la-empresa/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Desarrollo ágil con Kanban</title>
		<link>http://www.programania.net/desarrollo-agil/desarrollo-agil-con-kanban/</link>
		<comments>http://www.programania.net/desarrollo-agil/desarrollo-agil-con-kanban/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 07:21:42 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
				<category><![CDATA[METODOLOGÍAS ÁGILES]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[WEBDEV]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lean software development]]></category>

		<guid isPermaLink="false">http://www.programania.net/?p=821</guid>
		<description><![CDATA[Desarrollo de software utilizando la metodología Kanban]]></description>
			<content:encoded><![CDATA[<p>Otra opción a la hora de configurar nuestra forma de desarrollar software, es utilizar Kanban. Kanban es una metodología que viene de la filosofía Lean Software Development (que a su vez provienen del Lean Manufacturing).</p>
<p>Kanban comparte con otras metodologías como <a href="http://www.programania.net/desarrollo-agil/feature-driven-development/">Feature Driven Development</a> o <a href="http://www.programania.net/category/scrum/">SCRUM</a> la idea de crear un Backlog del producto que tenga una serie de items (user stories, features&#8230;) priorizados. Pero la principal diferencia con otras aproximaciones ágiles, es que <strong>en Kanban no existen las iteracione</strong><strong>s</strong>.</p>
<p>En su lugar, Kanban se centra en controlar el <strong>WIP (Work In Progress)</strong>. Esto es, cuando hay poco WIP, se añade el item más prioritario del Product Backlog, y se controla que nunca se supere una cierta cantidad de WIP.</p>
<p>Dadas sus características, no se adapta a un desarrollo basado en entregas, y actualmente se utiliza especialmente en entornos de mantenimiento (corrección de bugs, etc.).</p>
<p>Dejo a continuación <a href="http://blog.crisp.se/henrikkniberg/2009/06/26/1246053060000.html">un comic que he encontrado en éste artículo y que me ha parecido que explica Kanban con enorme claridad</a>.</p>
<p><img class="alignnone size-full wp-image-833" title="Kanban1.JPG" src="http://www.programania.net/wp-content/uploads/Kanban1.JPG.jpeg" alt="Kanban1.JPG" width="516" height="636" /></p>
<p><img class="alignnone size-full wp-image-834" title="Kanban2.JPG" src="http://www.programania.net/wp-content/uploads/Kanban2.JPG.jpeg" alt="Kanban2.JPG" width="519" height="630" /></p>
<p><img class="alignnone size-full wp-image-835" title="Kanban3.JPG" src="http://www.programania.net/wp-content/uploads/Kanban3.JPG.jpeg" alt="Kanban3.JPG" width="522" height="634" /></p>
<p><img class="alignnone size-full wp-image-836" title="Kanban4.JPG" src="http://www.programania.net/wp-content/uploads/Kanban4.JPG.jpeg" alt="Kanban4.JPG" width="516" height="652" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/desarrollo-agil/desarrollo-agil-con-kanban/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Feature Driven Development</title>
		<link>http://www.programania.net/desarrollo-agil/feature-driven-development/</link>
		<comments>http://www.programania.net/desarrollo-agil/feature-driven-development/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 06:48:58 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
				<category><![CDATA[METODOLOGÍAS ÁGILES]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[WEBDEV]]></category>
		<category><![CDATA[feature driven development]]></category>
		<category><![CDATA[model driven architecture]]></category>
		<category><![CDATA[model driven development]]></category>

		<guid isPermaLink="false">http://www.programania.net/?p=770</guid>
		<description><![CDATA[Características diferenciales de Feature Driven Development frente a otras metodologías ágiles como SCRUM]]></description>
			<content:encoded><![CDATA[<p>Poco a poco, tengo intención de ir haciendo un repaso por todas las metodologías ágiles de desarrollo. En éste caso, quiero hacer un breve análisis de Feature Driven Development (FDD). Básicamente sus principios <em>Build a Feature List</em>, <em>Plan By Feature</em>, <em>Design by Feature</em>, <em>Build By Feature</em> son muy parecidos a <a href="http://www.programania.net/desarrollo-agil/control-de-las-funcionalidades-de-un-producto-con-google-docs/">SCRUM y su Product e Iteration BAcklog</a>. ¿Cuales son las principales diferencias?</p>
<ol>
<li>Quizá la mayor diferencia aquí sea que la &#8220;feature&#8221; normalmente es un <em>grano más gordo</em> que las &#8220;user stories&#8221;.</li>
<li>Hace más hincapié, a nivel de escritura de código, en <strong>Model Driven Development</strong>: <em>Build an overall model</em>, aunque en el resto de metodologías también recomiendan basarse en un primer diseño simple.</li>
<li><em>Individual code ownership</em>, que contrasta con el <em>Colective Code Ownership</em> de Programación Extrema. Básicamente en FDD cada uno es responsable directo de código que escribe, o cuál es &#8220;menos ágil&#8221; que si todo el mundo es responsable de todo el código (Colective Code Ownership). Lo que pasa es que, para equipos grandes, FDD lo considera más eficaz.</li>
<li>Habla explícitamente del &#8220;<a href="http://www.programania.net/diseno-de-software/scm-software-configuration-management/">Configuration Management</a>&#8220;&#8230; aunque todas las metodlogías ágiles lo recomiendan implicitamente, FDD lo hace explícitamente, como parte esencial del desarrollo.</li>
</ol>
<p>Todas las metodologías ágiles siguen una serie de principios que hacen que se parezcan entre sí. FDD, concretamente, te ofrece unas cuantas claves respecto a la forma de organizar el equipo y la forma de programar el código, que la hacen especialmente viable para equipos de desarrollo grandes desarrollando software complejo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/desarrollo-agil/feature-driven-development/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Control de las funcionalidades de un producto con Google Docs</title>
		<link>http://www.programania.net/desarrollo-agil/control-de-las-funcionalidades-de-un-producto-con-google-docs/</link>
		<comments>http://www.programania.net/desarrollo-agil/control-de-las-funcionalidades-de-un-producto-con-google-docs/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 07:17:59 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
				<category><![CDATA[METODOLOGÍAS ÁGILES]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[WEBDEV]]></category>
		<category><![CDATA[gestión de proyectos]]></category>
		<category><![CDATA[google docs]]></category>
		<category><![CDATA[increment]]></category>
		<category><![CDATA[iteration backlog]]></category>
		<category><![CDATA[product backlog]]></category>

		<guid isPermaLink="false">http://www.programania.net/?p=664</guid>
		<description><![CDATA[Gestión funcional con google Docs]]></description>
			<content:encoded><![CDATA[<p>Animado por el artículo de Enrique sobre <a href="http://phpsenior.blogspot.com/2009/06/google-docs-para-gestionar-proyectos.html">el uso de Google Docs para la gestión funcional de un proyecto</a>, publico un artículo que llevaba tiempo pensando sobre cómo lo estoy haciendo yo ahora mismo. Obviamente, el sistema que os expongo está basado en SCRUM, aunque no me atrevería a decir que estoy &#8220;haciendo SCRUM&#8221; precisamente. Si los términos que utilizo en el artículo (Product Backog, Iteration Backlog, etc&#8230;) te son nuevos, <a href="http://www.navegapolis.net/content/view/694/">quizá te interese leerte éste estupendo libro de introducción a SCRUM</a>. La captura que muestro a continuación, como se puede ver claramente, es inventada.</p>
<p><a href="http://www.programania.net/wp-content/uploads/captura-backlog2.jpg"><img class="alignnone size-full wp-image-694" title="captura-backlog" src="http://www.programania.net/wp-content/uploads/captura-backlog2.jpg" alt="captura-backlog" width="580" height="353" /></a></p>
<p>La razón por la que utilizamos Google Docs y no la clásica pizarra de SCRUM es porque el equipo no se encuentra físicamente en el mismo sitio. Quizá en el futuro utilicemos herramientas más específicas para la gestión de las user stories, iteration backlog e increment &#8230; pero a día de hoy éste sistema nos está funcionando por lo sencillo y visual que es.</p>
<p>El <a href="http://www.programania.net/desarrollo-agil/gestion-de-proyectos-objetivos/">objetivo de la gestión es planificar, ejecutar y controlar</a>. Veamos a continuación cómo planificamos, ejecutamos y controlamos el valor funcional de la aplicación.</p>
<p>Algunos apuntes sobre la <strong>ejecución</strong>:</p>
<ul>
<li>El documento recoge tanto el Iteration Backlog como el Increment. Pero es un documento que sólo ve el equipo. El cliente puede ver el Product Backlog (que está en un documento a parte) y se le envía una versión &#8220;más redactada&#8221; del Increment.</li>
<li>Cada iteración está en una tabla. Las tablas se guardan todas en el mismo documento, de tal manera que si vamos bajando por el documento podremos ver el backlog de las anteriores iteraciones. Las iteraciones se nombran con el primer día que se ejecutan (Iteración 18-05-2009) . Suelen ser de dos semanas.</li>
<li>Todos los proyectos son gestionados desde el mismo Iteration Backlog.</li>
<li>Marcamos la prioridad de una funcionalidad dentro de una iteración con <strong>[1]</strong>,<strong>[2]</strong> y <strong>[3]</strong>.</li>
<li>Se puede saber en qué estado está una Iteración porque:
<ul>
<li>Si está a la izquierda y sólo pone la prioridad([1]), es que está <strong>sin empezar</strong>.</li>
<li>Si está a la izquierda pero pone la prioridad  y un dueño ([1][Luis]), es que <strong>está empezada</strong> y la está haciendo Luis.</li>
<li>Si está a la derecha, es que <strong>está terminada</strong>.</li>
</ul>
</li>
<li>En el incremento, además de los items terminados en la iteración, se añaden los unplanned items (<strong>[U]</strong>), defectos (<strong>[D]</strong>) y cuestiones técnicas abordadas (<strong>[T]</strong>). Supongo que para los defectos sería mucho mejor utilizar un Issue Tracker, pero normalmente los clientes suelen querer comunicarse solo por teléfono, y bastante cuesta ya hacerles escribir un mail&#8230; como para intentar que se peguen con un Issue Tracker&#8230;</li>
<li>Los <strong>defectos tienen siempre prioridad</strong> sobre el desarrollo de nuevas funcionalidades.</li>
<li>La <strong>trazabilidad</strong> del proyecto es enorme, no sólo porque así tenemos un histórico de todas las iteraciones, sino porque el Google Docs guarda versiones de cada cambio que se hace.. así que podríamos retrotraernos a cualquier situación pasada del documento.</li>
</ul>
<p>Forma de detectar cómo va la iteración (<strong>controlar</strong>):</p>
<ul>
<li>Si se están generando muchos Unplanned Items (<strong>[U]</strong>) es que algo se diseñó mal.</li>
<li>Si se están generando muchos Defectos (<strong>[D]</strong>) es que la aplicación no está suficientemente probada.</li>
<li>Si se están atacando funcionalidades de prioridad [2] sin haber terminado las de prioridad [1], o se están atacando funcionalidades sin haber corregido los Defectos, probablemente se esté programando en el orden incorrecto.</li>
<li>Otras cuestiones muy relacionadas con las funcionalidades, las iteraciones, sería el <strong>control de costes y plazos</strong>: lo voy a dejar fuera del artículo por no extenderme.</li>
</ul>
<p>Algunos apuntes sobre <strong>planificación</strong> de las funcionalidades que se incluyen en cada iteración. En cada iteración se meten una serie de funcionalidades de el/los Product Backlog. Esas funcionalides cumplen que:</p>
<ul>
<li>Es la mayor cantidad de funcionalidades que se pueden hacer en dos semanas.</li>
<li>Son las funcionalidades que más valor añaden a la aplicación.</li>
<li>Camino crítico: desarrollar esas funcionalidades ayudan a descubrir posibles nuevos requisitos de forma lo más temprana posible (aunque no sea la que más valor añade), eliminar incertidumbres y hacer pensar al cliente (feedback) en qué es lo que quiere realmente. Esto también puede incluir desarrollar funcionalidades que ayuden a descubrir el diseño técnico (orientación a objetos, patrones de diseño) de la aplicación.</li>
<li>La que el cliente exija (a veces no hay más remedio: hay que implementar funcionalidades que el cliente exija aunque se le argumente que no son las que más valor añaden o las que más ayudan a descubrir la forma exacta de la aplicación).</li>
<li>Se evita programar funcionalides que no puedan probarse o ponerse en producción cuanto antes. Ejemplo: &#8220;Informe anual de ventas&#8221;, implementar éste informe en la primera iteración del producto, cuando todavía la empresa no ha introducido ni una sola venta, hará que no pueda probarse correctamente y traerá problemas meses después.</li>
<li>Resolver defectos tiene más prioridad que desarrollar nuevas funcionalidades, aunque dependerá de la gravedad del defecto. Los defectos son difíciles de planificar porque no sabes ni cuando ni cómo saldrán.</li>
<li>Es importante saber dividir o juntar funcionalidades para poder adaptarlas al tamaño de la iteración. No sirve para nada hacer &#8220;Listar facturas&#8221;, si no tienes un &#8220;añadir facturas&#8221;. Deberán ir en la misma iteración. Quizá &#8220;buscar facturas&#8221; pueda ir en la siguiente iteración, pese a que todo ello fuera planificado originalmente como &#8220;gestionar facturas (listar, añadir, modificar, eliminar, buscar)&#8221;.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/desarrollo-agil/control-de-las-funcionalidades-de-un-producto-con-google-docs/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>¿Existe una metodología llamada Programación Extrema?</title>
		<link>http://www.programania.net/desarrollo-agil/%c2%bfexiste-una-metodologia-llamada-programacion-extrema/</link>
		<comments>http://www.programania.net/desarrollo-agil/%c2%bfexiste-una-metodologia-llamada-programacion-extrema/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 11:17:17 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
				<category><![CDATA[Integración continua]]></category>
		<category><![CDATA[METODOLOGÍAS ÁGILES]]></category>
		<category><![CDATA[PRUEBAS FUNCIONALES]]></category>
		<category><![CDATA[PRUEBAS UNITARIAS]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[TDD - Test Driven Development]]></category>
		<category><![CDATA[WEBDEV]]></category>
		<category><![CDATA[XP - Programacion Extrema]]></category>
		<category><![CDATA[extreme programming]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[test driven development]]></category>

		<guid isPermaLink="false">http://www.programania.net/?p=585</guid>
		<description><![CDATA[¿Es programación extrema, simplemente, una manera de llamar a hacer Test Driven Development e integración contínua?]]></description>
			<content:encoded><![CDATA[<p>Si visitamos <a href="http://www.extremeprogramming.org/">la página de Extreme Programming</a> vemos que hacer XP es combinar las siguientes prácticas:</p>
<ul>
<li><strong>Planning</strong>: user stories, release planning, small releases, project velocity, iterations, iteration planning, move people around, stand-up meetings</li>
<li><strong>Designing</strong>: simplificity, system metaphor, CRCcards, spike solutions, no funcionality added early and refactor.</li>
<li><strong>Testing</strong>: unit testing, acceptance test, etc.</li>
<li><strong>Coding</strong>: <a href="http://www.programania.net/category/integracion-continua/">integración continua</a> y TDD.</li>
</ul>
<p>Cualquiera de las metodologías ágiles puede cumplir la parte de planning, designing y testing. Es más, por seguir esos principios generales podrás decir que estás siguiendo una metodología ágil, pero nadie podrá adivinar cual exactamente. Como se explica en el <a href="http://www.navegapolis.net/content/view/832/58/">artículo más completo que yo he leído sobre todas los métodos ágiles</a> que hay, programación extrema sería una metodología <strong>más centrada en la solución técnica que en la gestión de proyectos</strong>. Por eso es tan fácil <a href="http://www.programania.net/desarrollo-agil/scrum-y-xp-desde-las-trincheras/">combinarla con metodologías más enfocadas a la gestión de proyectos como SCRUM</a>.</p>
<p>Respecto a la parte de coding, tenemos dos técnicas: Test Driven Development (TDD) e <a href="http://www.programania.net/category/integracion-continua/">Integración continua</a>.  Recordemos que hacer TDD es escribir las pruebas unitarias ANTES de escribir las clases que prueban. O sea que si utilizamos un servidor de integración continua y hacemos pruebas unitarias DESPUES de escribir las clases, no estaremos haciendo Programación Extrema.</p>
<p>El propio <strong>Ken Beck</strong>, en su libro <em>Extreme Programming Explained</em>, afirma que no hay en su metodología ninguna práctica revolucionaria, que sólo es la combinación de una serie de prácticas y su seguimiento de &#8220;manera extrema&#8221; (muy estricta).</p>
<p>Me queda la sensación de que &#8220;Programación extrema&#8221; <strong>fue una manera de llamar originariamente que a día de hoy está obsoleta</strong> y que se ha dividido en :</p>
<ol>
<li>las &#8220;prácticas ágiles básicas&#8221; (iterativo, incremental, fortalecer la comunicación directa, pruebas unitarias, funcionales, etc.)</li>
<li>integración contínua</li>
<li>TDD</li>
</ol>
<p>Si sigues los puntos 1 y 2, y haces pruebas unitarias después de escribir la clase, puedes estar siguiendo casi cualquier metodología ágil. Y si haces el punto 3, estarás haciendo Test Driven Development, que queda mucho más claro que decir &#8220;Programación extrema&#8221;.</p>
<p>¿Qué opináis vosotros? ¿Tiene cabida el término Programación Extrema?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/desarrollo-agil/%c2%bfexiste-una-metodologia-llamada-programacion-extrema/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>¿Está UML muerto? ¿y RUP? Pequeña encuesta</title>
		<link>http://www.programania.net/desarrollo-agil/%c2%bfesta-uml-muerto-%c2%bfy-rup-pequena-encuesta/</link>
		<comments>http://www.programania.net/desarrollo-agil/%c2%bfesta-uml-muerto-%c2%bfy-rup-pequena-encuesta/#comments</comments>
		<pubDate>Wed, 27 May 2009 07:04:48 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
				<category><![CDATA[METODOLOGÍAS ÁGILES]]></category>
		<category><![CDATA[PROGRAMACION]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[UML - Unified Modeling Language]]></category>
		<category><![CDATA[WEBDEV]]></category>
		<category><![CDATA[orientada a objetos]]></category>
		<category><![CDATA[reverse engineering]]></category>
		<category><![CDATA[RUP]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://www.programania.net/?p=483</guid>
		<description><![CDATA[¿Está UML muerto? ¿y RUP? Pequeña encuesta.]]></description>
			<content:encoded><![CDATA[<p>Cuando estudié UML en la universidad parecía la panacea. Un salto cualitativo en el desarrollo de software que iba a dejar a la programación clásica a la altura del betún. Sin embargo, rara es la vez que lo utilizo, <a href="http://www.martinfowler.com/bliki/UmlAsSketch.html">aunque sea para hacer algunos esquemas</a>. UML prometía varias cosas:</p>
<ul>
<li>Convertirse en un lenguaje común por el que pasar especificaciones de programas entre programadores.</li>
<li>A partir de los diagramas generados, &#8220;pulsar un botón&#8221; y generar el código de tu aplicación.</li>
<li>A partir del código, &#8220;pulsar un botón&#8221; y generar la documentación de tu aplicación en UML.</li>
</ul>
<p>Sin embargo, por mucho que indago me quedan las siguientes sensaciones:</p>
<ul>
<li>No existen herramientas eficaces que permitan generar código útil a partir de diagramas.</li>
<li>Las que existen, se centran en el Modelo de dominio (que no es poco), pero desde luego no hay nada que coja un caso de uso, y lo convierta en código&#8230;.</li>
<li>Especificar lo suficiente un diagrama UML para poder generar código medianamente definido es un infierno. Da la sensación de que se tarda menos en programarlo.</li>
<li>El UML puede servir para transmitir ideas informales entre programadores (esquemas rápidos) pero nunca servirán para transmitir esas ideas a un cliente profano en el tema. Y como la documentación para el cliente es totalmente inevitable, vale más la pena que los programadores se entiendan leyendo la documentación que también es para el cliente (SCRUM y su Product Backlog, por ejemplo).</li>
<li>¿Por qué a la gente le gusta tan poco codificar y tanto hacer dibujitos?</li>
</ul>
<p>Y, por último, una serie de preguntas, a ver quién me arroja algo de luz:</p>
<ul>
<li>¿En qué escenarios utilizáis UML? ¿Utilizáis UML?</li>
<li>¿Es un UML totalmente especificado o sólo un esquema?</li>
<li>¿Utilizáis alguna herramienta que genere código a partir de UML?</li>
<li>¿Y alguna de reverse engineering que a partir del código genere documentación?</li>
<li>¿Alguien utiliza RUP (Rationa Unified Process), que supuestamente es la metodología alrededor del UML, junto con UML?</li>
<li>¿Alguien combina UML con alguna metodología ágil como SCRUM? ¿Se puede ser ágil diagramando con UML?</li>
</ul>
<p>Gracias adelantadas a el lector que se anime a comentar un poco el tema&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/desarrollo-agil/%c2%bfesta-uml-muerto-%c2%bfy-rup-pequena-encuesta/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>SCRUM para un equipo en MÚLTIPLES proyectos</title>
		<link>http://www.programania.net/desarrollo-agil/scrum-para-un-equipo-en-multiples-proyectos/</link>
		<comments>http://www.programania.net/desarrollo-agil/scrum-para-un-equipo-en-multiples-proyectos/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 11:43:06 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
				<category><![CDATA[METODOLOGÍAS ÁGILES]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[WEBDEV]]></category>

		<guid isPermaLink="false">http://www.programania.net/?p=395</guid>
		<description><![CDATA[multiples proyectos con scrum]]></description>
			<content:encoded><![CDATA[<p>No puedo decir que en mi empresa utilicemos SCRUM para desarrollar software. Pero sí que nos inspiramos en él para hacerlo (y que vamos adoptando &#8220;costumbres&#8221; de SCRUM y pensamos seguir haciéndolo, poquito a poquito). Uno de nuestros principales problemas a la hora de hacer SCRUM es que éste plantea un escenario de varias personas (equipo) en un sólo proyecto. Sin embargo, normalmente en nuestro caso ocurre lo contrario: una persona, varios proyectos.</p>
<p>He encontrado pocos artículos que comenten ésta situación. El más interesante es <a href="http://geekswithblogs.net/geekusconlivus/archive/2007/10/08/115935.aspx">éste</a>.</p>
<p>¿Alguna experiencia con éste escenario? ¿Cómo lo solucionáis?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/desarrollo-agil/scrum-para-un-equipo-en-multiples-proyectos/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>SCRUM y XP &#8216;desde las trincheras&#8217;</title>
		<link>http://www.programania.net/desarrollo-agil/scrum-y-xp-desde-las-trincheras/</link>
		<comments>http://www.programania.net/desarrollo-agil/scrum-y-xp-desde-las-trincheras/#comments</comments>
		<pubDate>Mon, 11 Dec 2006 17:50:47 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
				<category><![CDATA[DESARROLLO DE SOFTWARE]]></category>
		<category><![CDATA[METODOLOGÍAS ÁGILES]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[XP - Programacion Extrema]]></category>

		<guid isPermaLink="false">http://www.programania.net/desarrollo-agil/scrum-y-xp-desde-las-trincheras/</guid>
		<description><![CDATA[SCRUM y programación extrema: un caso real]]></description>
			<content:encoded><![CDATA[<p>Acabo de terminar de leer &#8220;SCRUM and XP from the trenches&#8221; el interesante documento publicado por una empresa que desarrolla software siguiendo las <a href="http://www.programania.net/category/desarrollo-agil/" title="metodologías ágiles de desarrollo de software">metodologías ágiles</a> SCRUM y programación extrema. Lo más interesante, como describe el propio autor, es que el documento no habla de prácticas teóricas o de lo que &#8220;debería hacerse&#8221; sino que se trata de la descripción de lo que ellos realmente hacen: fases, documentos, filosofía, etc.</p>
<p>Si os preguntáis cómo puede utilizar las dos metodologías a la vez, como el mismo dice: <em>&#8220;Scrum focuses on management and organization practices while XP focuses mostly on actual programming practices. &#8220;</em></p>
<p><a href="http://www.programania.net/wp-content/uploads/ScrumAndXpFromTheTrenches.pdf" title="SCRUM y programación extrema">Descargar el documento</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/desarrollo-agil/scrum-y-xp-desde-las-trincheras/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
