<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Andoni Arroyo : Metodolog&amp;#237;a</title><link>http://geeks.ms/blogs/aarroyo/archive/tags/Metodolog_26002300_237_3B00_a/default.aspx</link><description>Etiquetas: Metodolog&amp;#237;a</description><dc:language /><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>“scrum” con minúsculas</title><link>http://geeks.ms/blogs/aarroyo/archive/2010/10/28/scrum-con-min-250-sculas.aspx</link><pubDate>Thu, 28 Oct 2010 06:00:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:184010</guid><dc:creator>Andoni Arroyo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/aarroyo/rsscomments.aspx?PostID=184010</wfw:commentRss><comments>http://geeks.ms/blogs/aarroyo/archive/2010/10/28/scrum-con-min-250-sculas.aspx#comments</comments><description>&lt;p&gt;Es muy interesante observar como ciertos paradigmas van calando en la comunidad de desarrollo. Raro es ver hoy en día alguien que no defienda un modelo ágil de trabajo, puesto que sus virtudes son evidentes. &lt;/p&gt;  &lt;p&gt;Como siempre ocurre, sabemos donde queremos ir, pero en ocasiones el camino no es lo suficientemente claro para avanzar sin dudas. Muchos son los que se pierden por diversos motivos echando a andar sin tener correctamente interiorizados los principales valores innegociables. Una vez conseguidos los mismos, lo demás vendrá solo.&lt;/p&gt;  &lt;p&gt;Te puedes quedar, como dice un amigo, “Buscando por donde le entra el agua al coco…”&lt;/p&gt;  &lt;p&gt;Si no afrontamos la adopción de una nueva metodología con la importancia que se merece, podemos cometer algunos errores que nos condenen al fracaso, y esto de verdad que minará la posibilidad de mejora para una larga temporada…   &lt;br /&gt;    &lt;br /&gt;Algunos de los errores más comunes que nos pueden llevar a tener un SCRUM sesgado y poco efectivo pueden ser:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;No integrar los hitos heredados en la planificación del Backlog       &lt;br /&gt;&lt;/strong&gt;Las empresas (aunque sea a golpe de ASM) hacen cosas en el día y a día. Asumen compromisos que deben cumplir. Un cambio en la metodología es una evolución, no una revolución. Deben contemplarse los hitos anteriores y encajarse en el nuevo modelo de manera natural. De nada (positivo) vale crear un sprint si el día 1 del siguiente mes debemos entregar la “master” y ese trabajo no se contempla en la planificación de Backlog.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Jugar con dos barajas con las prioridades       &lt;br /&gt;&lt;/strong&gt;Las prioridades y urgencias son las mismas con y sin SCRUM. La nueva metodología no va a solventarnos por arte de magia los problemas, solo nos va a dar unas reglas para afrontarlos. De nada vale planificar algo para saltarlo, haciéndonos trampas al solitario y andar como pollo sin cabeza apagando fuegos.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Asumir de manera parcial o sesgada las reglas del juego       &lt;br /&gt;&lt;/strong&gt;Una de las ventajas que tiene SCRUM frente a otras metodologías más predictivas, es su sencillez y empatía con el desarrollador. Estos al fin y al cabo son el motor de cualquier empresa de desarrollo de Software y colocarlos en el centro del tablero es una de los principales aciertos. Eso si, si te decantas por SCRUM implanta al menos las pocas reglas en conjunto para que la mecánica tenga sentido.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Presencia de roles satélites o heredados       &lt;br /&gt;&lt;/strong&gt;Al ganar visibilidad inevitablemente afloraran roles a los que se les verá el cartón. Quedará patente lo poco que aportan a día de hoy y serán grandes enemigos del cambio. Supervivientes hay en todos los sitios y tirar de la manta no les va a hacer ninguna gracia. Debemos identificarlos y recolocarlos si es posible puesto que pueden hacer mucho ruido en contra y comprometer la estabilidad. Siempre es más fácil deshacer que hacer.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Permitir implantar la metodología sin conciencia Top-Down       &lt;br /&gt;&lt;/strong&gt;Asumir una metodología (más siendo ágil) es un cambio profundo para una empresa. Afecta a todos los estratos de la misma y solo triunfará si se asume una conciencia global de la necesidad e implicación necesaria para el éxito. O jugamos todos o rompemos la baraja y no vale ir de farol ;)      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Establecer un ámbito de actuación de la metodología reducido o para partes de los equipos       &lt;br /&gt;&lt;/strong&gt;Todo lo que ganemos en agilidad, es un éxito, pero los avances se multiplican y crean sinergias muy positivas cuanto mayor es el dominio se implantación de la misma. Asumirla en equipo muy estancos obliga a realizar un esfuerzo titánico por parte de unos pocos y no fomenta el ROI de las inversiones.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Impedimentos de Hardware, limitación de inversiones       &lt;br /&gt;&lt;/strong&gt;las herramientas no son parte de la metodología en si misma, sino la forma de implementar la misma. Olvídate de reinventar la rueda, existen herramientas muy poderosas que te permitirán a un coste asumible ser muy productivo. Con la aparición del Cloud Computing dichos costes pueden ser todavía más elásticos permitiendo a pymes y empresas con pocos recursos contar con las mismas herramientas que antes solo estaban al alcance de las grandes. SAAS de TFS es un buen ejemplo de este escenario.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Intentar implantar todas las best-practices a la vez       &lt;br /&gt;&lt;/strong&gt;Es mucha la gente que piensa que un conjunto de best-practices relacionadas con el mundo del desarrollo del Software son parte de SCRUM. Esto no es así. Está claro que cuanto mejor desarrollemos, mayor ventaja competitiva tendremos. Esto es independiente de la metodología que empleemos. Tanto en CMMI , RUP o MSF realizar pruebas unitarias, builds automatizadas, patrones de diseño…son prácticas muy valoradas. Es verdad que en aspectos ágiles todavía son más relevantes puesto que el intervalo de entrega se acorta (valor solo entendido como Software potencialmente entregable) pero esto es la guinda del pastel.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Falta de paciencia y fe en los resultados       &lt;br /&gt;&lt;/strong&gt;Como ya hemos comentado, no existe una varita mágica que nos resuelva los problemas. Solo con trabajo y esfuerzo llegarán los frutos. Es un proceso continuo, sin un fin definido. Siempre podremos ir mejorando y adaptándonos a las nuevas realidades que surjan por el camino. Si te decides a implantar SCRUM no esperes que al terminar el primer Sprint tu empresa se otra. Valora si es un poco mejor de lo que lo era antes. Evalúa la tendencia, no (solo) la foto y por supuesto, replantearte continuamente los procesos, identifica las acciones en cascada y disuélvelas con una integración más orgánica.      &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Estos son algunos de los puntos sobre los cuales debemos poner el foco a la hora de intentar implementar cualquier metodología en una empresa. Aunque son problemas comunes se acentúa aún más cuando deseamos trabajar con metodologías ágiles.    &lt;br /&gt;    &lt;br /&gt;Por cierto, la palabra ágil no está empleada por que sí. Para que el conjunto sea ágil todos los componentes del mismo deben serlo. Esta necesidad nos obliga a identificar los puntos que no lo son y tratarlos como impedimentos (teoría de los cuellos de botella). Este proceso de mejora continua es el que nos permite adquirir agilidad puesto que los valores absolutos no tienen cabida en este marco.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=184010" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Metodolog_26002300_237_3B00_a/default.aspx">Metodolog&amp;#237;a</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Pruebas+unitarias/default.aspx">Pruebas unitarias</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/SCRUM/default.aspx">SCRUM</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/test/default.aspx">test</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/TFS/default.aspx">TFS</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Coud+computing/default.aspx">Coud computing</category></item><item><title>SOA != Client Server + WCF</title><link>http://geeks.ms/blogs/aarroyo/archive/2010/07/26/soa-client-server-wcf.aspx</link><pubDate>Mon, 26 Jul 2010 05:30:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:179816</guid><dc:creator>Andoni Arroyo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/aarroyo/rsscomments.aspx?PostID=179816</wfw:commentRss><comments>http://geeks.ms/blogs/aarroyo/archive/2010/07/26/soa-client-server-wcf.aspx#comments</comments><description>&lt;p&gt;El panorama actual en el mundo de desarrollo del software nos brinda más oportunidades de las que nunca habíamos tenido (quizás ni siquiera imaginado). Entre otros escenarios, la aparición de Internet ha propiciado el crecimiento de los sistema distribuidos, la orientación a servicios, el SaaS... &lt;/p&gt;  &lt;p&gt;Este nuevo &amp;quot;el dorado&amp;quot; plantea características donde todas las empresas desean desembarcar sus activos. Por supuesto estos destinos son tan interesantes que muchos deciden tomar atajos para llegar a lo que creen el mismo destino, pero cuidado,   &lt;br /&gt;que como siempre, no es oro todo lo que reluce. &lt;/p&gt;  &lt;p&gt;La formula del título viene a decir eso, se podría leer como:    &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;&lt;em&gt;SOA != Client Server + WCF&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;No es lo mismo desarrollar Software orientado a servicio que colocar una capa de WCF en una aplicación Cliente Servidor. Definitivamente NO ES LO MISMO... &lt;/p&gt;  &lt;p&gt;Pero como ya sabemos las cosas no cambian solas, debemos como desarrolladores hacer un esfuerzo por ser conscientes de las nuevas reglas de juego con las que deseamos que nuestras aplicaciones den la talla. &lt;/p&gt;  &lt;p&gt;Revisando mi experiencia el respecto podemos identificar los errores más comunes a la hora de crear Software orientadas a servicios: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Los servicios (aunque no te lo creas) no están (solo) para ti.&lt;/strong&gt;      &lt;br /&gt;Utiliza los recursos del servicio de manera razonable, piensa bien como y cuando realizar las llamadas evitando acaparar los recursos disponibles.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Al consumir otros servicios estas realizando una llamada remota, eres consciente?&lt;/strong&gt;       &lt;br /&gt;No hagas 17 peticiones con sus 17 serializaciones para pintar una pantalla. No me digas que son las clases que usas como DTO y que te van para el pelo para tu ORM...      &lt;br /&gt;Todo el tiempo invertido en optimizar la comunicación tendrá un alto ROI, te lo aseguro.      &lt;br /&gt;Por supuesto recibir 26 millones de objetos (bien serializados) es un problema a nivel de diseño de la aplicación. (consolida la información, pagina, trabaja por bloques pero no tires por ese camino bajo ningún concepto...)       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Siempre piensa en que la disponibilidad nunca es del 100%&lt;/strong&gt;      &lt;br /&gt;Eso es así aunque algún comercial se empeñe en decir lo contrario.      &lt;br /&gt;Pregúntate que ocurre si el servicio no está disponible y dota a tu aplicación de la inteligencia necesaria para responder ante tal situación de manera digna. Siempre es interesante valorar la posibilidad de realizar las comunicaciones de manera asíncrona.      &lt;br /&gt;Ten en cuenta que no debes lanzar procesos que comprometan la estabilidad de los servicios, puesto que estos deben estar disponibles para los demás clientes.      &lt;br /&gt;(Recuerda que trabajar por bloques &amp;quot;casi nunca&amp;quot; es opcional y con determinado volumen de datos es obligatorio)      &lt;br /&gt;Piensa en la Alta disponibilidad, como hacer correr varias instancias en paralelo, clúster activo-pasivo antes de que te pille el toro...      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Diseña un plan de contingencia y déjalo por escrito        &lt;br /&gt;&lt;/strong&gt;Si no quieres que la gente que mantiene la aplicación te llamen a las 3:00 de la madrugada por que se ha parado el servicio, dales los mecanismos oportunos para que operen con autonomía. Ten un poco de empatía y piensa que ellos no pueden controlar todas las aplicaciones que están en producción como los que lo han desarrollado.&amp;#160; &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Escalabilidad no es solo una palabra más terminada en &lt;em&gt;…idad&lt;/em&gt;&lt;/strong&gt;      &lt;br /&gt;Creo que está de más decirlo, pero evitar mantener el estado en el servidor entre tus llamadas te permitirá escalar mejor. Tomate la molestia de planificar mecanismos de escalabilidad vertical y horizontal si no quieres morir de éxito. Corregir este tipo de problemas a posteriori siempre es traumático.      &lt;br /&gt;Ten en cuenta que todos los recursos son limitados, hasta el disco donde escribes el log se acaba si no tienes políticas de reciclaje. Piensa en que los servicios están diseñados para ejecutarse 24x7 y 365 días al año, en estos detalles debemos hacer especial énfasis.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;La correcta gestión de excepciones te puede salvar la vida       &lt;br /&gt;&lt;/strong&gt;En relación con la disponibilidad, es crítico gestionar de manera lo más eficiente posible las excepciones. La tecnología está ahí hace tiempo solo debes esforzarte en aplicarla correctamente. Una excepción en un servicio debe gestionarse correctamente para que no comprometa su estabilidad y disponibilidad. Trabajar sobre ello puede mejorar mucho la QoS y reducir el coste de mantenimiento.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Invierte tiempo en pensar bien tus contratos&lt;/strong&gt;      &lt;br /&gt;Es importante ajustar el equilibrio entre la cohesion de los servicios y los clientes. Cuando desarrollamos orientado a servicio no debemos hacerlo &lt;em&gt;ad-hoc&lt;/em&gt; a un cliente en particular. El servicio debe exponer una serie de funcionalidades bien definidas. Extendiendo esta característica conseguimos el correcto grado de cohesión.      &lt;br /&gt; Ahora tampoco hagas que usar tus servicios sea un infierno...       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Piensa bien cual es la mejor manera de establecer la comunicación con tus servicios       &lt;br /&gt;&lt;/strong&gt;La serialización y transporte de los objetos es una parte muy significativa del tiempo de procesamiento consumido. Piensa cuidadosamente la manera de exponer tus servicios al mundo. expón los &lt;em&gt;endpoints&lt;/em&gt; que sean necesarios y afina los &lt;em&gt;behaviors&lt;/em&gt; de los mismos para evitar matar moscas a cañonazos. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Como siempre, se hace camino al andar, así que la resolución de los problemas presentes en este tipo de escenarios también tenderá a converger (para estandarizarse más adelante) mientras todos maduraremos en el proceso. &lt;/p&gt;  &lt;p&gt;Por supuesto surgirán nuevos problemas relacionados con llevar el mundo del desarrollo de software más allá, que para algo estamos aquí, no? &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=179816" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Metodolog_26002300_237_3B00_a/default.aspx">Metodolog&amp;#237;a</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Arquitectura/default.aspx">Arquitectura</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Rendimiento/default.aspx">Rendimiento</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/SOA/default.aspx">SOA</category></item><item><title>Sinergia D&amp;T (developer + tool)</title><link>http://geeks.ms/blogs/aarroyo/archive/2010/03/12/sinergia-d-amp-t-developer-tool.aspx</link><pubDate>Fri, 12 Mar 2010 06:30:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:170039</guid><dc:creator>Andoni Arroyo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/aarroyo/rsscomments.aspx?PostID=170039</wfw:commentRss><comments>http://geeks.ms/blogs/aarroyo/archive/2010/03/12/sinergia-d-amp-t-developer-tool.aspx#comments</comments><description>&lt;p&gt;Siempre es importante aprender de los demás (sobre todo de los buenos ;)) pero en aspectos como la organización y la metodología lo básico está inventado. Nuestra tarea como desarrollador consiste, básicamente, en aplicar esas buenas ideas a nuestra realidad y hacer que se ajuste a la misma como un guante.    &lt;br /&gt;    &lt;br /&gt;Por supuesto, esta idea es más sencilla de decir que de poner en practica. Se deben tener en cuenta muchos aspectos, sin descuidar ni uno solo de ellos, si queremos tener un “Jelled Team” como lo califican en Peopleware. En el proceso ALM podemos observar que contar con un buena herramientas nos puede facilitar mucho el proceso.     &lt;br /&gt;    &lt;br /&gt;Cuando comenzamos con una metodología, la herramienta seleccionada nos brinda una gran ayuda poniendo a nuestra disposición todo el know-how analizado y sintetizado para generarla. Y esto no es poco. Nos ayuda a encauzar la energía y optimizar los esfuerzos sin dispersarnos en decidir como comenzar a caminar en la organización básica del complicado mundo del desarrollo del software.     &lt;br /&gt;    &lt;br /&gt;En este punto es donde, ante el Team Foundation Server hay que quitarse el sombrero. Para ser una herramienta relativamente moderna ha sabido encajar las piezas con mucho acierto abriendo los puntos claves a diferentes metodologías para elegir nuestro sabor preferido. (MSF, SCRUM…)&lt;/p&gt;  &lt;p&gt;Como muestra un botón. Cuando en el TFS2010 reportas un &lt;em&gt;bug&lt;/em&gt; sobre un proyecto, el formulario correspondiente (y la Web del Team Web Access !!) nos aparece un botón con la leyenda &lt;em&gt;Tools&lt;/em&gt;. Al desplegarlo, tenemos entre otras opciones, la de mostrar el diagrama de estados de la gestión de &lt;em&gt;bugs&lt;/em&gt; definida por la guía de proceso seleccionada.     &lt;br /&gt;    &lt;br /&gt;Dicho elemento se ve así con el SCRUM de Cochango:     &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/aarroyo/StateDiagram_5F00_027164AC.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="State Diagram" border="0" alt="State Diagram" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/aarroyo/StateDiagram_5F00_thumb_5F00_0C5B7779.png" width="513" height="327" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Cualquier desarrollador de Software se puede dar cuenta que poco tenemos que inventar al respecto. Como mucho, tendrás que hacer algún ajuste personalizado para tus particularidades. Ahora imaginaros la cantidad de horas y energía que podíamos malgastar en intentar crear una gestión de &lt;em&gt;bugs&lt;/em&gt; como esta desde cero (más el tiempo en crear el diagrama y mandarlo al departamento de calidad ;)). Aspectos como este, transmiten madurez por parte de la herramienta, generan confianza en su uso y crean una sinergia entre los desarrolladores y la herramienta que nos ayudan a ser lo más eficientes posible. &lt;/p&gt;  &lt;p&gt;A ver quien se vuelve al Source Safe ;)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=170039" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Metodolog_26002300_237_3B00_a/default.aspx">Metodolog&amp;#237;a</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/SCRUM/default.aspx">SCRUM</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/TFS/default.aspx">TFS</category></item><item><title>Scrum:IGTD (Scrum implementa el interfaz GTD)</title><link>http://geeks.ms/blogs/aarroyo/archive/2009/12/10/scrum-igtd-scrum-implementa-el-interfaz-gtd.aspx</link><pubDate>Thu, 10 Dec 2009 07:00:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:161843</guid><dc:creator>Andoni Arroyo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/aarroyo/rsscomments.aspx?PostID=161843</wfw:commentRss><comments>http://geeks.ms/blogs/aarroyo/archive/2009/12/10/scrum-igtd-scrum-implementa-el-interfaz-gtd.aspx#comments</comments><description>&lt;p&gt;Cada día están más en auge las metodologías orientadas a la productividad personal. Todos y cada uno de nosotros gestionamos recursos, al menos nuestro tareas en el tiempo, y es recomendable, por no decir necesario, organizar dichas tareas para ser los más productivos posible.    &lt;br /&gt;    &lt;br /&gt;El ámbito de aplicación &lt;a href="http://es.wikipedia.org/wiki/Getting_Things_Done" target="_blank"&gt;GTD&lt;/a&gt; no se limita al entorno profesional sino que cubre también los aspectos de organización personales, permitiendo aplicar pautas a todos los aspectos de nuestro comportamiento. Existen en la red toneladas de material al respecto y discutir las bondades de la metodología GTD y las implementaciones de las mismas quedan fuera de la intención de este post. Sin embargo, me gustaría analizar la relación que existe entre dos mundos íntimamente relacionados (aunque no de manera explicita) como son GTD y las metodologías ágiles. Como representante de dichas metodologías estudiaremos Scrum.&lt;/p&gt;  &lt;p&gt;Si consideramos GTD como un interfaz o contrato, llamémosle IGTD, sus puntos serian:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Recopilar&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Procesar&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Organizar&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Revisar&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Hacer&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Veamos como SCRUM implementa cada uno de los mismos…&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Recopilar&lt;/strong&gt;       &lt;br /&gt;El objetivo en GTD se define como “sacar” todo de nuestra mente y recogerlo en alguno de los elementos de almacenamiento para luego procesarlos.       &lt;br /&gt;      &lt;br /&gt;Scrum define exactamente esta tarea identificando un rol para cubrirla, el responsable de producto o &lt;a href="http://en.wikipedia.org/wiki/Scrum_(development)#Roles_2" target="_blank"&gt;Product Owner&lt;/a&gt;. Entre las responsabilidades principales de dicho rol se encuentran la de identificar los puntos que más valor aportan al producto servicio que desarrolla el proyecto. Dicha recolección se realiza escuchando y tratando con los diferentes &lt;a href="http://es.wikipedia.org/wiki/Stakeholder" target="_blank"&gt;stakeholders&lt;/a&gt;. Este punto común de acceso permite crear una capa de protección y homogenización para el resto del equipo.       &lt;br /&gt;Otra tarea muy importante y a la vez menos visible que recae sobre esta figura, es la de rechazar las propuestas de los stakeholders que no interesa avancen por el flujo puesto que no son interesantes para el producto. Esto permite al equipo centrarse en lo que realmente aporta valor.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Procesar&lt;/strong&gt;       &lt;br /&gt;Por supuesto, el trabajo de un buen Product Owner, no se limita a transcribir todo lo que escucha a los diferentes stakeholders. Debe realizar un proceso de análisis y diseño cuyo resultado se muestra como un conjunto de historias de usuario o &lt;a href="http://es.wikipedia.org/wiki/Scrum#Product_backlog" target="_blank"&gt;Product Backlog&lt;/a&gt;. Dichas historias deben mantenerse consensuadas, consistentes y priorizadas puesto que conforman el material sobre las cuales trabajará la “apisonadora” que es el equipo.       &lt;br /&gt;      &lt;br /&gt;Una buena regla para saber si tienes un buen Product Owner en tu equipo es preguntarse cuanto disminuiría la rentabilidad del producto si lo sustituyes por una regla de redirección de correo…       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Organizar&lt;/strong&gt;       &lt;br /&gt;El equipo, liderado por el &lt;a href="http://en.wikipedia.org/wiki/Scrum_(development)#Roles_2" target="_blank"&gt;Scrum Master&lt;/a&gt; y contando con la disponibilidad del Responsable de Producto, comienza en el &lt;a href="http://es.wikipedia.org/wiki/Scrum#Reuni.C3.B3n_de_Planificaci.C3.B3n_del_Sprint_.28Sprint_Planning_Meeting.29" target="_blank"&gt;Sprint Planning Meeting&lt;/a&gt; a digerir y desmenuzar ese producto Backlog. El resultado de dicho procesamiento son las tareas necesarias para cubrir las historias de usuario que el Product Owner ha recopilado.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Revisar&lt;/strong&gt;       &lt;br /&gt;Scrum da gran importancia al proceso de revisión. En base al grano deseado realiza la tarea de revisión en dos maneras.       &lt;br /&gt;      &lt;br /&gt;Todo el equipo se reúne una vez al día en el &lt;a href="http://es.wikipedia.org/wiki/Scrum#Daily_Scrum" target="_blank"&gt;Daily Scrum&lt;/a&gt; comenta lo que ha realizado, lo que va a realizar en el día y los impedimentos que se ha encontrado por el camino. La verdad es que no se me ocurre una mejor forma de aplicar el concepto de revisión a grano fino.       &lt;br /&gt;      &lt;br /&gt;Por otro lado, al finalizar cada sprint se realiza una revisión del mismo, &lt;a href="http://en.wikipedia.org/wiki/Scrum_(development)#Meetings" target="_blank"&gt;Sprint Retrospective&lt;/a&gt; que permite a nivel de todo lo realizado en el Sprint, evaluar los aspectos positivos para potenciarlos y negativos para mejorarlos.       &lt;br /&gt;      &lt;br /&gt;En GTD también existen dos tipos de revisiones, las diarias y las semanales (por Sprint para Scrum) así que en este punto la cosa encaja como un guante.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Hacer&lt;/strong&gt;       &lt;br /&gt;Una vez que tenemos claro lo que hay que hacer el equipo lo desarrolla, lo mismo que en GTD. Ambas metodologías hacen hincapié en la satisfacción de hacer las cosas y poder marcarlas como hechas, quitándolas de la primera línea de batalla y permitiendo centrarnos en lo que falta por hacer. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;La conclusión que podemos obtener de este análisis, es que ambos metodologías son recomendablemente compatibles. Encajan porque se basan en patrones comunes, haciendo hincapié en centrarse en lo importante, reducir el stress, simplificar el día a día.    &lt;br /&gt;    &lt;br /&gt;Además son especialmente cuidadosas con evitar el cambio de contexto y fomentar la concentración, GTD vía controlando las interrupciones internas y externas y Scrum blindando a los equipo de los cambios durante los Sprints.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=161843" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Metodolog_26002300_237_3B00_a/default.aspx">Metodolog&amp;#237;a</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/SCRUM/default.aspx">SCRUM</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/_26002300_193_3B00_gil/default.aspx">&amp;#193;gil</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/GTD/default.aspx">GTD</category></item><item><title>Metodología, motivación y otras hierbas…</title><link>http://geeks.ms/blogs/aarroyo/archive/2009/11/29/metodolog-237-a-motivaci-243-n-y-otras-hierbas.aspx</link><pubDate>Sun, 29 Nov 2009 21:00:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:161473</guid><dc:creator>Andoni Arroyo</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/aarroyo/rsscomments.aspx?PostID=161473</wfw:commentRss><comments>http://geeks.ms/blogs/aarroyo/archive/2009/11/29/metodolog-237-a-motivaci-243-n-y-otras-hierbas.aspx#comments</comments><description>&lt;p&gt;No digo nada nuevo al afirmar que las empresas de desarrollo de software cuentan como materia prima para crear sus “productos finales” con la tecnología y conocimiento. Ahora bien, este conocimiento no reside en el aire, sino en las personas.    &lt;br /&gt;    &lt;br /&gt;Los malos modelos directivos valoran los recursos solo en su aspecto cuantitativo sin valorar la calidad de los mismos. He oído a “grandes” gestores del sector de desarrollo de software, sacar pecho al decir que consigue dos “recursos” (por ejemplo programador) al precio de uno. Por supuesto, el cambio implicaba sustituir una persona con diez años de experiencia por dos becarios, pero desde su perspectiva el cambio de 2x1 implicaba el doble de trabajo al mismo coste…&lt;/p&gt;  &lt;p&gt;Este mercado avanza, lentamente y en su proceso madura. Podemos decir que el ritmo al que madura el mundo del desarrollo del software es varias veces más lento que el ritmo al que avanza la tecnología, pero aun así, lo hace. Si hiciéramos un paralelismo con algún otro sector de desarrollo más maduro, supongamos la automoción, nadie se plantearía trabajar sin una metodología definida que permita a todos los miembros de los diferentes equipos conocer las reglas del juego. Aún así hay muchas empresas que no emplean ningún tipo de metodología explicita.&amp;#160; &lt;br /&gt;    &lt;br /&gt;Pensemos un poco sobre como impacta la forma de trabajar en la motivación de los profesionales. Los músicos de una orquesta, por muy buenos que sean, necesitan una partitura compartida para tocar juntos. Es cierto que la partitura ya esta creada por un compositor (en muchas ocasiones genios) y esta no varía. Se repite de idéntica manera miles de veces y no se adapta a las demandas del que la escucha. Nuestra partitura es más compleja. Varía con el tiempo y no es conocida de antemano (aunque las metodologías predictivas se empeñen en decir lo contrario). Al empezar nuestra obra no conocemos la cantidad de violines o tubas que necesitaremos…    &lt;br /&gt;    &lt;br /&gt;Esta complejidad es una razón más para contar con una poderosa herramienta como la metodología que nos guie por el camino. Esta nos aporta:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Evitar desgastarnos en definir y redefinir procesos implicados en el día a día.&lt;/li&gt;    &lt;li&gt;Aplicar cierta “objetividad” a la forma de trabajar y a la valoración del trabajo de los miembros del equipo.&lt;/li&gt;    &lt;li&gt;Ganar en visibilidad al definir roles y responsabilidades asociadas.&lt;/li&gt;    &lt;li&gt;Alinear los objetivos de los diferentes miembros del equipo.&lt;/li&gt;    &lt;li&gt;Tener una base que adaptar y mejorar para los siguientes proyectos.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Cualquiera de estas características son básicas a la hora de motivar a los profesionales, sobre todo a los buenos. He tenido experiencias al respecto y es un autentico fenómeno a estudiar como cambia la aptitud de los miembros de un equipo que trabajan sin ninguna metodología explicita, al implantar una metodología (especialmente las ágiles). Muchos de ellos tienen la sensación de que su trabajo no se valora porque no es visible, lo cual acaba implantando un “comunismo” asesino de la eficiencia.   &lt;br /&gt;    &lt;br /&gt;Podemos decir que los buenos profesionales necesitan visibilidad y que la metodología aporta visibilidad…así que la cosa está clara.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=161473" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Metodolog_26002300_237_3B00_a/default.aspx">Metodolog&amp;#237;a</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/_26002300_193_3B00_gil/default.aspx">&amp;#193;gil</category></item><item><title>Permitiendo la colaboración TFS a través de plataformas heterogéneas</title><link>http://geeks.ms/blogs/aarroyo/archive/2009/11/09/permitiendo-la-colaboraci-243-n-tfs-a-trav-233-s-de-plataformas-heterog-233-neas.aspx</link><pubDate>Mon, 09 Nov 2009 22:42:54 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:160197</guid><dc:creator>Andoni Arroyo</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/aarroyo/rsscomments.aspx?PostID=160197</wfw:commentRss><comments>http://geeks.ms/blogs/aarroyo/archive/2009/11/09/permitiendo-la-colaboraci-243-n-tfs-a-trav-233-s-de-plataformas-heterog-233-neas.aspx#comments</comments><description>&lt;p&gt;Microsoft anunció ayer que comprará los activos relacionados con &lt;a href="http://www.teamprise.com/" target="_blank"&gt;Teamprise&lt;/a&gt; de SourceGear LLC. Este software permiten a los desarrolladores usar el IDE de Eclipse (que opera en varios sistemas operativos, incluyendo UNIX, Linux y Mac OS X...), para construir aplicaciones que se comunican con Microsoft Visual Studio Team Foundation Server. Esta combinación permitirá a los desarrolladores utilizar una única herramienta para la gestión de ciclo de vida de proyectos con independencia de la plataforma de desarrollo.     &lt;br /&gt;    &lt;br /&gt;Seguro esta característica va a permitir a muchos desarrolladores de mundos tan “separados” comenzar a unificar esfuerzos, reducir la brecha que nos separa y de paso hacer TFS más potente. Estoy deseando hablar con algunos Javeros muy interesantes que conozco a ver si les convenzo para probarlo.&lt;/p&gt;  &lt;p&gt;Más información por &lt;a href="http://www.microsoft.com/presspass/press/2009/nov09/11-09teamprisepr.mspx" target="_blank"&gt;aquí&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=160197" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Metodolog_26002300_237_3B00_a/default.aspx">Metodolog&amp;#237;a</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/TFS/default.aspx">TFS</category></item><item><title>¿Qué hace un tecnólogo como tú en una crisis como ésta?</title><link>http://geeks.ms/blogs/aarroyo/archive/2009/09/16/191-que-hace-un-tecn-243-logo-como-t-250-en-una-crisis-como-esta.aspx</link><pubDate>Wed, 16 Sep 2009 07:14:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:155943</guid><dc:creator>Andoni Arroyo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/aarroyo/rsscomments.aspx?PostID=155943</wfw:commentRss><comments>http://geeks.ms/blogs/aarroyo/archive/2009/09/16/191-que-hace-un-tecn-243-logo-como-t-250-en-una-crisis-como-esta.aspx#comments</comments><description>&lt;p&gt;Estamos en lo que parece el ecuador de la crisis econ&amp;oacute;mica mundial. Los que ya peinamos alguna que otra cana ya hemos pasado por esto antes y probablemente pasaremos por alguna m&amp;aacute;s. Ya conocemos como se comporta el mercado y os apuesto lo que quer&amp;aacute;is a que, aunque pase la dichosa crisis, el tiempo de reacci&amp;oacute;n de las empresas de tecnolog&amp;iacute;a hacia sus currillos (y la de los clientes hacia las empresas) se estirar&amp;aacute; lo m&amp;aacute;s posible. &lt;br /&gt;&lt;br /&gt;Nos guste o no tenemos que mover ficha. De hecho, tenemos que hacer ajustes para corregir un problema que ni hemos creado ni pod&amp;iacute;amos haber evitado... Con el fin de adecuarnos a la situaci&amp;oacute;n, debemos ser especialmente cuidadosos en algunos aspectos de nuestro d&amp;iacute;a a d&amp;iacute;a, sobre todo, con los directamente o indirectamente relacionados con los (escasos) presupuestos que manejamos. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ajusta y maximiza m&amp;aacute;s que nunca los recursos&lt;/strong&gt; &lt;br /&gt;Puede ser un momento interesante para transmitir al cuadro directivo la necesidad de introducir/mejorar la metodolog&amp;iacute;a a emplear en los desarrollos. Argumentado las ventajas de la misma, las empresas suelen estar m&amp;aacute;s receptivas a las mejoras, sobre todo si estas implican poca (o nula) inversi&amp;oacute;n. Mantener una buena visibilidad es un aspecto clave para que los stakeholders analicen mejor que nunca en que se invierten los recursos. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C&amp;eacute;ntrate en lo importante&lt;/strong&gt; &lt;br /&gt;No es nada nuevo, lo deber&amp;iacute;amos hacer siempre y las metodolog&amp;iacute;as &amp;aacute;giles se cansan de repetirlo. El riesgo de que los proyectos se trunquen a medio camino es m&amp;aacute;s alto en &amp;eacute;poca de inestabilidad. Los presupuestos se aprueban para los diferentes ejercicios y puede ocurrir que un proyecto se paralice o cancele.&amp;nbsp; &lt;br /&gt;Priorizar las funcionalidades que m&amp;aacute;s valor aportan, as&amp;iacute; como evaluar con detalle aspectos de m&amp;aacute;s dif&amp;iacute;cil &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Rate_of_return"&gt;R.O.I.&lt;/a&gt; (Creaci&amp;oacute;n de Frameworks, metalenguajes, dise&amp;ntilde;adores&amp;hellip;) siempre es importante, pero ahora se vuelve cr&amp;iacute;tico. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tomate tiempo para apoyar a la fuerza comercial&lt;/strong&gt; &lt;br /&gt;Vender siempre es dif&amp;iacute;cil, vender Software o servicios de &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Information_technology"&gt;I.T.&lt;/a&gt; siempre es muy dif&amp;iacute;cil, pero es que en &amp;eacute;pocas duras se convierte en una acci&amp;oacute;n tit&amp;aacute;nica. Los comerciales e ingenieros comerciales involucrados en las acciones de preventa necesitan justificar y explicar m&amp;aacute;s claramente que nunca porque el cliente debe invertir en el servicio que ofrecemos. &lt;br /&gt;No escatimes en apoyar con argumentos tecnol&amp;oacute;gicos las soluciones ofrecidas, puesto que cada venta es una batalla y todas las justificaciones que tengamos a mano ser&amp;aacute;n muy apreciadas. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Valora la posibilidad de emplear soluciones est&amp;aacute;ndar &lt;br /&gt;&lt;/strong&gt;Potencia el &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Rapid_application_development"&gt;R.A.D&lt;/a&gt;. Intenta recortar los tiempos de desarrollo evitando en la medida de los posible los desarrollos a medida desde cero. Probablemente existan soluciones, bien creadas por Microsoft o terceros, para la mayor&amp;iacute;a de problemas a solucionar. Esto te permite centrarte en la funcionalidad que realmente aporta valor. Es incre&amp;iacute;ble la cantidad de funcionalidad com&amp;uacute;n que est&amp;aacute; a mano y no empleamos por no tomarnos el tiempo en evaluarla... &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Re-eval&amp;uacute;a las infraestructuras &lt;br /&gt;&lt;/strong&gt;Probablemente el s&amp;uacute;per C.P.D. dise&amp;ntilde;ado en los momentos de vacas gordas pueda ser sustituido (antes de realizar la inversi&amp;oacute;n a poder ser ;)) por un sistema en &lt;a target="_blank" href="http://es.wikipedia.org/wiki/Computaci%C3%B3n_en_nube"&gt;Cloud&lt;/a&gt; que reduzca el coste total del proyecto de manera significativa. O quiz&amp;aacute;s explicando en detalle el coste que supone cierto grado de disponibilidad de una funcionalidad, esta no le parezca tan importante al cliente&amp;hellip; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revisar aquella certificaci&amp;oacute;n para la que nunca tenias tiempo&lt;/strong&gt; &lt;br /&gt;Si tienes un poco m&amp;aacute;s de tiempo de lo habitual, ten en mente que las crisis no son eternas, pasan y cuando se levante el tel&amp;oacute;n los mejor preparados podr&amp;aacute;n aprovechar el tir&amp;oacute;n para reclamar los mejores puestos que vuelva a ofrecer el mercado. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lo que nunca debemos hacer es caer en el des&amp;aacute;nimo, estamos en esto porque es nuestra profesi&amp;oacute;n y adem&amp;aacute;s porque nos gusta, que se note!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=155943" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Metodolog_26002300_237_3B00_a/default.aspx">Metodolog&amp;#237;a</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category></item><item><title>La historia del zapatero de Ikea y la perspectiva del proyecto</title><link>http://geeks.ms/blogs/aarroyo/archive/2009/09/11/la-historia-del-zapatero-de-ikea-y-la-perspectiva-del-proyecto.aspx</link><pubDate>Thu, 10 Sep 2009 23:53:48 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:155660</guid><dc:creator>Andoni Arroyo</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/aarroyo/rsscomments.aspx?PostID=155660</wfw:commentRss><comments>http://geeks.ms/blogs/aarroyo/archive/2009/09/11/la-historia-del-zapatero-de-ikea-y-la-perspectiva-del-proyecto.aspx#comments</comments><description>&lt;p&gt;La historia que os voy a contar está basada en hechos reales. Aprovechando que tengo unos días libres antes de salir de viaje me he dispuesto a acabar con la fila india de zapatos que tengo por casa. Así que ni corto ni perezoso me fui al Ikea y me cogí un zapatero de esos tan apañado que te montas en casa.    &lt;br /&gt;    &lt;br /&gt;Me puse manos a la obra y decidí seguir las instrucciones que tan amablemente incluyen los suecos a modo de &lt;em&gt;”paso a paso”&lt;/em&gt;. Tras una revisión previa combinada con mis nulos conocimientos en bricolaje y ebanistería, me decidí a seguir los pasos indicados al pie de la letra. El resultado, os lo podréis imaginar, un zapatero impresionante con una de las tablas del frontal colocada al revés, es decir, un precioso acabado en madera virgen…&lt;/p&gt;  &lt;p&gt;Me ha dado por pensar los motivos de este pequeño desastre y la analogía de los mismos en los proyectos de desarrollo de Software. Podemos decir que yo he sido el programador currillo que he recibido una serie de pequeñas tareas bien definidas. Estas tareas fueron creadas por un gran analista sueco como resultado de un diseño basado en el análisis de la funcionalidad a cubrir. &lt;/p&gt;  &lt;p&gt;Por supuesto, no tengo ninguna duda de que el señor analista sueco creó las tareas de manera correcta en su contexto y en su momento. Lamentablemente en el proceso de “codificación” de mi zapatero se han dado algunas circunstancias inesperadas. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Errores humanos&lt;/strong&gt;      &lt;br /&gt;Tras comprobar de nuevo las instrucciones observo que no se especifica explícitamente el lado que debe dar hacia el frontal y cual no. Obviamente mi decisión no fue la correcta.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Falta de comunicación&lt;/strong&gt;      &lt;br /&gt;La verdad es que el analista sueco no me pillaba lo suficientemente a mano para completar las dudas que me surgían sobre el manual mientras avanzaba el desarrollo del proyecto.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Falta de perspectiva e interiorización del alcance global del proyecto&lt;/strong&gt;&lt;/li&gt; He depositado mi confianza en el manual, sin llegar a interiorizar los componentes del proyecto. Si lo hubiese comprendido como un conjunto, me hubiera dado cuenta de que ese madero en el frontal dado la vuelta no encaja bien, pero para cuando&amp;#160; comprendí que eso era el frontal ya era demasiado tarde….     &lt;br /&gt;    &lt;li&gt;&lt;strong&gt;Falta de revisiones&lt;/strong&gt;       &lt;br /&gt;Una pequeña revisión al finalizar cada paso o conjunto de pasos podría haber evitado la desviación. Esto me habría limitado la cantidad de pasos a deshacer para recolocar el maldito madero y por lo tanto, el esfuerzo (dinero en proyectos reales) malgastado en problemas que yo mismo me he buscado.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;En el mundo del Software tanto las especificaciones como los entregables son más abstractos. Si no comprendemos bien las necesidades del cliente, (las que nos transmite y las que ni él mismo ha identificado aún!) podemos llegar a las oficinas del cliente con un software que le produzca mas enfado que satisfacción. Dichas necesidades en la mayoría de ocasiones nos son totalmente ajenas y desconocidas puesto que no conocemos profundamente el sector del cliente (Al menos en los primeros proyectos tipo!).&lt;/p&gt;  &lt;p&gt;Sin trabajar este proceso de interiorización apoyado en la empatía, podemos entregar el zapatero al cliente sin enterarnos de que tenemos el madero al revés aunque lo estemos mirando con todo detalle...&lt;/p&gt;  &lt;p&gt;Así que dicho queda, me voy a por la caja de herramientas de nuevo…&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=155660" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Metodolog_26002300_237_3B00_a/default.aspx">Metodolog&amp;#237;a</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/_26002300_193_3B00_gil/default.aspx">&amp;#193;gil</category></item><item><title>Desarrollador con calidad vale por dos (o más...)</title><link>http://geeks.ms/blogs/aarroyo/archive/2009/08/30/desarrollador-con-calidad-vale-por-dos-o-m-225-s.aspx</link><pubDate>Sun, 30 Aug 2009 20:05:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:154986</guid><dc:creator>Andoni Arroyo</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/aarroyo/rsscomments.aspx?PostID=154986</wfw:commentRss><comments>http://geeks.ms/blogs/aarroyo/archive/2009/08/30/desarrollador-con-calidad-vale-por-dos-o-m-225-s.aspx#comments</comments><description>&lt;p&gt;Las metodolog&amp;iacute;as &amp;aacute;giles nos recomiendan centrar nuestros esfuerzos en aportar valor al cliente. Dicho valor se traslada a trav&amp;eacute;s de los entregables que el equipo va liberando en las diferentes iteraciones. En el mundo del desarrollo de aplicaciones inform&amp;aacute;ticas, el m&amp;aacute;s importante de todos los artefactos que entregamos es el Software. Y este software se genera desde el c&amp;oacute;digo que generan los miembros del equipo.&lt;/p&gt;
&lt;p&gt;Bueno eso este claro. Y que menos se puede pedir al equipo que se aplique al m&amp;aacute;ximo con el c&amp;oacute;digo que genera? Como desarrollador de software el c&amp;oacute;digo es tu producto final, y este debe ser desarrollado con la m&amp;aacute;xima calidad que nos sea posible.&lt;/p&gt;
&lt;p&gt;Algo que todos (los que entendemos como funciona el negocio del desarrollo de software..) tenemos claro, es que es m&amp;aacute;s rentable asegurar al calidad de nuestros desarrollos desde las primeras etapas del proceso en vez de corregir los errores m&amp;aacute;s tarde. El impacto de los errores crece exponencialmente cuanto m&amp;aacute;s tarde se descubren. &lt;/p&gt;
&lt;p&gt;Por lo tanto, como desarrolladores profesionales que somos, debemos poner especial hincapi&amp;eacute; en mantener presente la calidad en nuestros proyectos. Es f&amp;aacute;cil de decir, pero como a menudo, no tan f&amp;aacute;cil de conseguir&amp;hellip;&lt;/p&gt;
&lt;p&gt;Existen algunos grupos de problemas comunes que podemos identificar como focos problem&amp;aacute;ticos: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Comunicaci&amp;oacute;n pobre y malas interpretaciones &lt;br /&gt;&lt;/strong&gt;La capacidad de comunicaci&amp;oacute;n del ser humano es uno de los factores que le diferencia del resto de las especies. El grado de abstracci&amp;oacute;n que podemos aplicar a la misma es muy alto. Esta caracter&amp;iacute;stica, nos permite transmitir mucha informaci&amp;oacute;n de manera muy efectiva. &lt;br /&gt;&lt;br /&gt;Por ejemplo, si yo te digo, &lt;em&gt;singelton&lt;/em&gt;, &lt;em&gt;grano fino&lt;/em&gt;, o &lt;em&gt;capa de servicios&lt;/em&gt; y ambos tenemos un conocimiento equivalente en la materia, hemos conseguido transmitir una serie de conceptos m&amp;aacute;s o menos complejos de manera optimizada. &lt;br /&gt;&lt;br /&gt;Es una herramienta potente, pero que debemos cuidar para evitar desviaciones igual de potentes. La comunicaci&amp;oacute;n debe ser clara y fluida, asegurando que el receptor ha comprendido el mensaje en la misma dimensi&amp;oacute;n que deseamos emitirlo. No se debe escatimar en comunicaci&amp;oacute;n funcional, t&amp;eacute;cnica, recabar &lt;em&gt;feedback&lt;/em&gt; del equipo y aplicar un poco de psicolog&amp;iacute;a (la empat&amp;iacute;a puede ser la clave). Colaborar en este juego es parte de la tarea de cualquier miembro de un equipo. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Errores de programaci&amp;oacute;n &lt;br /&gt;&lt;/strong&gt;Las personas&amp;nbsp; escriben c&amp;oacute;digo y las personas comenten errores. Ergo&amp;hellip;el c&amp;oacute;digo tiene errores (ahora no abusemos del mismo para hacer chapuzas diciendo es intr&amp;iacute;nseco el error en la persona...) &lt;br /&gt;&lt;br /&gt;Escribir buen c&amp;oacute;digo no es f&amp;aacute;cil. Debemos tener en cuenta aspectos como seguridad, rendimiento, localizaci&amp;oacute;n, mantenibilidad... y en tiempo record! &lt;br /&gt;&lt;br /&gt;Aunque apoyarnos en el CLR ayuda, siempre existir&amp;aacute;n &lt;em&gt;bugs&lt;/em&gt; que tendremos que corregir y realizar mantenimiento sobre el mismo. Y esto ocurre haciendo las cosas todo lo bien que podemos, esforz&amp;aacute;ndonos al m&amp;aacute;ximo como desarrolladores. Imag&amp;iacute;nate si no lo hacemos as&amp;iacute;&amp;hellip; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Falta de realimentaci&amp;oacute;n de pruebas &lt;br /&gt;&lt;/strong&gt;Escribir pruebas unitarias es un trabajo que (casi) no aporta visibilidad. Lleva tiempo y no es c&amp;oacute;digo f&amp;aacute;cil de reutilizar. Aunque los desarrolladores sabemos que debemos escribirlas y esforzarnos y alcanzar la cobertura d c&amp;oacute;digo marcada por los par&amp;aacute;metros de calidad del proyecto, a menudo nos enfrentamos a desincentivos que tientan a no realizarlas. Pero lo que es seguro, es que sin un buen conjunto de pruebas, (no tiene que ser muchas pero si bien dise&amp;ntilde;adas) es muy f&amp;aacute;cil cambiar c&amp;oacute;digo y no descubrir los efectos secundarios no deseados hasta demasiado tarde. (vamos creando un coladero&amp;hellip;) &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Versi&amp;oacute;n distorsionada&lt;/strong&gt; &lt;br /&gt;Gracias a la metodolog&amp;iacute;a al principio, y a las herramientas de control de c&amp;oacute;digo fuente, m&amp;aacute;s adelante no se han producido millones de asesinatos entre los desarrolladores. A&amp;uacute;n as&amp;iacute; existen archivos y configuraciones de puestos que no son propios del c&amp;oacute;digo fuente cuyas diferencias producen errores que son dif&amp;iacute;ciles de diagnosticar. Cuantas veces hemos o&amp;iacute;do eso de &amp;quot;En mi m&amp;aacute;quina funcionaba!&amp;quot;. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Falta de transparencia &lt;br /&gt;&lt;/strong&gt;Para desarrollar un proyecto con &amp;eacute;xito hace falta todo. Como una de las piezas falle o no se comunique adecuadamente todo el proyecto se puede venir abajo como un castillo de naipes. Tradicionalmente, han sido mundos diferentes (e inconexos!!) aspectos como la infraestructura de desarrollo, el sistema de gesti&amp;oacute;n del proyecto, el trazado de requisitos/errores, m&amp;eacute;tricas...(Intenta sincronizar el s.v.n. con el Visio que se sac&amp;oacute; tu gerente de la manga...;)) &lt;br /&gt;En esta situaci&amp;oacute;n, el equipo tiene poca visibilidad respecto al estado global del proyecto. (aparte de los odiados y poco fiables informes de estado...) &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Cada una de estas cinco categor&amp;iacute;as son un foco potencial de problemas que afectan directamente a la calidad del c&amp;oacute;digo realizado. Esto implica que el mecanismo que el cliente emplea para evaluar el valor aportado, tiene problemas que afectan, directamente, a las sensaciones que transmitimos. La aparici&amp;oacute;n de herramientas que nos permiten gestionar todos los aspectos relacionados con el desarrollo de manera orquestada vienen a facilitarnos la vida, y conocer sus posibilidades es un esfuerzo con seguro retorno de inversi&amp;oacute;n. &lt;/p&gt;
&lt;p&gt;Por nosotros que no quede...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=154986" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Metodolog_26002300_237_3B00_a/default.aspx">Metodolog&amp;#237;a</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Pruebas+unitarias/default.aspx">Pruebas unitarias</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/_26002300_193_3B00_gil/default.aspx">&amp;#193;gil</category></item><item><title>Dulce introducción al Kanban!!</title><link>http://geeks.ms/blogs/aarroyo/archive/2009/08/12/kanban.aspx</link><pubDate>Wed, 12 Aug 2009 12:23:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:154028</guid><dc:creator>Andoni Arroyo</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/aarroyo/rsscomments.aspx?PostID=154028</wfw:commentRss><comments>http://geeks.ms/blogs/aarroyo/archive/2009/08/12/kanban.aspx#comments</comments><description>&lt;p&gt;Bueno, parece que SCRUM ha puesto la pica en Flandes y se ha convertido en una metodolog&amp;iacute;a ampliamente conocida y respetada. Pues ya est&amp;aacute;, no? ya tenemos metodolog&amp;iacute;a &amp;aacute;gil para cualquier tipo de proyecto y para siempre&amp;hellip; &lt;br /&gt;&lt;br /&gt;Muy confiado tienes que ser para creerte eso&amp;hellip; &lt;br /&gt;&lt;br /&gt;En mi trabajo hemos desarrollado un producto aplicando SCRUM con unos resultados muy satisfactorios. Dicho producto, se ha comenzado a implantar y ahora entra un equipo de soporte a mantener la primera versi&amp;oacute;n del mismo y comienza una nueva rama de desarrollo de la siguiente versi&amp;oacute;n. &lt;br /&gt;&lt;br /&gt;Estaba plante&amp;aacute;ndome como organizar el equipo de soporte y no acababa de encajar SCRUM sobre la naturaleza de su trabajo (la verdad que esta y cualquier otra metodolog&amp;iacute;a&amp;hellip;). Es muy dif&amp;iacute;cil organizarse para planificar incluso un peque&amp;ntilde;o Sprint, puesto que no se conocen las tareas de antemano. Por lo tanto, llegu&amp;eacute; a la conclusi&amp;oacute;n de que necesitamos para este tipo de proyectos (que no son pocos) algo todav&amp;iacute;a m&amp;aacute;s adaptable que SCRUM&amp;hellip; &lt;br /&gt;&lt;br /&gt;Tomando un caf&amp;eacute; con el gran (aunque javero) Jorge Prieto me coment&amp;oacute; algo sobre Kanban y comenc&amp;eacute; a tirar del hilo para ver si me pod&amp;iacute;a cuadrar eso que sonaba a pescado crudo&amp;hellip; &lt;br /&gt;&lt;br /&gt;As&amp;iacute; que vamos a aprovechar este post para explicar que es eso de Kanban compararlo con SCRUM e identificar sus conflictos potenciales. Antes que meternos en harina vamos a dejar las cosas claras, haciendo un peque&amp;ntilde;o resumen de SCRUM y Kanban&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SCRUM (en pocas palabras)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Divide su organizaci&amp;oacute;n en peque&amp;ntilde;os equipos auto-organizados y multidisciplinares.&lt;/li&gt;
&lt;li&gt;Divide el trabajo en una lista de peque&amp;ntilde;os elementos muy concretos. &lt;/li&gt;
&lt;li&gt;Ordenar la lista por orden de prioridad y estimar el esfuerzo relativo de cada elemento. &lt;/li&gt;
&lt;li&gt;Dividido en iteraciones cortas de longitud fija (normalmente con entrega o demostraci&amp;oacute;n despu&amp;eacute;s de cada iteraci&amp;oacute;n.)&lt;/li&gt;
&lt;li&gt;Optimizar el plan de liberaci&amp;oacute;n y actualizar las prioridades en colaboraci&amp;oacute;n con el cliente, sobre la base de conocimientos adquiridos por la inspecci&amp;oacute;n de la entrega despu&amp;eacute;s de cada iteraci&amp;oacute;n. &lt;/li&gt;
&lt;li&gt;Optimizar el proceso por tener una retrospectiva despu&amp;eacute;s de cada iteraci&amp;oacute;n. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Resumiendo el resumen:&lt;/p&gt;
&lt;p&gt;Pasamos de &lt;strong&gt;&amp;ldquo;Muchas personas haciendo algo muy grande&amp;rdquo;&lt;/strong&gt; a &lt;strong&gt;&amp;ldquo;Pocas personas haciendo cosas peque&amp;ntilde;as que se integran con regularidad para ver el conjunto.&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kanbas (en pocas palabras tambi&amp;eacute;n)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visualizar el flujo de trabajo &lt;br /&gt;Dividir el trabajo en trozos escribir cada uno de los elementos en una tarjeta y poner en la pared. &lt;br /&gt;Usar el nombre o columnas para ilustrar en que estado se encuentra cada elemento dentro del flujo de trabajo.&lt;/li&gt;
&lt;li&gt;L&amp;iacute;mitar WIP (Work In Progress) &lt;br /&gt;Asignar l&amp;iacute;mites expl&amp;iacute;citos obre cuantos elementos pueden estar en cada uno de los estados del flujo de trabajo.&lt;/li&gt;
&lt;li&gt;Medir el tiempo &lt;br /&gt;Contar el tiempo promedio para completar un tema, a veces llamado &amp;quot;tiempo de ciclo&amp;quot; y, como es obvio, optimizar el proceso para que el tiempo tan peque&amp;ntilde;o y previsible como sea posible.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img height="117" width="240" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/aarroyo/image_5F00_3A59042D.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Podemos observar que &lt;strong&gt;Kanban&lt;/strong&gt; es todav&amp;iacute;a &lt;strong&gt;menos prescriptivo que SCRUM&lt;/strong&gt;. &lt;br /&gt;&lt;br /&gt;Prescriptivo significa &amp;ldquo;reglas para seguir&amp;rdquo;. 100% prescriptivo implica que no tienes que usar el cerebro, rid&amp;iacute;culo verdad?&amp;hellip;) y en este apartado vemos que SCRUM aporta mas reglas &amp;ldquo;&lt;em&gt;out-of-the-box&lt;/em&gt;&amp;rdquo; como por ejemplo encajar en un tiempo los Sprints cosa que Kanban no hace. &lt;br /&gt;&lt;br /&gt;Para hacernos una mejor composici&amp;oacute;n podemos observar la escala de &amp;ldquo;prescriptividad&amp;rdquo; (toma ya!) de forma gr&amp;aacute;fica:&lt;/p&gt;
&lt;p&gt;&lt;img height="338" width="527" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/aarroyo/image_5F00_078B8E6A.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" /&gt;&lt;/p&gt;
&lt;p&gt;Como siempre podemos decir que la mejor opci&amp;oacute;n es no limitarse a un herramienta en concreto. Probablemente la soluci&amp;oacute;n nuestros problemas se encuentre en una combinaci&amp;oacute;n de varias. Muchos equipo Kanban realizan una reuni&amp;oacute;n diaria a primera hora (t&amp;iacute;pica liturgia de SCRUM). Algunos equipos de SCRUM que he conocido, escriben su Backlog como Casos de Uso (t&amp;iacute;pico de RUP) o limitan el tama&amp;ntilde;o de las colas (t&amp;iacute;pico de Kanbas).&lt;/p&gt;
&lt;p&gt;As&amp;iacute; que como siempre &amp;ldquo;haz las cosas como mejor te funcionen&amp;rdquo;, ya os contar&amp;eacute; el resultado de aplicar esta forma de trabajo con el equipo de soporte. &lt;br /&gt;&lt;br /&gt;Para terminar os cito a &lt;a target="_blank" href="http://es.wikipedia.org/wiki/Miyamoto_Musashi"&gt;Miyamoto Musashi&lt;/a&gt; que los japoneses algo saben de todo esto:&lt;/p&gt;
&lt;p align="center"&gt;&lt;em&gt;&amp;ldquo;No desarrolles ninguna dependencia de arma o escuela de lucha&amp;rdquo;&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=154028" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Metodolog_26002300_237_3B00_a/default.aspx">Metodolog&amp;#237;a</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Inform_26002300_225_3B00_tica/default.aspx">Inform&amp;#225;tica</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/_26002300_193_3B00_gil/default.aspx">&amp;#193;gil</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Kanban/default.aspx">Kanban</category></item><item><title>¿Por que iterar?</title><link>http://geeks.ms/blogs/aarroyo/archive/2009/08/10/191-por-que-iterar.aspx</link><pubDate>Sun, 09 Aug 2009 22:14:29 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:153856</guid><dc:creator>Andoni Arroyo</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/aarroyo/rsscomments.aspx?PostID=153856</wfw:commentRss><comments>http://geeks.ms/blogs/aarroyo/archive/2009/08/10/191-por-que-iterar.aspx#comments</comments><description>&lt;p&gt;Aplicando el patrón C.S.P. (&lt;em&gt;Common Sense Pattern…&lt;/em&gt;) en nuestros desarrollos, observamos que debemos cumplir con las necesidades del cliente. Acto seguido, descubrimos, que estas cambian más que los nos gustaría (ouchh!). Por lo tanto, se crea la necesidad de ir ajustando el avance del proyecto a las necesidades reales (y cambiantes) del proyecto. &lt;/p&gt;  &lt;p&gt;¿Pero como…?    &lt;br /&gt;    &lt;br /&gt;La respuesta que nos aportan las metodologías agiles es sencilla, iterando. Partiendo el desarrollo de la aplicación en pequeños entregables que el usuario pueda probar e ir enriqueciendo. Suena lógico, pero vamos a hacer un esfuerzo de plasmar negro sobre blanco las principales ventajas que esta forma de trabajar nos ofrece:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Gestión de riesgos        &lt;br /&gt;&lt;/strong&gt;Asumámoslo, el resultado deseado no es concebible por adelantado. Existen riesgos, algunos ya identificados y otros por identificar. Para gestionarlos correctamente debes demostrar o refutar tus requisitos y diseñar las suposiciones implementando incrementalmente elementos que son objetivos del sistema, empezando con los de más alto riesgo.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Económicos        &lt;br /&gt;&lt;/strong&gt;En un ambiente de negocio incierto (&lt;strike&gt;casi&lt;/strike&gt; todos los proyectos lo son !!) es clave optimizar los esfuerzos en las mayores prioridades del proyecto. Debemos manejar cada iteración como un conjunto de fichas de juego a apostar por un conjunto de funcionalidad que se pueda entregar, probar y que funcionen.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Enfoque        &lt;br /&gt;&lt;/strong&gt;Solo podemos mantener una cantidad limitada de elementos en la mente. Trabajando con pequeños lotes de trabajo podemos focalizar nuestros esfuerzos con un conjunto de funcionalidades que comprendemos y somos capaces de encajar y entender.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Motivación        &lt;br /&gt;&lt;/strong&gt;No existe un mecanismo mejor de motivación de acción prolongada (el dinero solo motiva en un espacio reducido de tiempo!!) para un profesional que comprobar como su creación se usa, es efectivo y valorado por los usuarios.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Control de la teoría        &lt;br /&gt;&lt;/strong&gt;Las iteraciones nos permiten controlar mejor las desviaciones, reduciendo el impacto de los errores en las estimaciones y crear un mecanismo de retroalimentación sobre los planes del proyecto.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Implicación de los interesados        &lt;br /&gt;&lt;/strong&gt;Los patrocinadores (clientes, usuarios, dirección…) pueden observar los resultados más rápidamente (cumpliendo así con la visibilidad, requisito fundamental de cualquier desarrollo) y así aportar mayor compromiso, implicación y financiación.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Aprendizaje continuo&lt;/strong&gt;       &lt;br /&gt;Todos los actores del proyecto aprenden en cada iteración. Los miembros del equipo adquieren conocimiento funcional y aportan mejoras desde la prospectiva tecnológica y los funcionales comprenden las implicaciones de automatizar los procesos empresariales. Todos aportan y el proyecto crece rápido y mejora. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Ya tenemos un conjunto de argumentos para convencer a los stakeholders más peleones acerca de las bondades de trabajar en pequeñas iteraciones, ahora el que quiera entender que entienda…&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=153856" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Metodolog_26002300_237_3B00_a/default.aspx">Metodolog&amp;#237;a</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/_26002300_193_3B00_gil/default.aspx">&amp;#193;gil</category></item><item><title>Reflexión "reposada" sobre las metodologías ágiles</title><link>http://geeks.ms/blogs/aarroyo/archive/2009/08/05/reflexi-243-n-reposada-sobre-las-metodolog-237-as-225-giles.aspx</link><pubDate>Wed, 05 Aug 2009 08:04:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:153612</guid><dc:creator>Andoni Arroyo</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/aarroyo/rsscomments.aspx?PostID=153612</wfw:commentRss><comments>http://geeks.ms/blogs/aarroyo/archive/2009/08/05/reflexi-243-n-reposada-sobre-las-metodolog-237-as-225-giles.aspx#comments</comments><description>&lt;p&gt;A lo largo de los a&amp;ntilde;os de experiencia que tengo en el sector de la inform&amp;aacute;tica he visto pasar muchas tendencias de largo. Algunas eran buenas ideas mal planteadas, (otras malas directamente) que simplemente no consiguen hacerse un hueco en la comunidad de &lt;a target="_blank" href="http://es.wikipedia.org/wiki/Stakeholder"&gt;stakeholders&lt;/a&gt;&lt;em&gt;&lt;/em&gt; implicados. &lt;br /&gt;&lt;br /&gt;En ocasiones han fracasado porque cargaban la balanza de un &amp;uacute;nico lado dejando fuera a la otra parte del negocio. Nos guste o no, estamos obligados a entendernos puesto que en esto que este &lt;strong&gt;negocio&lt;/strong&gt; &lt;strong&gt;de la inform&amp;aacute;tica&lt;/strong&gt; tan importante es vender como desarrollar. Como una de las dos partes de la ecuaci&amp;oacute;n se sienta fuera del juego nunca una metodolog&amp;iacute;a podr&amp;aacute; cuajar a alto nivel.&lt;/p&gt;
&lt;p&gt;Hace ya un tiempo que estamos oyendo hablar de las &lt;a target="_blank" href="http://es.wikipedia.org/wiki/Metodolog%C3%ADas_%C3%A1giles"&gt;metodolog&amp;iacute;as &amp;aacute;giles&lt;/a&gt; y con la perspectiva que nos da el tiempo, podemos decir que estas tienen alg&amp;uacute;n que otro as en la manga que las pueden hacer triunfar donde otras fracasaron. (Es verdad que la cosa es m&amp;aacute;s f&amp;aacute;cil cuando el vecino ya se ha pelado la barba&amp;hellip;)&lt;/p&gt;
&lt;p&gt;Podemos decir que las cosas est&amp;aacute;n cambiando y m&amp;aacute;s r&amp;aacute;pido de lo esperado. &lt;br /&gt;&lt;br /&gt;Poco a poco, el sector del desarrollo del software se va haciendo un hombrecito. Desde luego este proceso no se ha pospuesto por falta de esfuerzos. La industria, cual madre concienciada, haciendo palanca a trav&amp;eacute;s de la &lt;a target="_blank" href="http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software"&gt;Ingenier&amp;iacute;a del Software&lt;/a&gt; ha intentado estandarizar de muchas maneras el &amp;ldquo;art&amp;iacute;stico&amp;rdquo; proceso de crear software. Algunos de estos intentos han sido m&amp;aacute;s forzados que otras (&lt;a target="_blank" href="http://es.wikipedia.org/wiki/Lenguaje_Unificado_de_Modelado"&gt;UML&lt;/a&gt;, &lt;a target="_blank" href="http://es.wikipedia.org/wiki/CMMI"&gt;CMMI&lt;/a&gt;, M&amp;eacute;tricas de calidad&amp;hellip; ), pero casi todos, por diversos motivos, han demostrado la misma poca efectividad. (Por cierto el &lt;a target="_blank" href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx"&gt;VS2010&lt;/a&gt; incluye soporte para los 6 documentos principales de UML!!) &lt;br /&gt;&lt;br /&gt;Dichos intentos &amp;ldquo;encauzadores&amp;rdquo; de mam&amp;aacute; industria han quedado a medio camino por la misma raz&amp;oacute;n, part&amp;iacute;an de un &lt;strong&gt;axioma equivocado&lt;/strong&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Todas las metodolog&amp;iacute;as predictivas asumen el resultado del proceso de an&amp;aacute;lisis y dise&amp;ntilde;o como verdades inmutables que constituyen los cimientos sobre los que edificar el resto del proyecto.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Centrando sus esfuerzos en conseguir un terreno firme en el que apoyarse, la realidad, obstinada, nos demuestra que realmente lo hac&amp;iacute;an sobre arenas movedizas. No por que el resultado de tales esfuerzos estuviera mal hecho&amp;nbsp; (existen toneladas de documentaci&amp;oacute;n sobre como optimizar el proceso de toma de requisitos&amp;hellip;) sino por simplificar en exceso el contexto (desestimando el factor cambiante) de cualquier proyecto de Software. &lt;br /&gt;&lt;br /&gt;&amp;iquest;Cuantas veces nos ha ocurrido al terminar un proyecto que si lo volvi&amp;eacute;semos a empezar lo atacar&amp;iacute;amos de otra forma&amp;hellip;? En relaci&amp;oacute;n a otras ciencias (y entornos productivo-econ&amp;oacute;micos) el desarrollo de software avanza muy r&amp;aacute;pido oblig&amp;aacute;ndonos a descartar metodolog&amp;iacute;as de &amp;eacute;xito en otros &amp;aacute;mbitos por la naturaleza de nuestro negocio. &lt;br /&gt;&lt;br /&gt;Alcanzar esta velocidad de crucero implica que hay mucho que mejorar y obliga al sector a reinventarse continuamente. La tecnolog&amp;iacute;a, los modelos de negocio, el alcance de la funcionalidad de las aplicaciones, la automatizaci&amp;oacute;n de procesos, la integraci&amp;oacute;n y orquestaci&amp;oacute;n de unidades de negocio&amp;hellip; todo est&amp;aacute; en ebullici&amp;oacute;n. Como todos sabemos, &lt;strong&gt;no se puede estandarizar lo que no deja de cambiar&lt;/strong&gt;, por lo que los intentos realizados se han ido quedando anticuados antes de alcanzar su madurez. &lt;br /&gt;&lt;br /&gt;Pero en ese reinventarse ha cambiado la perspectiva&amp;hellip; &lt;br /&gt;&lt;br /&gt;Un buen d&amp;iacute;a nos damos cuenta de que estamos peleando contra la realidad. Nos liberamos y dejemos de atacar y evitar el cambio como un enemigo. Es una actitud provocada por el &lt;strong&gt;convencimiento que surge desde dentro&lt;/strong&gt; de que no hay otra opci&amp;oacute;n. Debemos asumir (cuanto antes mejor) el cambio como algo que est&amp;aacute; ah&amp;iacute;, nos guste o no, no podemos evitarlo. &amp;iexcl;&amp;iexcl;Todo cambia!! &lt;br /&gt;&lt;br /&gt;En las metodolog&amp;iacute;as predictivas se destinan gran parte de los recursos a ser capaz de predecir lo que se va a desarrollar en los pr&amp;oacute;ximos a&amp;ntilde;os. Por muy concienzudo que sea dicho estudio, el contexto var&amp;iacute;a, las necesidades del cliente cambian, surgen nuevas oportunidades y riesgos. El que mayor capacidad de cambio demuestre, contar&amp;aacute; con una ventaja competitiva significativa. &lt;br /&gt;&lt;br /&gt;Por lo tanto, permitir que nuestro cliente marque el siguiente paso a dar (o mejor dicho, pasito&amp;hellip;) nos permite alinear el camino a recorrer con las necesidades del cliente que sobre la marcha surjan, aportando un mayor valor al software y satisfacci&amp;oacute;n al cliente, que es (o deber&amp;iacute;a ser) nuestro objetivo.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=153612" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Metodolog_26002300_237_3B00_a/default.aspx">Metodolog&amp;#237;a</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/_26002300_193_3B00_gil/default.aspx">&amp;#193;gil</category></item><item><title>8 maneras de cargarte la metodología de un plumazo!!</title><link>http://geeks.ms/blogs/aarroyo/archive/2009/07/23/8-maneras-de-cargarte-la-metodolog-237-a-de-un-plumazo.aspx</link><pubDate>Thu, 23 Jul 2009 08:02:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:152891</guid><dc:creator>Andoni Arroyo</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/aarroyo/rsscomments.aspx?PostID=152891</wfw:commentRss><comments>http://geeks.ms/blogs/aarroyo/archive/2009/07/23/8-maneras-de-cargarte-la-metodolog-237-a-de-un-plumazo.aspx#comments</comments><description>&lt;p&gt;No es f&amp;aacute;cil implantar una manera com&amp;uacute;n de desarrollar proyectos de Software. Cada maestrillo tiene su librillo y no siempre nos es f&amp;aacute;cil adaptarnos al m&amp;iacute;nimo com&amp;uacute;n necesario para trabajar en equipo de manera orquestada. &lt;br /&gt;&lt;br /&gt;Por contra, lo que s&amp;iacute; que es realmente f&amp;aacute;cil , es dinamitar el camino andado. Hace falta muy poco para saltarse alguna que otra regla y echar abajo lo ganado con tanto esfuerzo. Existen algunos puntos claves en los que los equipos somos especialmente propensos a ceder, veamos algunos&amp;hellip; &lt;br /&gt;&lt;br /&gt;(*Hablando en &lt;a title="SCRUM" href="http://en.wikipedia.org/wiki/Scrum_(development)" target="_blank"&gt;SCRUM&lt;/a&gt;)&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;No preparar suficiente &lt;/strong&gt;&lt;strong&gt;Product Backlog&lt;/strong&gt;&lt;strong&gt; para que el equipo adquiera prespectiva del proyecto. &lt;br /&gt;&lt;/strong&gt;Aunque parezca mentira a los desarrolladores nos gusta saber qu&amp;eacute; leches estamos programando. De hecho las mejores propuestas de mejora de las aplicaciones surgen, al menos en las primeras fases del proyecto, del propio equipo de desarrollo. Para poder aprovechar toda esa energ&amp;iacute;a/sinergia los desarrolladores deben poder hacerse una idea global del proyecto. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No profundizar lo suficiente el el Sprint Planning Meeting por cansancio o falta de concrecci&amp;oacute;n en la exposici&amp;oacute;n del Product Owner. &lt;br /&gt;&lt;/strong&gt;La reuni&amp;oacute;n previa en cada sprint permite al equipo hacerse una idea lo m&amp;aacute;s concreta posible de las funcionalidades que m&amp;aacute;s valor aportan al proyecto. Nos permite alinearnos con las necesidades del cliente de tal forma que todos aunemos esfuerzos en la misma direcci&amp;oacute;n. Tambi&amp;eacute;n permite mitigar los riesgos e identificar sorpresar antes de asumir un compromiso. Un buen h&amp;aacute;bito que no siempre se realiza es el de poner una meta al sprint ( por ejemplo &amp;ldquo;Disponer del sistema de automatizaci&amp;oacute;n de informes&amp;rdquo; ) que identifique la situaci&amp;oacute;n ideal al final del mismo y ayude al desarrollador a responder preguntas que le &amp;ldquo;tienten&amp;rdquo; por el camino. (&amp;iquest;Es esto importante para la meta del sprint?) &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Falta sistem&amp;aacute;ticamente al Daily Scrum o no respetar sin aviso las pocas liturgias que especifica SCRUM. &lt;br /&gt;&lt;/strong&gt;Una de las caracter&amp;iacute;sticas que hace a SCRUM &amp;ldquo;medio&amp;rdquo; bala de plata tan demandada por los desarrolladores, es las pocas imposiciones que propone. De &amp;eacute;stas, una de las m&amp;aacute;s importantes, es la de realizar una peque&amp;ntilde;a reuni&amp;oacute;n diaria en al que cada miembro del equipo explica que ha hecho el d&amp;iacute;a anterior, que impedimentos se ha encontrado y que pretende hacer en el mismo d&amp;iacute;a de la reuni&amp;oacute;n. Este Daily Scrum es el que da jab&amp;oacute;n al equipo y permite que todo el mundo este al d&amp;iacute;a del avance, evitar duplicar batallas&amp;hellip; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estancar conocimiento asumiendo un mismo desarrollador todas las Sprint Backlog Item&amp;nbsp;de un Product Backlog Item. &lt;br /&gt;&lt;/strong&gt;Es importante que nadie sea imprescindible. Que todos los miembros del equipo desarrollen tareas de todos los Product Backlog Items permite evitar que se creen &amp;ldquo;&lt;a title="Reinos de Taifas" href="http://es.wikipedia.org/wiki/Taifa" target="_blank"&gt;Reinos de Taifas&lt;/a&gt;&amp;rdquo; y estandariza el c&amp;oacute;digo. Adem&amp;aacute;s los equipos de desarrollo con un poco de verguenza torera se igualan por el mejor, lo que permite que se produzca aprendizaje por el camino, mejorando la calidad final del proyecto. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inventarse tareas sobre la marcha o modificar las existentes bajo demanda. &lt;br /&gt;&lt;/strong&gt;Cuando un equipo de SCRUM asume un compromiso con el cliente a trav&amp;eacute;s de un sprint, dicho compromiso es inmutable por ambas partes. Es por esto que los sprints son tan cortos, para permitir reorientar el proyecto entre sprints. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intentar esconder las desviaciones o sufrir el &amp;ldquo;sindrome del investigador&amp;ldquo;. &lt;br /&gt;&lt;/strong&gt;Si existen desviaciones, lo mejor es saberlo y ser consciente de las causas que las han provocado. En la mayor&amp;iacute;a de ocasiones dichas desviaciones se pueden justificar y son el argumento principal para mejorar los procesos del equipo. Otro de los aspectos que debe afrontar cualquier metodolog&amp;iacute;a es lograr una adecuada visibilidad. Esta caracter&amp;iacute;stica es la que debe permitir permite que los StakeHolders conocozcan la situaci&amp;oacute;n del proyecto. Adoptar una visibilidad adecuada permite detectar las desviacioes de manera temprana as&amp;iacute; como planificar las acciones orientadas a corregirlas. Como equipo debemos ser capaces de justificarlas y transmitir los motivos a los StakeHolders adecuados, as&amp;iacute; como las acciones y planes creados. Suele ser un buen h&amp;aacute;bito, especificar a nivel de Product Backlog Item las condiciones de aceptaci&amp;oacute;n, en las cuales se especifican las poscondicones necesarias para que una historia pueda darse por terminada. Por supuesto, deben cumplirse todas para que se pueda dar por finalizada. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No retroalimentar Sprint Backlog Items despu&amp;eacute;s de realizarlos.&lt;/strong&gt; &lt;br /&gt;Es verdad que siempre vamos con prisa, que existen muchas tareas y todas las excusas que quieras poner, pero para poder decir &amp;ldquo;Hecho&amp;rdquo; (y hecho es hecho!!) cada desarrollador debe actualizar como parte de la tarea el estado de los Sprint Backlog Items asociados. Mantener al d&amp;iacute;a dicha informaci&amp;oacute;n nos permite, analizar las desviaciones y observar la tendencia del sprint y el producto. Colateralmente nos ayuda a ganar y mantener la visibilidad del proyecto manteniendo a los diferentes StakeHolder lo m&amp;aacute;s al d&amp;iacute;a posible. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evitar las Sprint Retrospective o demostrar falta de compromiso.&lt;/strong&gt; &lt;br /&gt;En SCRUM la uni&amp;oacute;n y el compromiso del equipo es clave puesto que todos los miembre del mismo interactuan ampliamente con los dem&amp;aacute;s. El Sprint Retrosprective es la liturgia clave para recibir feedback del mismo y aumentar la uni&amp;oacute;n y sentimiento de grupo. Estas reuniones pueden mejorar mucho los procesos afinando el d&amp;iacute;a a d&amp;iacute;a del equipo, identificando los posibles cuellos de botella y planificando como evitarlos. &lt;br /&gt;Como siempre, la clave es la constancia, no ceder al desaliento y aplicar las t&amp;eacute;cnicas espartanas de confianza en tus compa&amp;ntilde;eros de equipo. Solo as&amp;iacute; se puede lograr el &amp;ldquo;milagro&amp;rdquo; de echar a andar y mantener una forma de trabajo metodol&amp;oacute;gica.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Como siempre, la clave es la constancia, no ceder al desaliento y aplicar las t&amp;eacute;cnicas espartanas de confianza en tus compa&amp;ntilde;eros de equipo. Solo as&amp;iacute; se puede lograr el &amp;ldquo;milagro&amp;rdquo; de echar a andar y mantener una forma de trabajo metodol&amp;oacute;gica.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=152891" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Metodolog_26002300_237_3B00_a/default.aspx">Metodolog&amp;#237;a</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Inform_26002300_225_3B00_tica/default.aspx">Inform&amp;#225;tica</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/SCRUM/default.aspx">SCRUM</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/_26002300_193_3B00_gil/default.aspx">&amp;#193;gil</category></item><item><title>Como incluir un fichero en el resultado de una prueba unitaria en Visual Studio 2008</title><link>http://geeks.ms/blogs/aarroyo/archive/2009/07/22/como-incluir-un-fichero-en-el-resultado-de-una-prueba-unitaria-en-visual-studio-2008.aspx</link><pubDate>Wed, 22 Jul 2009 15:28:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:152845</guid><dc:creator>Andoni Arroyo</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/aarroyo/rsscomments.aspx?PostID=152845</wfw:commentRss><comments>http://geeks.ms/blogs/aarroyo/archive/2009/07/22/como-incluir-un-fichero-en-el-resultado-de-una-prueba-unitaria-en-visual-studio-2008.aspx#comments</comments><description>&lt;p&gt;
&lt;div&gt;Existen ocasiones en las que nos puede interesar que una prueba unitaria incluya un determinado recurso. Esto ocurre cuando el c&amp;oacute;digo que deseamos testear cuenta con la existencia , por ejemplo, de un determinado fichero de texto, una hoja de c&amp;aacute;lculo o una Service-based Database (.mdf)&lt;br /&gt;&lt;br /&gt;Como sabeis, el resultado del proceso de test genera una nueva carpeta (&lt;strong&gt;&lt;em&gt;TestResults&lt;/em&gt;&lt;/strong&gt;) donde incluye el resultado de cada generaci&amp;oacute;n. Si dicho resultado cuenta con una referencia relativa (la mejor manera de hacerlo) hacia un recurso pues ya la tenemos liada...&lt;br /&gt;&lt;br /&gt;Pero como siempre (o casi) la soluci&amp;oacute;n es m&amp;aacute;s facil de lo que parece. Existe un decorador especialmente creado para esta necesidad. Basta con colocar sobre el m&amp;eacute;todo que deseamos incluya el recurso el item de despliegue de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;color:#660000;font-size:x-small;"&gt;[TestMethod()]&lt;br /&gt;[DeploymentItem(@&amp;quot;.\fichero.xls&amp;quot;)]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;color:#660000;font-size:x-small;"&gt;public int EjemploTest()&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;color:#660000;font-size:x-small;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;color:#660000;font-size:x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#660000;"&gt;&lt;span style="color:#000000;"&gt;(.\ si est&amp;aacute; en la raiz claro...)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;color:#660000;font-size:x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;Por supuesto los m&amp;aacute;s inquietos ya se estan preguntando como evitar tener que incluir este decorador en todos los m&amp;eacute;todos (especialmente interesante si se trata de una Service-based Database (mdf)).&lt;br /&gt;&lt;br /&gt;Pues para esto tambi&amp;eacute;n existe una facil soluci&amp;oacute;n. Basta con incluir el recurso en el fichero&lt;em&gt;&lt;strong&gt;LocalTestRun.testrunconfig&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;dentro del elemento&amp;nbsp;&lt;strong&gt;&lt;em&gt;Deployment&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;con la siguiente sintaxis:&lt;/span&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;\[Nombre del proyecto]\[Nombre del recurso]&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;y ya podemos quitar el decorador.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;div&gt;Por cierto, si deseais incluir un fichero&amp;nbsp;Service-based Database (mdf) en una prueba unitaria y referenciarlo con una cadena de conexi&amp;oacute;n del estilo:&amp;nbsp;&lt;span&gt;&amp;quot;..AttachDbFilename=|DataDirectory|..&amp;quot; necesitais t&lt;/span&gt;enerinstalado el SP1 de VisualStudio 2008. Sin este, la referencia se realiza directamente contra en .Net Framewok y no encontrar&amp;aacute; el recurso.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=152845" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Metodolog_26002300_237_3B00_a/default.aspx">Metodolog&amp;#237;a</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Inform_26002300_225_3B00_tica/default.aspx">Inform&amp;#225;tica</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/Pruebas+unitarias/default.aspx">Pruebas unitarias</category><category domain="http://geeks.ms/blogs/aarroyo/archive/tags/.NET/default.aspx">.NET</category></item></channel></rss>