<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7050479227006284496</id><updated>2012-03-19T10:01:48.526-07:00</updated><category term='Evento'/><category term='formación'/><category term='Microsoft'/><category term='MVC'/><category term='Acelerador'/><category term='Arquitectura'/><category term='gestión'/><category term='liderazgo'/><category term='ágil'/><category term='Programación'/><category term='SQLServer'/><category term='Ingenieria'/><category term='calidad'/><category term='Cascada'/><category term='Estimación'/><category term='ASP.NET'/><category term='Requisitos'/><category term='Desarrollo Software'/><category term='ITIL'/><category term='Estándares'/><category term='scrum'/><category term='gestión; recursos humanos'/><category term='Sharepoint'/><category term='usabilidad'/><category term='patrones'/><category term='metodología'/><category term='testing'/><category term='métricas'/><category term='pruebas'/><category term='CMMI'/><category term='humor'/><title type='text'>Calidad y Software</title><subtitle type='html'>El mundo del desarrollo de software, la ingeniería del software y la calidad.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>90</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-5246428928057999794</id><published>2012-03-17T12:48:00.001-07:00</published><updated>2012-03-17T12:50:42.523-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Cascada'/><title type='text'>Desarrollo en cascada (I)</title><content type='html'>Tenía yo este post ya desde hace tiempo atascado. Quería hablar del desarrollo en cascada desde el punto de vista de la experiencia, y compararlo con las metodologías más actuales.. Y por fin me pongo a ello. Ya había hablado de las ventajas y desventajas de las metodologías ágiles como SCRUM o XP, y me parecía injusto no ser ecuánime con el waterfall.&lt;br /&gt;&lt;br /&gt;Este post no le va a gustar a mucha gente. Está de moda el agilismo. Admitámoslo. Así que cualquier comentario que no defienda ciegamente SCRUM y no ataque despiadadamente a CMMi, metodologías tradicionales, desarrollo en cascada...causa desasosiego en las mentes que sólo ven blanco y negro. Pero el mundo no es blanco ni negro. &lt;br /&gt;&lt;br /&gt;En un artículo que he leído hacer poco, leo algo que yo ya hace años que vengo observando. Aproximadamente cada década surge una nueva "guerra de metodologías": &lt;br /&gt;&lt;ul&gt;&lt;li&gt;En los 70&amp;nbsp;desarrollo estructurado vs tradicional&lt;/li&gt;&lt;li&gt;En los 80 desarrollo dirigido por datos vs desarrollo tradicional&lt;/li&gt;&lt;li&gt;En los 90 desarrollo orientado a objetos&amp;nbsp;vs tradicional&lt;/li&gt;&lt;li&gt;En los 2000 el desarrollo ágil vs tradicional (algunos prefieren enfrentarlo a CMMi)&lt;/li&gt;&lt;/ul&gt;Pero claro, para los programadores más jóvenes, que no han desarrollado en los 80 ni en los 90, para ellos sólo existe algo "anterior". Ellos no han vivido las otras metodologías ni formas de trabajar. Algunos lo han estudiado en la universidad y se atreven a hablar de ello, pero no han sido conscientes, porque no lo han usado en su día a día (hablo de técnicas y metodologías de las llamadas "tradicionales").&lt;br /&gt;&lt;br /&gt;En un post anterior, ya hablamos de las desventajas de SCRUM y de las metodologías ágiles en general. ¿Que qué estoy diciendo? Pues que efectivamente, existen puntos débiles en estas técnicas, por el mero hecho de que se basan en suponer ciertas características y restricciones, lo cual supone a su vez un riesgo y debilidad para nuestro proyecto.&lt;br /&gt;&lt;br /&gt;Y ahora ¿qué? ¿A defender la obsoleta y moribunda técnica de desarrollo en cascada? Pues ni obsoleta ni moribunda, pero no hay porqué defenderla, sino entenderla en su contexto. En el desarrollo de software, echo de menos dejar de usar este tipo de abjetivos subjetivos por otros más profesionales como "apropiada para esto" o "inadecuada para lo otro". Y no me refiero al "depende" que muchos listillos de turno utilizan para intentar quedar bien, aunque no tengan ni puñetera idea de lo que hablan.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;¿En qué consiste la metodología en cascada?&lt;/strong&gt;&lt;br /&gt;Esta metodología propugna que cada fase del ciclo de vida (SDLC del inglés Software Development Life Cycle), no debe comenzar hasta que esté totalmente terminada la fase anterior. Por ejemplo, no empezaríamos a programar, hasta tener la fase anterior de diseño técnico completada. ¿Y cuándo estaría completada? Pues cuando esté completado el entregable final, en este caso, el documento de "Diseño Técnico".&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;¿Qué presupone la metodología en cascada?&lt;/strong&gt;&lt;br /&gt;Este tipo de desarrollo presupone que en cada fase debemos estar preparados para la fase siguiente, porque:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;El cliente quiere ver una documentación estable (tal vez no sea el cliente, sino una PMO que quiere coordinar varios proyectos que se producen a la vez).&lt;/li&gt;&lt;li&gt;Otros proveedores quieren también ver una documentación estable, porque han de interactuar con nuestro desarrollo, bien consumiendo servicios, o siendo proveedores de servicios que consumimos nosotros, y por tanto, han de conocer nuestras necesidades (por escrito, claro, porque las palabras se las lleva el viento).&lt;/li&gt;&lt;li&gt;Tenemos equipos bien diferenciados: los analistas funcionales son expertos en ese tema, tienen un coste alto, y por tanto, han de "usarse" al máximo en las fases donde su labor tiene máxima necesidad: en la toma de requisitos y análisis. Posteriormente, pasaremos a utilizar otro tipo de perfiles diferenciados, los analistas técnicos o diseñadores técnicos, especializados en aterrizar los análisis funcionales en un documento técnico. Finalmente, los programadores, especializados en seguir un documento técnico bien preparado, construyen el código....y así hasta el final.&lt;/li&gt;&lt;li&gt;La metodología en cascada presupone también que los cambios son costosos, por lo que hay que definir al máximo la solución al principio. Un cambio se comporta como un bug: aleja a la solución final del objetivo deseado. Es por ello, que cuanto antes se identifiquen, mejor.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;¿Cuál fue el origen de la metodología en cascada? La causa&lt;/strong&gt;&lt;br /&gt;Todo lo dicho en el apartado anterior, hizo que en los años 90 sobre todo, la forma de trabajo de las factorías de software y las consultoras, provocara que la especialización por un lado, y el hecho de contar con personal poco experimentado por otro, esta técnica fuera necesaria y efectiva. Ojo cuando digo efectiva, porque aquí de nuevo se tirarán de los pelos los que solo ven agilismo: los proyectos de software siempre han fallado. Lo que digo no es que esta técnica fuera perfecta, sino que para las condiciones existentes, era muy adecuada. El "poder", la iniciativa, no estaba en los programadores. Los programadores iban y venían en los equipos. Era normal tener equipos de 10 personas al inicio del proyecto, y que muy pocos de ellos llegaran a ver el final del proyecto. La rotación era muy alta.&lt;br /&gt;&lt;br /&gt;Y hasta aquí la primera parte. Vemos el origen. Pero ¿qué falló? ¿Porqué la metodología waterfall nos llevó a hacer proyectos con retrasos y poca calidad? Eso lo veremos en el siguiente post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-5246428928057999794?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/5246428928057999794/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/desarrollo-en-cascada.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5246428928057999794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5246428928057999794'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/desarrollo-en-cascada.html' title='Desarrollo en cascada (I)'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-5778145223449586600</id><published>2012-03-14T03:54:00.002-07:00</published><updated>2012-03-14T13:51:01.509-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='Evento'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Evento Microsoft - Aplicar DI en MVC (23-03-2012)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/--wZjpqvtiMk/T2EEqYqEMTI/AAAAAAAAAKQ/tsSWb0wBHss/s1600/MSEvents.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/--wZjpqvtiMk/T2EEqYqEMTI/AAAAAAAAAKQ/tsSWb0wBHss/s1600/MSEvents.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Para los que no lo sepan, DI son las siglas en inglés de Dependency Injection (Inyección de Dependencias). El próximo 23 de Abril, tendrá lugar un interesante evento (online y gratuito), donde se explicará en detalle en qué consiste DI, y cómo usarlo en proyectos MVC.&lt;br /&gt;&lt;br /&gt;El link de registro y más información:&lt;br /&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032508692&amp;amp;Culture=es-ES" title="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032508692&amp;amp;Culture=es-ES"&gt;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032508692&amp;amp;Culture=es-ES&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-5778145223449586600?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/5778145223449586600/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/evento-microsoft-aplicar-di-en-mvc.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5778145223449586600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5778145223449586600'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/evento-microsoft-aplicar-di-en-mvc.html' title='Evento Microsoft - Aplicar DI en MVC (23-03-2012)'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/--wZjpqvtiMk/T2EEqYqEMTI/AAAAAAAAAKQ/tsSWb0wBHss/s72-c/MSEvents.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-949493491865944340</id><published>2012-03-13T06:54:00.003-07:00</published><updated>2012-03-14T14:05:13.812-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Evento'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Evento Sharepoint (14-03-2011)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-vJGpk3znmrM/T19Rdyo12aI/AAAAAAAAAKI/LNLVI0uxipI/s1600/MSEvents.jpg" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img aea="true" border="0" src="http://4.bp.blogspot.com/-vJGpk3znmrM/T19Rdyo12aI/AAAAAAAAAKI/LNLVI0uxipI/s1600/MSEvents.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Este miércoles 14 de Marzo, tendrá lugar el evento online y gratuito: "CHARLA CON LOS EXPERTOS: TODO LO QUE SIEMPRE QUISISTE SABER SOBRE SHAREPOINT, PERO NO TE ATREVISTE A PREGUNTAR". Son 90 minutos, y comenzará a las 16h (GMT+1).&lt;br /&gt;Es un buen momento para actualizar conocimientos en Sharepoint, o si os sentís con ánimos, lanzar dudas técnicas para que los mayores expertos en Sharepoint de habla hispana os puedan ofrecer soluciones.&lt;br /&gt;&lt;br /&gt;Daros prisa, que se acaba el tiempo. El link de registro para este evento es:&lt;br /&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?culture=en-US&amp;amp;eventid=1032506778&amp;amp;flag=1"&gt;https://msevents.microsoft.com/CUI/EventDetail.aspx?culture=en-US&amp;amp;eventid=1032506778&amp;amp;flag=1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-949493491865944340?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/949493491865944340/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/este-miercoles-14-de-marzo-tendra-lugar.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/949493491865944340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/949493491865944340'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/este-miercoles-14-de-marzo-tendra-lugar.html' title='Evento Sharepoint (14-03-2011)'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-vJGpk3znmrM/T19Rdyo12aI/AAAAAAAAAKI/LNLVI0uxipI/s72-c/MSEvents.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-1270178092927900850</id><published>2012-03-12T14:07:00.001-07:00</published><updated>2012-03-13T03:27:36.692-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gestión; recursos humanos'/><title type='text'>Cómo no hacer un currículum</title><content type='html'>&lt;span style="color: black; font-family: inherit; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;Vemos habitualmente currículums mal escritos, con información falsa, o alterada para dar una sensación de mayor experiencia y profesionalidad, de mayores éxitos de los logrados, etc.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;Seguidamente vamos a ver algunos de los "errores" más habituales en los CV. Pero antes, veamos uno de los peores:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;strong&gt;1. Desviar la atención&lt;/strong&gt;. Esta técnica permite, cuando no se tiene experiencia o éxitos que comentar, desviar la atención en un punto supuestamente positivo, pero que no aporta nada realmente. Por ejemplo: si no tenemos ningún logro o éxito significativo que comentar en nuestro actual empleo, pero hemos tenido una buena evaluación o hemos sido promocionados de categoría, hay quien lo pone en el currículum, lo magnifica, y oculta de este modo la atención sobre otros elementos que podrían disminuir la buena impresión global.&amp;nbsp;Es normal que un recién licenciado, ante la falta de otra información adicional, diga: "saqué matrícula de honor en el proyecto de carrera", o que diga las notas o hitos principales en su titulación. Vale, es normal, no tiene otra cosa de qué hablar. Lo que no es tan normal, es que gente que promulga experiencia&amp;nbsp;y saber hacer,&amp;nbsp;a la hora de la verdad&amp;nbsp;ponga en el currículum este tipo de frases que contradicen dicha experiencia y saber hacer.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;Viendo los currículums de gente con falsa experiencia, se suele encontrar frases como:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;"Experiencia multidisciplinar". Vale, la palabra suena bien, pero no me dice nada sin el matiz apropiado.&lt;/span&gt;&lt;/li&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Conocimiento y ¿experiencia? en diversas tecnologías y lenguajes de programación (por supuesto, siempre tratando de dar pocos detalles al respecto, y siempre de forma vaga respecto a los proyectos y a los períodos de aplicación). A ver señores, en nuestra vida laboral, y llevo en esto más de 15 años, no manejaremos más allá de 4 o 5 lenguajes principales. El resto, por supuesto que hemos estudiado, o usado puntualmente docenas de lenguajes. Pero el uso puntual no da el conocimiento, y la experiencia en los lenguajes se pierde&amp;nbsp;en pocos años.&lt;/span&gt;&lt;/li&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Buenas evaluaciones de rendimiento recibidas en la empresa. ¿!!! Sí, bueno, claro que alguno de mis antiguos jefes me alabó, me subió el sueldo, o me subió de categoría (normalmente no todo a la vez)...¡pero no lo digo en el currículum! Mi profesionalidad no se mide por las subidas salariales que he recibido, sino por los retos superados (aunque es un reto que te suban el sueldo, creo que no estamos hablando de eso).&lt;/span&gt;&lt;/li&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Han llevado equipos de más de&amp;nbsp;20 personas ¿? Bueno, sí, una vez llegaron a estar&amp;nbsp;20 personas contando al fontanero, la secretaria, y la de la limpieza. Quizás han contado a todos los que han pasado por el proyecto, pero nunca estuvieron todos de forma coincidente. Pero sería más exacto decir de 3 a&amp;nbsp;20 personas, o usar la media del período. Incluso he visto gente de proyectos SCRUM con jerarquía nula, hablar de que han llevado "N" personas...¿pero llevar qué de qué? ¿Pues no era SCRUM? ¿No erais todos los del proyecto "iguales"? Seguro que si revisamos el currículum de los 20 del proyecto,&amp;nbsp;resultará que todos han sido los jefes de los otros 19!!&lt;/span&gt;&lt;/li&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/ul&gt;Por supuesto que todo ayuda, pero no puede este tipo de información ser nuestra principal identidad. &lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: inherit; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;A mí todo esto me da una sensación horrible. Un currículum no puede estar tan vacío.&amp;nbsp;Se supone que habla de nosotros. Y si lo mejor que podemos decir de nuestra profesionalidad es que nuestro jefe nos hizo una revisión anual positiva...o que nos subió muchas veces el sueldo...pues cásate con tu jefe!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: inherit; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;En serio, debemos siempre hablar de:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;&lt;strong&gt;Éxitos&lt;/strong&gt;. Pero éxitos tangibles: logré "x" mediante "y". Ejemplo: puesta en el mercado de una nueva aplicación desarrollada por nosotros mismos (o explicitar nuestro papel en su desarrollo),&amp;nbsp; logrando una cuota de mercado "X", o logrando como clientes a los "TOP" del sector. O: desarrollo e implantación de una solución de xxxx que logró estar en el mercado durante casi 10 años y tener más de 20 grandes clientes del sector.&lt;/span&gt;&lt;/li&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;&lt;strong&gt;Formación&lt;/strong&gt;: certificados relativos al puesto que estamos, o al que queremos optar. Si somos analistas funcionales, a buenas horas me va a servir un certificado de programación. Claro que está bien, y aporta, pero si veo a un jefe de proyecto obteniendo certificados de programación, voy a tener serias dudas de si realmente ejerce como jefe de proyecto. Del mismo modo que si yo veo a un analista recién certificado o con cursos de ITIL, CMMi, PMBOK, etc., voy a pensar que en realidad, ejerce de jefe de proyecto (o que se prepara para dicho cargo, lo cual es loable).&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style="color: black; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;&lt;span style="font-family: inherit;"&gt;Continuemos con&amp;nbsp;mentiras&amp;nbsp;habituales en los currículums (fuente: &lt;/span&gt;&lt;a href="http://www.aclantis.com/las-mentiras-mas-comunes-en-los-curriculum-vitae-imp16142.html" target="_blank"&gt;&lt;span style="font-family: inherit;"&gt;link&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: inherit;"&gt;):&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="color: black; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;&lt;strong&gt;2. Estudios no realizados&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: black; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;. Dos de cada diez españoles han declarado que han falseado su nivel de estudios en su currículum. Se pretende con ello ganar puntos ante el seleccionador. Es una de las mentiras más fáciles de detectar, porque lo normal es que se soliciten los diplomas y certificados que correspondan a la formación declarada. Una de las más frecuentes es asegurar ser un experto en un determinado programa informático sin serlo. Se trata de un grave error ya que se quedará en evidencia al comenzar a trabajar y tener que manejar dicho programa.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;&lt;span style="color: black; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;3. Mentir en el dominio de idiomas&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;. También es habitual indicar que se tienen conocimientos de idiomas que en realidad se desconocen. O bien poseer un nivel más elevado del que se tiene. En este caso, es inútil indicar tener más nivel del real, pues lo habitual es que, para chequearlo, el entrevistador se dirija al candidato hablando en el idioma que dice conocer. Además, hay que tener en cuenta que muchas empresas suelen hacer pruebas de nivel para verificar dichos conocimientos. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;&lt;span style="color: black; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;4. Exagerar las funciones anteriores&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;. El 43% de los españoles añade en su currículum vítae más responsabilidades de las que ha asumido en sus anteriores empleos. Un ejemplo: alguien que ha trabajado como vendedor, pero que asegura haber sido responsable de equipo o director comercial de una determinada empresa. En este sentido, hay quien exagera también los años de experiencia ejercidos en una determinada función. Un ejemplo de ello puede ser asegurar que se ha trabajado en una empresa durante varios años cuando en realidad sólo fueron 15 días.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: black; font-family: inherit; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;5. Empresas en las que nunca se ha trabajado&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;&lt;span style="font-family: inherit;"&gt;. Un 18% de candidatos miente acerca de las empresas para las que ha trabajado. Según el estudio de CareerBuilder, se han dado casos de candidatos que han mentido diciendo haber trabajado en una determinada empresa sin saber que quien le entrevistaba fue director de la misma. También, con el fin de engordar el currículum, hay quien declara haber trabajado en empresas que no existen. Son más difíciles de detectar las mentiras cuando las empresas en las que se dice haber trabajado han desaparecido.&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si has llegado hasta aquí, te habrás dado cuenta que seguramente tú también has hecho algo de esto alguna vez. ¿Y? Pues nada. Esto son malas prácticas, pero no significa que cada cual lo vea justificado para un fin. Desde luego, que por traer el pan a sus hijos, la gente está dispuesta a todo. Y más con los tiempos que corren. Seguro que a vosotros se os ocurren, o habéis visto más malas prácticas como estas. El problema, simplemente reside en que los currículums se usan de modo comparativo. Y como tantas cosas en esta vida, los honestos, los experimentados, están en desventaja.&lt;br /&gt;&lt;br /&gt;De todas formas, se puede dar la vuelta: se pueden usar estas ideas, de forma sutil, para destacar auténticas buenas prácticas y experiencias, auténticos hitos y logros personales, para un buen currículum. Y ese era al final, el objetivo de este post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-1270178092927900850?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/1270178092927900850/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/como-no-hacer-un-curriculum.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/1270178092927900850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/1270178092927900850'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/como-no-hacer-un-curriculum.html' title='Cómo no hacer un currículum'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-8316079884582372419</id><published>2012-03-08T00:39:00.001-08:00</published><updated>2012-03-08T00:39:59.732-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Arquitectura'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>Top Mantra de los Arquitectos (II)</title><content type='html'>Este artículo es el segundo de una serie de dos. Para ver el anterior, clic &lt;a href="http://calidadysoftware.blogspot.com/2011/12/top-mantra-de-los-arquitectos-i.html" target="_blank"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Tenía pendiente terminar este artículo que ya inicié hace algún tiempo. Vamos a ello. Estábamos hablando del Top 10 de los Mantras de un arquitecto de software. El post anterior repasaba los mantras del 1 al 5. Vamos a los números 6 al 10.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #38761d;"&gt;Mantra #6: ¿No estás en la capa de datos? Entonces no pongas SQL!&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Tal y como establece SoC (Separation of Concerns), intenta poner cada cosa en su sitio, sin mezclar. Pon el código de acceso a datos y los detalles como connection strings, bien lejos. Tarde o temprano, tendrás que ocuparte de ellos, pero considera por separado las lógicas de negocio y presentación de cara a la persistencia. Siempre que sea posible, delega la persistencia en una herramienta ORM.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #38761d;"&gt;Mantra #7: la mantenibilidad es lo primero&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;A pesar de que ya hablé en mi post sobre los mitos de la mantenibilidad, Dino Exposito tiene más razón que un santo al establecer que si hay que elegir un atributo para el software, como arquitectos, ha de ser la mantenibilidad, por encima de la escalabilidad, seguridad, rendimiento y testeabilidad. Si código y la arquitectura son mantenibles, el resto se puede conseguir más tarde (no así al contrario)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;strong&gt;Mantra #8: el input del usuario es pura maldad&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Tal y como comenta Dino en su libro, si existe una forma en que los usuarios hagan algo mal, encontrarán la forma de hacerlo. Si te suena esta afirmación a la ley de Murphy: SI, así es.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;strong&gt;Mantra #9: Optimización Post-Mortem&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Tal y como indica Dino (y estoy totalmente de acuerdo), empezar a diseñar un sistema con la optimización en mente es un error. Yo voy a ir un poco más allá: es un signo de inmadurez. Y me refiero a inmadurez profesional, a falta de experiencia. Tratar de que un sistema crezca siendo óptimo desde el principio es una buena forma de perder el foco de lo que realmente es importante. Es mucho más importante (ver mantra #7) que sea mantenible, ya que ante cualquier cambio, podemos optimizarlo. Un software muy optimizado desde el principio, seguramente no será mantenible y por tanto, ante cualquier cambio (que los habrá, no os preocupéis), dejará de ser óptimo. Y por desgracia, en esa situación, ya poco habrá que hacer.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;strong&gt;Mantra #10: La seguridad y testeabilidad, han de estar "por diseño".&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Aquí poco hay que decir. Es tan radicalmente cierto, que incluso hay un estándar de la International Organization for Standardization (ISO) que explícitamente, lo establece. Un sistema, por mantenible que sea, es muy complicado&amp;nbsp;(y por tanto caro)&amp;nbsp;que sea seguro a base de hacer cambios. Lo mismo la testeabilidad. Si no empiezas diseñando para que sea testeable, con sus pruebas unitarias, con la arquitectura adecuada...no podrás de repente implantar la testeabilidad.&lt;br /&gt;&lt;br /&gt;Y nada más. Que os recomiendo encarecidamente este libro. Es de los pocos, junto con&amp;nbsp;los del eterno Steve McConnell, que merecen la pena comprarse y leerse más de una vez. ¡Ah, y no me llevo comisión por decir esto, eh! Más info del libro:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #810000; font-family: Verdana; font-size: medium;"&gt;&lt;span style="color: #810000; font-family: Verdana; font-size: medium;"&gt;&lt;span style="color: #810000; font-family: Verdana; font-size: medium;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: xx-small;"&gt;&lt;span style="font-family: Verdana; font-size: xx-small;"&gt;&lt;div align="left"&gt;by Dino Esposito and Andrea Saltarello&lt;/div&gt;Microsoft Press. (c) 2009&lt;/span&gt;&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-fiOeo_tr2k0/T1hvyTUIIqI/AAAAAAAAAKA/DradsJSsZGM/s1600/Dino+Esposito.jpg" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-fiOeo_tr2k0/T1hvyTUIIqI/AAAAAAAAAKA/DradsJSsZGM/s200/Dino+Esposito.jpg" width="165" yda="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="left"&gt;Microsoft .NET: Architecting Applications for the Enterprise&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-8316079884582372419?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/8316079884582372419/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/top-mantra-de-los-arquitectos-ii.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8316079884582372419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8316079884582372419'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/top-mantra-de-los-arquitectos-ii.html' title='Top Mantra de los Arquitectos (II)'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-fiOeo_tr2k0/T1hvyTUIIqI/AAAAAAAAAKA/DradsJSsZGM/s72-c/Dino+Esposito.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-1949966945583553138</id><published>2012-03-07T13:09:00.001-08:00</published><updated>2012-03-07T13:13:41.999-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLServer'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>SQL Server 2012 ya está aquí</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-v7DjCdbe5GU/T1fPeUXe3qI/AAAAAAAAAJw/4L3oQ632M2o/s1600/SQLServer2012.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-v7DjCdbe5GU/T1fPeUXe3qI/AAAAAAAAAJw/4L3oQ632M2o/s1600/SQLServer2012.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Im-presionante. Sencillamente impresionante. Estoy ahora mismo viendo una de las presentaciones técnicas correspondientes al evento de lanzamiento de SQL Server 2012. Ésta en concreto (hay más de 30, para no aburrirse), trata de la nueva característica de ColumnStore Index.&lt;br /&gt;&lt;br /&gt;Se trata de una nueva técnica de almacenar los datos, facilitando la compresión, el acceso y la ejecución de consultas (incluso mediante paralelismo). Para no enrollarme (y así no perder el hilo de la señora), nos acaba de hacer una demo de una compleja Query: 1:29 segundos sin ColumnStore Index. Con esta característica activada...2 segundos!&lt;br /&gt;&lt;br /&gt;Además, los datos de compresión (volumen real de los datos en disco), están en casos reales entorno un ratio de entre 15:1 y 4:1&lt;br /&gt;&lt;br /&gt;¿Qué supone esto? BI más ágil. Menos esperas. &lt;br /&gt;&lt;br /&gt;¿Cuándo son más útiles los ColumnStore Index?&lt;br /&gt;a) Workload&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Principalmente lectura&lt;/li&gt;&lt;li&gt;Principalmente incorporación de datos nuevos&lt;/li&gt;&lt;li&gt;Star Join Queries&lt;/li&gt;&lt;li&gt;Consultas de agregación de grandes volúmenes de datos&lt;/li&gt;&lt;/ul&gt;b) Workflow&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Permite la partición para tratar nuevos datos&lt;/li&gt;&lt;li&gt;Caso típico: carga nocturna&lt;/li&gt;&lt;/ul&gt;c) Data selection&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Large fact tables&lt;/li&gt;&lt;li&gt;Large dimension tables&lt;/li&gt;&lt;/ul&gt;El tema es que cuanto mayores son las tablas a tratar, algo especialmente cierto en entornos BI, mayor es el beneficio obtenido de esta técnica.&lt;br /&gt;&lt;br /&gt;Best Practices: Crear un ColumnStore Index&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Incluir todas las columnas en el ColumnStore Index&lt;/li&gt;&lt;li&gt;Convertur los datos decimal/numeric a precisión &amp;lt;= 18&lt;/li&gt;&lt;li&gt;Usar integer donde sea posible&lt;/li&gt;&lt;li&gt;Grandes cantidades de memoria para crar el columnStore Index&lt;/li&gt;&lt;li&gt;Crear el ColumnStore Index a partir de un Clustered Index&lt;/li&gt;&lt;/ul&gt;Y bueno, ya vale. Ahora a digerir toda esta información!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-1949966945583553138?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/1949966945583553138/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/sql-server-2012-ya-esta-aqui.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/1949966945583553138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/1949966945583553138'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/sql-server-2012-ya-esta-aqui.html' title='SQL Server 2012 ya está aquí'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-v7DjCdbe5GU/T1fPeUXe3qI/AAAAAAAAAJw/4L3oQ632M2o/s72-c/SQLServer2012.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-8417018720953174478</id><published>2012-03-05T06:43:00.000-08:00</published><updated>2012-03-05T06:43:16.520-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Lanzamiento de SQL Server 2012</title><content type='html'>En un evento multitudinario, Microsoft va a presentar el próximo 7 de Marzo de 2012 su nuevo sistema de servidor de base de datos (SQL Server), en su encarnación 2012.&lt;br /&gt;&lt;br /&gt;Esta vez, y como ya empieza a ser habitual, Microsoft ha tirado por la ventana y ha apostado por una presentación por web:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Más de 30 eventos&lt;/li&gt;&lt;li&gt;Foros con expertos que darán respuestas a las dudas&lt;/li&gt;&lt;li&gt;Premios, que serán alcanzables mediante los puntos que se obtienen al participar en las diversas actividades que tendrán lugar.&lt;/li&gt;&lt;/ul&gt;Más información de los eventos, y página de registro, están disponibles desde cualquiera de los sitios internacionales/locales de Microsoft SQLServer. Uno de ellos (y en castellano):&lt;br /&gt;&lt;a href="http://www.sqlserverlaunch.com/LATAM/Home"&gt;http://www.sqlserverlaunch.com/LATAM/Home&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-8417018720953174478?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/8417018720953174478/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/lanzamiento-de-sql-server-2012.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8417018720953174478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8417018720953174478'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/lanzamiento-de-sql-server-2012.html' title='Lanzamiento de SQL Server 2012'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-3124051312721383990</id><published>2012-03-05T05:39:00.001-08:00</published><updated>2012-03-05T05:41:19.651-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Arquitectura'/><category scheme='http://www.blogger.com/atom/ns#' term='Estándares'/><title type='text'>AADL: un lenguaje de modelado para Arquitectos de Software</title><content type='html'>Hoy voy a hablar del &lt;strong&gt;AADL&lt;/strong&gt;, un lenguaje para nada nuevo, y que sin embargo es bastante poco conocido. Vamos a revisar algunas de sus características generales:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Existe como estándar internacional desde 2004.&lt;/li&gt;&lt;li&gt;Nació como lenguaje orientado a entornos de aviónica, pero actualmente su alcance es mucho más amplio.&lt;/li&gt;&lt;li&gt;Está promovido por el SEI&lt;/li&gt;&lt;li&gt;Pretende estandarizar en un lenguaje de modelado, el diseño de arquitecturas (hardware y software).&lt;/li&gt;&lt;li&gt;Nació para sistemas embebidos, por lo que admite hardware y software.&lt;/li&gt;&lt;li&gt;Es un lenguaje textual y gráfico.&lt;/li&gt;&lt;li&gt;Incluye&amp;nbsp;un formato de intercambio XML/XMI que permite interoperabilidad con herramientas del mercado&lt;/li&gt;&lt;li&gt;Dispone de una extensión para el modelado de sistemas resistentes/tolerantes a fallos.&lt;/li&gt;&lt;/ul&gt;Puede utilizarse para modelar:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sistemas empotrados, como arquitectura de sistema basada en componentes.&lt;/li&gt;&lt;li&gt;Las interacciones de los componentes mediante flujos, llamadas de servicio y de acceso compartido.&lt;/li&gt;&lt;li&gt;Ejecución de tareas, sincronización exacta de comunicaciones.&lt;/li&gt;&lt;li&gt;Plataformas de ejecución, application binding, modelos operativos y configuraciones tolerantes a fallos.&lt;/li&gt;&lt;/ul&gt;Hay muchos otros lenguajes de modelado, pero éste me ha parecido curioso y me apetecía echarle un vistazo y compartirlo.&lt;br /&gt;&lt;br /&gt;Ejemplo.&lt;br /&gt;A continuación, un ejemplo sacado de la página de AXLOG:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-y7JV3r6obCw/T1TCBWTR0qI/AAAAAAAAAJg/430rXoXVnVY/s1600/AADLconnexions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="144" src="http://3.bp.blogspot.com/-y7JV3r6obCw/T1TCBWTR0qI/AAAAAAAAAJg/430rXoXVnVY/s320/AADLconnexions.png" uda="true" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;system system1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;end system1;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;system implementation system1.impl&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;subcomponents&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;p1: process process1.impl;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;p2: process process2.impl;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;connections&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cn: data port p1.outport -&amp;gt; p2.inport;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;end system1.impl;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;process process1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;features&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;outport: out data port;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;end process1;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;process implementation process1.impl&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;subcomponents&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;t1: thread thread1.impl;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;connections&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cn: data port t1.outport -&amp;gt; outport;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;end process1.impl;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;process process2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;features&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;inport: in data port;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;end process2; process implementation process2.impl&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;subcomponents&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;t2: thread thread2.impl;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;connections&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cn: data port inport -&amp;gt; t2.inport;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;end process2.impl;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;thread thread1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;features&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;outport: out data port;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;end thread1;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;thread implementation thread1.impl&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;end thread1.impl;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;thread thread2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;features&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;inport: in data port;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;end thread2;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;thread implementation thread2.impl&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: x-small;"&gt;end thread2.impl;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Os dejo con unos enlaces en los que podréis ampliar información:&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Architecture_Analysis_%26_Design_Language"&gt;http://en.wikipedia.org/wiki/Architecture_Analysis_%26_Design_Language&lt;/a&gt;&amp;nbsp;(Nota: para ser Wikipedia, la verdad es que la información que da es bastante pobre a fecha 5 de Marzo de 2012)&lt;br /&gt;&lt;a href="http://www.sei.cmu.edu/dependability/tools/aadl/"&gt;http://www.sei.cmu.edu/dependability/tools/aadl/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.axlog.fr/aadl/presentation_en.html"&gt;http://www.axlog.fr/aadl/presentation_en.html&lt;/a&gt;&amp;nbsp;(este enlace sí que tiene bastante información, ya que AXLOG es una firma miembro del comité de estandarización de AADL).&lt;span a="undefined" c="4" closure_uid_39iq5r="157" id="result_box" lang="es"&gt;&lt;br closure_uid_39iq5r="149" /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-3124051312721383990?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/3124051312721383990/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/aadl-lenguaje-de-modelado-para.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/3124051312721383990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/3124051312721383990'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/aadl-lenguaje-de-modelado-para.html' title='AADL: un lenguaje de modelado para Arquitectos de Software'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-y7JV3r6obCw/T1TCBWTR0qI/AAAAAAAAAJg/430rXoXVnVY/s72-c/AADLconnexions.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-3384646430629125675</id><published>2012-03-04T09:18:00.002-08:00</published><updated>2012-03-04T11:41:02.500-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='Ingenieria'/><title type='text'>Excusitis: otra enfermedad del desarrollo de software</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-4lCElMIgkKA/T1PFJ_Gm-MI/AAAAAAAAAJY/iY2m4wROqRI/s1600/Dilbert-Las_excusas_del_ingeniero_y_la_letra_pequena.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-4lCElMIgkKA/T1PFJ_Gm-MI/AAAAAAAAAJY/iY2m4wROqRI/s400/Dilbert-Las_excusas_del_ingeniero_y_la_letra_pequena.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Igual que existe la profesión más antigua del mundo, hoy hablamos de&amp;nbsp;una de las más antiguas enfermedades en el desarrollo de software: la &lt;strong&gt;excusitis&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Parece que tenemos excusas para todo. Somos ingenieros. Tenemos la más alta formación, sin embargo, las más estúpidas excusas parecen salir una y otra vez de nuestras bocas de forma habitual. ¿Cuál es el problema? Como siempre, la causa más probable es el error humano.&lt;br /&gt;&lt;br /&gt;Hay gente, que consigue prosperar a base de dos máximas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Si algo sale bien, les falta tiempo para dar la cara para conseguir reconocimiento y fama.&lt;/li&gt;&lt;li&gt;Si algo sale mal, echan mano de la lista de culpables (que siempre tienen a mano), para conseguir su chivo expiatorio. De hecho, a veces consiguen incluso culparlos en la distancia (frases del estilo "yo no he trabajado con él, pero...&amp;lt;poner aquí cualquier frase que desprestigie al chivo expiatorio&amp;gt;")&lt;/li&gt;&lt;/ul&gt;Como ya comentaba en mi anterior artículo "¿Por qué fallan los despliegues en producción?", no debemos buscar los culpables muy lejos. Sin embargo, resulta mucho más fácil buscar culpables, que soluciones. Y las soluciones, están siempre en el mismo sitio: formación, buenas prácticas, usar tecnologías y métodos seguros y probados, y ser sobre todo, profesionales.&lt;br /&gt;&lt;br /&gt;Veamos las excusas más habituales:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Reinicia, y si sigue pasando..vuelve a llamarme&lt;/li&gt;&lt;li&gt;El análisis funcional estaba mal&lt;/li&gt;&lt;li&gt;Es que alguien no está a la altura del resto y está haciendo que mi equipo no rinda bien.&lt;/li&gt;&lt;li&gt;Pero...¿y eso para qué lo quieres?&lt;/li&gt;&lt;li&gt;Ya se que no lo pidió nadie...¿pero te gusta?&lt;/li&gt;&lt;li&gt;Funciona...pero no lo he probado&lt;/li&gt;&lt;li&gt;ESTO...no puede ser la causa de ESO.&lt;/li&gt;&lt;li&gt;Es solo una desafortunada coincidencia&lt;/li&gt;&lt;li&gt;Pero si ese módulo no se ha tocado en meses!&lt;/li&gt;&lt;li&gt;Es que ese módulo está sin terminar&lt;/li&gt;&lt;li&gt;Esto siempre ha funcionado bien...&lt;/li&gt;&lt;li&gt;Yo no he tocado nada...&lt;/li&gt;&lt;li&gt;En mi equipo sí que funciona...&lt;/li&gt;&lt;li&gt;Pero si yo ya lo probé!&lt;/li&gt;&lt;li&gt;Pero si esto pasó todas mis pruebas unitarias!&lt;/li&gt;&lt;li&gt;Estás usando la última versión?&lt;/li&gt;&lt;li&gt;Este no es mi último código...¡alguien lo cambió!&lt;/li&gt;&lt;li&gt;Nunca había visto este error antes...&lt;/li&gt;&lt;li&gt;Ese no es mi código!&lt;/li&gt;&lt;li&gt;Creo que esto nunca había funcionado antes...&lt;/li&gt;&lt;li&gt;Creo que todavía no se han hecho los cambios en la base de datos.&lt;/li&gt;&lt;li&gt;Pero...¿eso estaba incluido en el diseño funcional?&lt;/li&gt;&lt;li&gt;Nadie me lo dijo.&lt;/li&gt;&lt;li&gt;Pero...¿no estarás usando el Internet Explorer?&lt;/li&gt;&lt;li&gt;No es un fallo...¡es una característica!&lt;/li&gt;&lt;li&gt;Seguramente hiciste algo mal para que fallase así.&lt;/li&gt;&lt;li&gt;Nadie me dijo que debía hacer pruebas unitarias.&lt;/li&gt;&lt;li&gt;Eso no estaba en mi plan de pruebas&lt;/li&gt;&lt;li&gt;Ayer funcionaba&lt;/li&gt;&lt;li&gt;¡Ya os dije que no me iba a dar tiempo de probarlo!&lt;/li&gt;&lt;/ol&gt;Fuente: &lt;a href="http://whizzodev.blogspot.com/2008/02/top-13-excuses-for-software-developer.html"&gt;http://whizzodev.blogspot.com/2008/02/top-13-excuses-for-software-developer.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-3384646430629125675?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/3384646430629125675/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/excusitis-otra-enfermedad-del.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/3384646430629125675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/3384646430629125675'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/excusitis-otra-enfermedad-del.html' title='Excusitis: otra enfermedad del desarrollo de software'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-4lCElMIgkKA/T1PFJ_Gm-MI/AAAAAAAAAJY/iY2m4wROqRI/s72-c/Dilbert-Las_excusas_del_ingeniero_y_la_letra_pequena.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-5257265631688151982</id><published>2012-03-03T04:14:00.001-08:00</published><updated>2012-03-08T00:06:13.297-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>ASP.NET MVC (III)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;Este artículo forma parte de una serie. Podéis ir directamente a las partes &lt;a href="http://calidadysoftware.blogspot.com/2011/10/aspnet-mvc-i-introduccion.html" target="_blank"&gt;1&lt;/a&gt; y &lt;a href="http://calidadysoftware.blogspot.com/2011/10/aspnet-mvc-ii-ventajas.html" target="_blank"&gt;2&lt;/a&gt;.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Hoy vamos a ver MVC desde otro punto de vista. Primero, una comparación con los Web Forms tradicionales. En la figura siguiente, se ilustra bastante mejor esta significativa diferencia:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-OEj30CD4ytw/TtZHB0FABmI/AAAAAAAAAE0/eASvAbeFcNA/s1600/MVC.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" dda="true" height="320" src="http://1.bp.blogspot.com/-OEj30CD4ytw/TtZHB0FABmI/AAAAAAAAAE0/eASvAbeFcNA/s400/MVC.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;En primer lugar hacer notar que ya no tenemos los eventos, el ciclo de vida de los web forms a los que estábamos ya tan acostumbrados. Ya se rompe por fin el patrón de trabajo (artificial por otro lado), que habían impuesto estos web forms:&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Procesar una petición&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Entrar en el ciclo de vida del documento&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Tratar el evento&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Pintar los controles&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Devolver el resultado&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Además, el patrón de trabajo de Web Forms nos había acostumbrado a otras cosas totalmente ajenas a la realidad de la web, basándose en esa capa virtual:&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;RAD&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Controles ricos&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Modelo dirigido por eventos (lo comentado justo hace un momento)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Desarrollo parecido a Windows Forms. Sin querer, estamos creando la ilusión de que trabajamos con una especie de formularios Windows. Nada más falso, tal y como hemos visto en el ciclo de vida de los Web Forms, justo hace un momento.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Difícil implementación de TDD. No es nada imposible, pero la verdad es que con los Web Forms había que hacer auténticas piruetas para establecer un TDD en condiciones.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Páginas pesadas (por culpa del viejo conocido ViewState).&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Aquí hacer un inciso. Anque MVC está muy orientado al uso extensivo de HTML5, CSS3 y Javascript, debemos ser conscientes de una serie de realidades:&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;HTML5 no está disponible para todos los navegadores, hay que validar las funcionalidades antes de usarlas.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;CSS3 evoluciona mucho más lento que HTML5. TODAVIA NO ES UN ESTANDAR, sino un borrador. Hay que validar el soporte de sus funcionalidades en lugar de validar la versión del navegador o el tipo. No se trata de que Chrome o Firefox o X soporten CSS3...es que CSS3 aún no existe como tal, y está sujeto a cambios.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;JavaScript: NO ES UN ESTANDAR! El estándar actual, es ECMA-262 (versión 5, Dic. 2009). Y a él nos tenemos que aplicar. Todo lo demás, será favorecer que nuestras páginas funcionen en un navegador y en otros no.&lt;/div&gt;&lt;/li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;/ol&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="color: blue; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Estructura de una aplicación MVC&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/-mOtJxl2XKt8/T1IKgoYs7wI/AAAAAAAAAJQ/edpNBgKJTiw/s1600/MVCestructura.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-mOtJxl2XKt8/T1IKgoYs7wI/AAAAAAAAAJQ/edpNBgKJTiw/s320/MVCestructura.png" width="230" /&gt;&lt;/a&gt;Volviendo a MVC, vamos a ver su estructura. Con MVC, trabajaremos con proyectos, no con sitios web ("web sites"). Es lo primero que observaremos, ya que al crear un sitio web con Visual Studio, lo haremos a través del cuadro de diálogo "Add New Project".&lt;/div&gt;&lt;div style="clear: both; text-align: left;"&gt;La mayoría de&amp;nbsp;los contenidos son&amp;nbsp;ya conocidos en un proyecto ASP.NET (como App_Data, Web.Config, scripts, etc.) Sin embargo, hay carpetas específicas de un proyecto MVC:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;strong&gt;Content&lt;/strong&gt;: en esta carpeta tendremos los archivos estáticos, como imágenes, hojas de estilos, y archivos html puros.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;strong&gt;Controllers&lt;/strong&gt;: en esta carpeta, encontraremos todas las clases controlador. En general, por cada entidad en nuestro modelo, tendremos un único controlador. Además, podemos definir otros controladores para otras acciones como: LoginController, HomeController, NavigationController...Como podéis ver, para las clases controlador, se suele utilizar la convención &lt;em&gt;NombreEntidad&lt;/em&gt;Controller.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;strong&gt;Models&lt;/strong&gt;: Aquí se encuentra el código que representa el modelo de negocio. Este código interactúa con la base de datos y procesa las reglas de negocio. Si usamos Entity Framework, tendremos los archivos EDMX aquí. Por supuesto, podremos tener una dll separada, referenciada por el proyecto que contenga el modelo, por lo que en ese caso esta carpeta estaría vacía.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;strong&gt;Views&lt;/strong&gt;: Aquí encontraremos las vistas (páginas ASPX, ASCX y master pages). Normalmente, la convención indica que hagamos una carpeta separada para cada controlador. Aquí también hay una carpeta llamada Shared, que se usa para vistas comunes a varios controladores (como una master page).&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;/ol&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;﻿&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-5257265631688151982?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/5257265631688151982/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/aspnet-mvc-iii.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5257265631688151982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5257265631688151982'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/aspnet-mvc-iii.html' title='ASP.NET MVC (III)'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-OEj30CD4ytw/TtZHB0FABmI/AAAAAAAAAE0/eASvAbeFcNA/s72-c/MVC.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-4777291385879421943</id><published>2012-03-01T08:10:00.000-08:00</published><updated>2012-03-01T08:10:07.553-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Windows 8 Consumer Preview</title><content type='html'>Pues ya está aquí. Y va a ser el tema de la temporada. El nuevo Windows 8 está disponible para descarga &lt;a href="http://windows.microsoft.com/es-ES/windows-8/consumer-preview" target="_blank"&gt;aquí&lt;/a&gt;&amp;nbsp;en su modalidad Consumer Preview.&lt;br /&gt;&lt;br /&gt;Una descripción detallada de novedades, la tenéis &lt;a href="http://blogs.technet.com/b/microsoftblog_es/archive/2012/02/29/presentando-windows-8-consumer-preview.aspx" target="_blank"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pues hala, a disfrutar hasta que caduque esta release, o deje de estar disponible para descarga. Recordad que como "Consumer Preview", esta versión de Windows no tiene coste, pero no deja de ser una BETA. Así que tomad todas las debidas precauciones, y leeros las notas de la release.&lt;br /&gt;&lt;br /&gt;Hay muchísimas novedades, entre las que podemos citar:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Windows Store. Ahora será posible descargar aplicaciones como si estuvieramos en el móvil. Seleccionar, pagar (si no es gratis), descargar....y a disfrutar.&lt;/li&gt;&lt;li&gt;Metro Style. Nueva interfaz.&lt;/li&gt;&lt;li&gt;Búsquedas mejoradas.&lt;/li&gt;&lt;li&gt;Mayor seguridad. Tanto en navegación como en el PC.&lt;/li&gt;&lt;li&gt;Nuevo Internet Explorer.&lt;/li&gt;&lt;li&gt;Novedades para ITPros.&lt;/li&gt;&lt;li&gt;Charms: una nueva forma de interactura.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-4777291385879421943?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/4777291385879421943/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/windows-8-consumer-preview.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4777291385879421943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4777291385879421943'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/03/windows-8-consumer-preview.html' title='Windows 8 Consumer Preview'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-8961111821960258647</id><published>2012-02-28T23:57:00.000-08:00</published><updated>2012-02-28T23:57:10.833-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Team Foundation Server gratis</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-sIDEm1i1bss/T03aSMxaMJI/AAAAAAAAAJI/yYcFuzS1o8A/s1600/tfsOverview.png" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="181" src="http://2.bp.blogspot.com/-sIDEm1i1bss/T03aSMxaMJI/AAAAAAAAAJI/yYcFuzS1o8A/s320/tfsOverview.png" uda="true" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Pues sí, parece que vamos a tener una versión gratuita (Express) del Team Foundation Server. De esta forma, tendremos completamente cerrado el círculo de desarrollo con versiones 100% gratuitas, e integradas entre sí:&lt;br /&gt;- SQL Server Express: base de datos gratuita&lt;br /&gt;- TFS Express: repositorio de código y más, gratis&lt;br /&gt;- Visual Studio Express: entorno de desarrollo multilenguaje gratis&lt;br /&gt;&lt;br /&gt;Todo esto formará parte de la próxima versión de Visual Studio, reforzando la infraestructura ALM desde el punto de vista gratuito.&lt;br /&gt;Más información en el link: &lt;a href="http://blogs.msdn.com/b/bharry/archive/2012/02/23/coming-soon-tfs-express.aspx"&gt;http://blogs.msdn.com/b/bharry/archive/2012/02/23/coming-soon-tfs-express.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-8961111821960258647?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/8961111821960258647/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/02/team-foundation-server-gratis.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8961111821960258647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8961111821960258647'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/02/team-foundation-server-gratis.html' title='Team Foundation Server gratis'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-sIDEm1i1bss/T03aSMxaMJI/AAAAAAAAAJI/yYcFuzS1o8A/s72-c/tfsOverview.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-8973367864076717953</id><published>2012-02-24T03:46:00.001-08:00</published><updated>2012-02-27T23:56:23.561-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Estimación'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>Planning Poker</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ieFCfXC-Fpw/T0yIl_hq6II/AAAAAAAAAI4/QO4J7uOHE84/s1600/planning_poker.jpg" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-ieFCfXC-Fpw/T0yIl_hq6II/AAAAAAAAAI4/QO4J7uOHE84/s1600/planning_poker.jpg" uda="true" /&gt;&lt;/a&gt;&lt;/div&gt;Hoy me apetecía hablar del Planning Poker. Para los que no lo conozcáis, es una técnica de estimación basada en consenso. Se utiliza en muchos ámbitos, pero es especialmente defendida dentro del mundo de las metodologías ágiles. Ha estado especialmente vinculado a la metodología XP (eXtreme Programming), pero más recientemente se ha asociado casi exclusivamente a SCRUM.&lt;br /&gt;Tenéis una descripción bastante acertada en &lt;a href="http://es.wikipedia.org/wiki/Planning_poker" target="_blank"&gt;Wikipedia&lt;/a&gt;. Aquí vamos a tratar de ir un poco más alla. Empezaremos resumiendo cómo funciona:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;El grupo de estimación estará compuesto por un moderador y los estimadores (equipo de desarrollo). El Product Owner puede participar, pero no puede estimar las tareas.&lt;/li&gt;&lt;li&gt;Cada estimador debe tener un juego de cartas.&lt;/li&gt;&lt;li&gt;El moderador lee la descripción de la tarea (normalmente, la propia "Historia del Usuario"). El Product Owner puede aquí participar para aclarar alguna duda.&lt;/li&gt;&lt;li&gt;Cada estimador elige una carta y la coloca boca abajo en la mesa. Cuando todos los estimadores están listos, éstos darán la vuelta de forma simultánea, cada uno a su carta seleccionada.&lt;/li&gt;&lt;li&gt;Si las estimaciones varían mucho, los estimadores con mayor variación (más alta y más baja respecto a la media), exponen sus razones. Aquí deben participar todos, no sólo los responsables de las cartas discordantes.&lt;/li&gt;&lt;li&gt;Repetir el paso 4 hasta que las estimaciones convergan.&lt;/li&gt;&lt;/ol&gt;Hasta aquí todo bien. Hay mucha documentación en internet sobre cómo hacerlo, incluso algún sitio web que se ofrece para que hagas el planning online de forma gratuita (&lt;a class="external free" href="http://www.planningpoker.com/" rel="nofollow"&gt;http://www.planningpoker.com/&lt;/a&gt;). Por cierto, que esto es especialmente útil para equipos distribuidos, aunque la paradoja aquí es que precisamente las metodologías ágiles están en teoría enfocadas a equipos no distribuidos.&lt;br /&gt;&lt;br /&gt;Sin embargo, vamos a intentar como siempre, poner algo más...&lt;br /&gt;&lt;br /&gt;Si has llegado leyendo&amp;nbsp;hasta aquí y no tienes un montón de preguntas...anda...léelo otra vez. La cuestión es que el Planning Poker no estima en horas. Ni en días. No es una unidad habitual, es la llamada "Punto de Historia de Usuario". Es decir, después de una sesión de estimación con Planning Poker, saldrás de la reunión sin saber cuándo vas a terminar las tareas. Vale, en este momento, tengo a todos los agile-fans enviándome comentarios con amenazas. No, en serio. Lo que ocurre, es que la medida obtenida con Planning poker, es una unidad relativa. Se trata de una medida comparativa. Comparamos las tareas. es decir, una tarea será estimada con la carta del "3", si creemos que cuesta el triple de tiempo que la tarea para la que se estimó en "1". Es por eso, que las tareas estimadas con cantidades grandes, se suelen dividir en tareas pequeñas, que se vuelven a estimar.&lt;br /&gt;&lt;br /&gt;Pero sigamos. Tenemos tareas pequeñas, todas bien estimadas, y ¿seguimos sin saber cuándo vamos a terminarlas? Sí, y No. En las metodologías ágiles, especialmente en SCRUM, existe un concepto llamado "&lt;strong&gt;Velocidad&lt;/strong&gt;". Este término, viene a ser el número de "Puntos de Historia de Usuario" que según los datos históricos, somos capaces de llevar a cabo por unidad de tiempo.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #660000;"&gt;Ventajas de Planning Poker&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Hace divertida la estimación&lt;/strong&gt; (después de todo, ¿quién se niega a sentarse en una mesa y jugar a las cartas en mitad del trabajo?).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Intenta evitar el sesgo&lt;/strong&gt; que proporcionan las estimaciones de los falsos expertos.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Promueve la participación y la colaboración&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Aumenta el compromiso&lt;/strong&gt;. Si la historia de usuario entra en el sprint, estaremos más comprometidos porque hemos participado en la estimación.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Abstrae el concepto de tiempo&lt;/strong&gt;. Las estimaciones se hacen en puntos, y éstos son una medida proporcional a tareas simples.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Facilita&lt;/strong&gt; la colaboración y estimación en &lt;strong&gt;entornos distribuidos&lt;/strong&gt; (con las oportunas herramientas).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="color: #660000;"&gt;&lt;strong&gt;Desventajas de Planning Poker&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;No está enfocado a usuarios noveles&lt;/strong&gt;. Una estimación basada en "puntos", es difícil que sea de utilidad a quien no tiene ya una cierta experiencia (y no sólo en ese proyecto), tanto en estimación como en desarrollo. Sin un mínimo de conocimiento, no es posible hacer la abstracción que te permita comparar la tarea estimada con otra distinta de referencia.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;El llegar a un consenso, no garantiza el acierto&lt;/strong&gt;. Así es, podemos estar de acuerdo en algo, y eso no significa que sea cierto. Aquí jugará mucho la experiencia REAL. Es decir, no sólo no hay que ser no-novatos, sino que además interesa que el equipo tenga varios expertos. Por desgracia, si está delante el usuario para ayudarnos en la estimación, o hay un jefe, es posible que nadie esté dispuesto a "dar la nota", y acabe llegándose a un consenso-porque-sí. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Es poco serio&lt;/strong&gt;. Venga, hay muchísimos clientes que si tuvieran que asistir en una sesión de estimación, y vieran que lo primero que se hace es sacar una baraja....se echarían a temblar (justificadamente o no). Vamos, que no es exactamente la mejor imagen de seriedad.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Requiere de un histórico de información&lt;/strong&gt;. Si no tenemos una medida de la velocidad del equipo, y no tenemos estimaciones anteriores para correlacionar esas estimaciones con las horas realmente requeridas, va a ser complicado que algún día podamos encajar puntos y horas. En relación con este concepto, he encontrado un &lt;a href="http://blog.technicalmanagementinstitute.com/2009/06/story-sizing-a-better-start-than-planning-poker.html" target="_blank"&gt;post&lt;/a&gt; cuyo enfoque comparto. Y es que esto de abstraer la duración de las tareas, da miedo escénico. En dicho post, propone una aproximación inicial de basarse en datos históricos, combinada con el concepto de usar la tarea más pequeña, como "1 punto de historia de usuario". Así todo el equipo tiene un referente común de lo que cuesta hacer ese "punto".&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Cultura&lt;/strong&gt;. Requiere una cultura ágil enraigada. No veo a un manager o jefe de proyecto sin esa cultura ágil, oir hablar de que nos faltan "3 puntos" para terminar la iteración. A más de uno le entrará la histeria y soltaría frases como: "dejate de tonterías, lo tienes que terminar el viernes".&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Por sí solo, no es una buena fuente de estimación&lt;/strong&gt;. Sin embargo, esta técnica por sí sola, sí es una primera estimación, y se complementa perfectamente con otras técnicas de estimación como pueden ser WBS y las basadas en históricos, u otras técnicas basadas en parametrización.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Este método consume mucho tiempo&lt;/strong&gt;. La idiosincrasia y el protocolo que requieren, desde mi punto de vista, parece más enfocado a acordar un resultado, que a que dicho resultado tenga algún parecido con la realidad.&lt;/li&gt;&lt;li&gt;Los Puntos de Historia de Usuario&amp;nbsp;&lt;strong&gt;se enfocan en estimar el tamaño&lt;/strong&gt; de lo que se construye, y evitan la realidad de que eso realmente no importa: de lo que se trata, es de estimar cuánto cuesta construirlo. Aquí, hay múltiples ejemplos en el mundo real: el hacer algo el doble de grande, no tiene porqué costar&amp;nbsp;el doble. Quizás más, quizás menos.&lt;/li&gt;&lt;li&gt;El uso de Puntos, trata también de esquivar el equívoco que se produce al consumir la mitad de horas del proyecto. En este caso, un jefe de proyecto poco experimentado estará tentado de decir que estamos al 50%. Al hablar de puntos, estamos intentando que estadísticamente hablando, el error de estimación se diluya, consiguiendo que al haber transcurrido la mitad de puntos, estemos a la mitad de la iteración. Bajo mi punto de vista, esta afirmación presupone tantas cosas, que&amp;nbsp; las veo prácticamente en la misma perspectiva: ambas respuestas están mal. y es que el haber completado la mitad de puntos, me dice lo mismo que en el primer caso (cambiando horas por puntos). Lo que sí es cierto, es que el avance no se debería expresar en horas, sino en funcionalidades. Por otro lado, la triste realidad que no podemos esquivar, es que al 50% de horas, hemos gastado la mitad del dinero. A ver como administramos&amp;nbsp;lo que queda...&lt;/li&gt;&lt;/ul&gt;Al final, a pesar de parecer tan duras estas desventajas, es que la técnica está realmente bien. Como siempre, estas desventajas las tenemos que ver como riesgos que afectan al proyecto. Mi recomendación, que es la misma que el SEI y otras fuentes, es diversificar. No sólo el hecho de diversificar las personas que estiman, mejoran la estimación (en eso se basa esta técnica). Si además, combinamos varias técnicas, y sobre todo, nos apoyamos en datos reales históricos, tendremos la auténtica fuente de buenas estimaciones.&lt;br /&gt;&lt;br /&gt;Y nada más, probadlo y obtened vuestras propias conclusiones. Me gustaría terminar recomendando una lectura relacionada, de un blog que suelo leer. Os lo dejo en este &lt;a href="http://geeks.ms/blogs/lontivero/archive/2008/03/19/pm-estimaciones-agiles-no-extremas.aspx" target="_blank"&gt;link&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-8973367864076717953?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/8973367864076717953/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/02/planning-poker.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8973367864076717953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8973367864076717953'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/02/planning-poker.html' title='Planning Poker'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-ieFCfXC-Fpw/T0yIl_hq6II/AAAAAAAAAI4/QO4J7uOHE84/s72-c/planning_poker.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-8510779692451345830</id><published>2012-02-23T00:27:00.000-08:00</published><updated>2012-02-23T00:27:12.608-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Cuando la culpa es del usuario</title><content type='html'>Muy bueno. Estoy leyendo un&amp;nbsp; &lt;a href="http://www.variablenotfound.com/2012/02/llamemos-las-cosas-por-su-nombre.html" target="_blank"&gt;artículo&lt;/a&gt; en variablenotfound, donde el autor presenta varias situaciones históricas&amp;nbsp;en que puesto que los programadores han asumido que la culpa de los fallos es del usuario, se vengan de él de alguna forma:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;ID-10-T&lt;/strong&gt;: es una forma de llamar al usuario IDIOTA (del inglés IDIOT, resultado de concatenar los caracteres el código de error "ID-10-T")&lt;/li&gt;&lt;li&gt;&lt;strong&gt;PEBCAK&lt;/strong&gt;: Problem Exists Between Chair And Keyboard &lt;/li&gt;&lt;li&gt;&lt;strong&gt;PICNIC&lt;/strong&gt;: Problem In Chair, Not In Computer &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Layer 8 Error&lt;/strong&gt;: en el año 1984, la organización ISO publicó el Open Standard Interconnection, donde se hablaba de 7 capas del software. La 8ª capa, como imaginaréis, corresponde al usuario.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;RTFM&lt;/strong&gt;: Read The&amp;nbsp; Fucking Manual&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Luser&lt;/strong&gt;: término despectivo para usuarios poco (o nada) técnicos, y que deriva de la fusión entre USER (usuario) y LOSER (perdedor). Tiene su origen en una broma en el MIT nada menos que en 1975.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Al final, vemos que los programadores, hemos dedicado desde siempre una gran parte de su esfuerzo en criticar y ridiculizar a los usuarios. Vamos, que no os vayáis a creer que es algo de ahora. A todos nos molesta&amp;nbsp;que los usuarios nos hagan consultas estúpidas.&amp;nbsp;Como el tono del artículo original es de humor, dejo para más adelante otro artículo para criticar este tipo de posturas. Porque sí, el usuario tiene derecho a no compartir nuestra visión de la tecnología, y sí: el usuario tiene derecho a cometer errores. No se trata de que nos dobleguemos y aceptemos que cualquier cosa que diga el usuario es Ley. Se trata de que aceptemos que el cliente puede tener una visión diferente de la nuestra, o incluso equivocarse,&amp;nbsp;y debemos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Localizar la causa de la discrepancia.&lt;/li&gt;&lt;li&gt;Analizar y entender la postura del usuario &lt;/li&gt;&lt;li&gt;Aprovechar ese conocimiento para reenfocar nuestro servicio en un mayor beneficio mutuo&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-8510779692451345830?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/8510779692451345830/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/02/cuando-la-culpa-es-del-usuario.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8510779692451345830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8510779692451345830'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/02/cuando-la-culpa-es-del-usuario.html' title='Cuando la culpa es del usuario'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-5190822851277022916</id><published>2012-02-22T02:24:00.000-08:00</published><updated>2012-02-22T02:24:33.752-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><category scheme='http://www.blogger.com/atom/ns#' term='Ingenieria'/><title type='text'>Frases célebres sobre la calidad</title><content type='html'>A continuación, algunas frases célebres sobre la calidad:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;"¡No me importa si funciona en tu máquina! ¡No estamos vendiendo tu máquina!" (&lt;i&gt;Vidiu Platon)&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;"Programar es como el sexo: un único error y tienes que estar soportándolo toda la vida" (&lt;i&gt;Michael Sinz)&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;"Hay dos formas de escribir programas sin errores; sólo la tercera funciona" (&lt;i&gt;Alan J. Perlis)&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;"Puedes tener un software de calidad o puedes tener aritmética de punteros, pero no puedes tener ambas cosas al mismo tiempo" (&lt;i&gt;Bertrand Meyer)&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 12pt; mso-margin-top-alt: auto;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;"Si McDonnalds funcionara como una compañía de software, uno de cada cien Big Macs te envenenarían, y la respuesta sería 'lo sentimos, aquí tiene un cupón para dos más'" (&lt;i&gt;Mark Minasi)&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 12pt; mso-margin-top-alt: auto;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;"Codifica siempre como si la persona que finalmente mantendrá tu código fuera un psicópata violento que sabe dónde vives" (&lt;i&gt;Martin Golding)&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 12pt; mso-margin-top-alt: auto;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;"Cometer errores es humano, pero para estropear realmente las cosas necesitas un ordenador" (&lt;i&gt;Paul Ehrlich)&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;"Un ordenador te permite cometer más errores y más rápido que cualquier otra invención en la historia de la humanidad, con las posibles excepciones de las pistolas y el tequila" (&lt;i&gt;Mitch Radcliffe)&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;Están extraídas de este &lt;a href="http://www.variablenotfound.com/2008/02/101-citas-clebres-del-mundo-de-la.html" target="_blank"&gt;blog&lt;/a&gt;&amp;nbsp;de José M. Aguilar. Si os han gustado, en su blog hay muchas frases.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-5190822851277022916?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/5190822851277022916/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/02/frases-celebres-sobre-la-calidad.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5190822851277022916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5190822851277022916'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/02/frases-celebres-sobre-la-calidad.html' title='Frases célebres sobre la calidad'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-8991053363168329687</id><published>2012-02-21T05:46:00.000-08:00</published><updated>2012-02-21T05:46:48.300-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ITIL'/><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><title type='text'>La carga de trabajo</title><content type='html'>Este artículo está inspirado en un nuevo plugin que ha salido para JIRA, y que podéis ver en detalle en este &lt;a href="https://plugins.atlassian.com/plugin/details/1105996"&gt;link&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Lo interesante del tema, está en la imagen con que se muestran los distintos niveles de carga de trabajo:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-0lS5PksmfCo/Tz0FYOmJ61I/AAAAAAAAAIs/GhL_RnG3Z40/s1600/workload.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-0lS5PksmfCo/Tz0FYOmJ61I/AAAAAAAAAIs/GhL_RnG3Z40/s1600/workload.gif" yda="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Es decir, de lo que se trata es de repartir la carga de trabajo, para mantener a los dos primeros iconos ocupados (por su expresión, parece que se están durmiendo), mientras que a los dos últimos...pues eso, con verlos ya se ve que están algo agobiados y conviene quitarles faena. Esto de repartir la carga, tiene poco que ver con socializar el trabajo y conseguir el equilibrio, y mucho con el proceso ITIL de "&lt;a href="http://en.wikipedia.org/wiki/Capacity_management"&gt;Capacity Management&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;Una reflexión interesante sobre la carga de trabajo, la podemos encontrar en este &lt;a href="http://www.disassociated.com/2010/01/25/venn-productivity-motivation-procrastination-workload/" target="_blank"&gt;link&lt;/a&gt;, donde se establece la ecuación:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;Productividad = Motivación - Procrastinación - Carga de Trabajo&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-8991053363168329687?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/8991053363168329687/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/02/la-carga-de-trabajo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8991053363168329687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8991053363168329687'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/02/la-carga-de-trabajo.html' title='La carga de trabajo'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-0lS5PksmfCo/Tz0FYOmJ61I/AAAAAAAAAIs/GhL_RnG3Z40/s72-c/workload.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-6088504902381437683</id><published>2012-02-10T10:04:00.001-08:00</published><updated>2012-02-28T04:11:54.609-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ágil'/><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>Porqué fallan los despliegues en producción</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-b9jXikwdads/T0zEeVA3PII/AAAAAAAAAJA/WWQW930HCDE/s1600/StealthDeployment.jpg" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="268" src="http://1.bp.blogspot.com/-b9jXikwdads/T0zEeVA3PII/AAAAAAAAAJA/WWQW930HCDE/s320/StealthDeployment.jpg" uda="true" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Es inevitable. Parece una ley de la naturaleza. Hemos desarrollado un software con todo nuestro cariño (vale, a veces sin tanto cariño). Hemos superado con éxito los despliegues en pruebas y pre-producción, las correspondientes pruebas en esos entornos, etc (porque...¿hacéis pruebas verdad?). Y vamos a instalarlo en el entorno de producción, llega el gran día...y el gran fracaso. ¿Qué ha pasado?&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;No nos engañemos, la única verdad es que algo hicimos mal. ¿Qué ocurre si vamos sin lista de la compra y nos dejamos algo? ¿A quién le echamos la culpa? Oigo excusas del estilo "es que lo planificamos bien...", "hicimos todo lo que pudimos...", "es que otras personas hicieron el despliegue...", "yo es que no estaba ahí...", "a mí nadie me avisó de que esto íba a estar así...". &lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Planificar un software es complejo, y exige un ejercicio de experiencia, método y disciplina, para que el resultado se acerque a la realidad. Sin embargo, en raras ocasiones el despliegue, el último esfuerzo, recibe la atención necesaria (vamos, básicamente, no aplicamos adecuadamente la experiencia, el método, y la disciplina). ¿Porqué? Analicemos un poco el tema.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Habilidades Técnicas.&lt;/strong&gt;&lt;br /&gt;Esta no parece ser la causa. Aparentemente estamos preparados para todo. Somos técnicamente competentes. No hay nada o casi nada del despliegue que se nos resista.&lt;br /&gt;La verdad es otra. Aunque efectivamente, no suele ser un problema grave, las habilidades técnicas adolecen de estar sobrevaloradas por nuestra parte. Nos consideramos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Power developers cuando apenas sabemos programar...&lt;/li&gt;&lt;li&gt;Arquitectos cuando apenas somos buenos programadores...&lt;/li&gt;&lt;li&gt;Expertos cuando no tenemos conocimiento ni experiencia ni para llamarnos arquitectos...&lt;/li&gt;&lt;/ul&gt;Esto, que merece un post aparte, tiene especial gravedad cuando usamos para nosotros la vara de medir tamaño "mini" (cualquier cosa que hagamos, nos convierte en expertos), y para medir a los demás usamos la vara "maxi" (para que alguien se gane nuestro respeto, ha de superar pruebas que ni la mitad de hackers en el mundo superaría).&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Conocimiento del Entorno.&lt;/strong&gt;&lt;br /&gt;Esta ya sí que parece ser una de las principales causas. Después de todo, si falla la instalación es porque algo se ha producido en el entorno de producción, que era ajeno a nuestro conocimiento. Unas veces será porque no había algo instalado que debía de estar. Otras será porque falta una acción sobre el entorno (configuración, carga de datos, etc.). Sin embargo, no podemos echar las culpas a los demás. Somos los primeros responsables de identificar las necesidades (requisitos), obtener toda la información del entorno (hardware, software, horarios de acceso, ventanas de trabajo, etc). Cuántas veces le echamos al cliente la culpa de que su entorno esté configurado así o asá, de que su personal no haga las cosas que le pedimos...¿Hasta qué punto es realmente culpa suya?&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Falta de Preparación.&lt;/strong&gt;&lt;br /&gt;Nos sobran conocimientos técnicos. Realmente nos sobran. Somos capaces de incorporar las últimas tecnologías (aún cuando realmente sean innecesarias). Pero falta preparación. Preparación de materiales, de avisar con adecuada antelación, de identificar las necesidades y sobre todo, falta experiencia y falta método.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Hace poco, conversaba con unos colegas profesionales en un foro internacional, sobre si era mejor utilizar una checklist donde lleváramos anotadas todas las acciones al detalle...o de si la experiencia y el "olfato" de perro viejo, eran lo más adecuado. Al final, pareció llegarse al consenso de que ambos son necesarios. Esta conversación, que espero rescatar para este blog algún día, podemos trasladarla a la disyuntiva entre usar: experiencia o un proceso detallado. Por desgracia, suelen faltar ambos. Veámoslo.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Falta de Experiencia.&lt;/strong&gt;&lt;br /&gt;Cuántas veces oigo de profesionales supuestamente experimentados, excusas para culpar a otros (o al aire, porqué no), de que su software no funciona tras ser instalado en producción. Enseguida la gente pone en su currículum X años de experiencia en programación, en tal o cual tecnología, en gestión de equipos, bla bla. Pero no he visto aún un currículum donde ponga: he instalado en entornos finales de cliente más de n-cientas aplicaciones, o cosas por el estilo. Y es que falta experiencia en despliegues. No sólo es haber trabajado en docenas y docenas de evolutivos en entornos de alta disponibilidad. Además, la clave es haber participado con éxito en el despliegue. Y cuando digo participación, no me refiero a mirar y esperar a que el cliente lo instale. Me refiero a DEFINIR los pasos y actividades de instalación...a prever las consecuencias y estados de cada uno de dichos pasos, y guiar al cliente por adelantado mediante un "Plan de Instalación".&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Falta de Método.&lt;/strong&gt;&lt;br /&gt;Esta causa está muy relacionada con la anterior. Falta un método. Pero un método apropiado al cliente, a sus entornos, a su personal, a sus datos, a su forma de trabajar...&lt;br /&gt;Es la misma situación que una toma de requisitos. En nuestra estupidez, culpamos al cliente "de no habernos sabido contar sus necesidades". Pues no. Es culpa nuestra, el no saber extraer la información adecuada. Los profesionales somos nosotros. El cliente sólo es...eso. ¿O es que tenemos nosotros la culpa cuando el médico nos pregunta los síntomas? Pues no. Si ser equivoca en el diagnóstico, le echamos siempre la culpa a él. Para eso es un profesional. &lt;br /&gt;Pues cuántas veces me tengo yo que oir en esta profesión, justo la historia al revés. La culpa es del cliente. Que no ha sabido dar los datos, la información, los requisitos...&lt;br /&gt;Creo que debería de haber una rama de ingeniería en excusas. Esa no la suspendería nadie.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Falta de Gestión.&lt;/strong&gt;&lt;br /&gt;Si las dos anteriores suelen fallar, no veamos ya la gestión. En nuestra prepotencia, nos presentamos en el servidor con le paquete de instalación, y no prevemos los contenidos básicos que un buen gestor ha de preparar:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Plan de trabajo&lt;/li&gt;&lt;li&gt;Recursos involucrados. Recursos opcionales.&lt;/li&gt;&lt;li&gt;Estimación&lt;/li&gt;&lt;li&gt;Plan de marcha atrás&lt;/li&gt;&lt;li&gt;Plan de contingencia&lt;/li&gt;&lt;li&gt;Plan de riesgos&lt;/li&gt;&lt;/ul&gt;Si has llegado a este punto, y has esbozado una sonrisa (especialmente con lo de la gestión), y estás convencido de que no es necesario nada de esto, éste artículo era para tí. Por desgracia, hay gente que es a las buenas prácticas como el agua para el aceite. Para ellos, tengo también en mente un post con un buen listado de excusas para diversas situaciones. Como decía un antiguo compañero:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;"¿Para qué vas a buscar soluciones...si puedes encontrar culpables?"&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-6088504902381437683?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/6088504902381437683/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/02/porque-fallan-los-despliegues-en.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6088504902381437683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6088504902381437683'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/02/porque-fallan-los-despliegues-en.html' title='Porqué fallan los despliegues en producción'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-b9jXikwdads/T0zEeVA3PII/AAAAAAAAAJA/WWQW930HCDE/s72-c/StealthDeployment.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-7671252653145288665</id><published>2012-01-30T03:18:00.000-08:00</published><updated>2012-02-03T10:06:10.537-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ágil'/><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>Las 10 prácticas ágiles más útiles (II)</title><content type='html'>Esta es la 2ª parte de una serie de artículos. Haz clic &lt;a href="http://calidadysoftware.blogspot.com/2011/12/las-10-practicas-agiles-mas-utiles.html"&gt;aquí&lt;/a&gt; para ir al post anterior.&lt;br /&gt;Por fin, llega la segunda parte de este análisis de herramientas y prácticas ágiles, basado en los resultados&amp;nbsp; de una encuesta sobre las 10 prácticas ágiles que los distintos votantes encontraban como más útiles.&lt;br /&gt;&lt;br /&gt;Nos faltaban de repasar las cuatro últimas herramientas, que si bien estaban entre las 10 más útiles, la encuesta las dejaba muy por debajo de las ya mencionadas. Vamos a repasar pues las que faltan:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #351c75;"&gt;Digital / Analog Taskboard.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Es una herramienta de seguimiento de proyectos ágiles, donde la información se estructura como muestra la figura siguiente:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-SdpSD2N-Th8/TyLjtWthFaI/AAAAAAAAAIk/wI5pqLjO83M/s1600/taskboard.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://3.bp.blogspot.com/-SdpSD2N-Th8/TyLjtWthFaI/AAAAAAAAAIk/wI5pqLjO83M/s320/taskboard.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Este cuadro de mando tiene varias ventajas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Visibilidad&lt;/strong&gt;. Se ve de un vistazo la situación del proyecto a alto nivel, y da una visión del estado de la iteración. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Simplicidad&lt;/strong&gt;. Es fácil planificar y replanificar. Basta con mover las hojas de tarea (tarjetas).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Disponibilidad&lt;/strong&gt;. En el caso de equipos distribuidos, es especialmente útil la versión electrónica de este taskboard, permitiendo la visión/actualización desde cualquier punto.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Actualización del burndown chart&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;&lt;span style="color: #351c75;"&gt;Release Planning&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Planificación de la iteración. Es la fase de la iteración en la que se planifican las tareas de&amp;nbsp;dicha iteración (se decide qué incluir en dicha iteración). Esto se hace en función de la capacidad de trabajo del equipo, y de la prioridad de las historias de usuario. Mediante técnicas como Pareto, se intenta realizar el máximo de historias de usuario, con el esfuerzo disponible para la iteración (capacidad del equipo).&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #351c75;"&gt;&lt;strong&gt;Test Driven Development&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;(de Wikipedia): &lt;strong&gt;Desarrollo guiado por pruebas&lt;/strong&gt;, o &lt;b&gt;Test-driven development (TDD)&lt;/b&gt; es una práctica de &lt;a href="http://www.blogger.com/wiki/Programaci%C3%B3n" title="Programación"&gt;programación&lt;/a&gt; que involucra otras dos prácticas: &lt;i&gt;Escribir las pruebas primero (Test First Development)&lt;/i&gt; y &lt;i&gt;&lt;a href="http://www.blogger.com/wiki/Refactorizaci%C3%B3n" title="Refactorización"&gt;Refactorización&lt;/a&gt; (Refactoring)&lt;/i&gt;. Para escribir las pruebas generalmente se utilizan las &lt;a href="http://www.blogger.com/wiki/Prueba_unitaria" title="Prueba unitaria"&gt;pruebas unitarias&lt;/a&gt; (unit test en &lt;a href="http://www.blogger.com/wiki/Idioma_ingl%C3%A9s" title="Idioma inglés"&gt;inglés&lt;/a&gt;). En primer lugar se escribe una prueba y se verifica que las pruebas fallen, luego se implementa el código que haga que la prueba pase satisfactoriamente y seguidamente se refactoriza el código escrito. El propósito del &lt;i&gt;desarrollo guiado por pruebas&lt;/i&gt; es lograr un código limpio que funcione. La idea es que los requisitos sean traducidos a pruebas, de este modo, cuando las pruebas pasen se garantizará que los requisitos se hayan implementado correctamente&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #351c75;"&gt;&lt;strong&gt;Regression Testing&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Las pruebas de regresión, son un tipo de pruebas orientadas a detectar nuevos fallos o fallos previamente detectados y ya corregidos, originados al realizar cambios en el sistema como pueden ser: updates, patches, cambios funcionales, etc.&lt;br /&gt;&lt;br /&gt;Ahora que tenemos todas las herramientas identificadas, hagamos un breve análisis del resultado de la encuesta sobre utilidad, añadiendo un par de parámetros: coste de implantación y coste de uso.&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; width: 407px;"&gt;&lt;colgroup&gt;&lt;col style="mso-width-alt: 6363; mso-width-source: userset; width: 131pt;" width="174"&gt;&lt;/col&gt;  &lt;col style="mso-width-alt: 4644; mso-width-source: userset; width: 95pt;" width="127"&gt;&lt;/col&gt;  &lt;col style="mso-width-alt: 3876; mso-width-source: userset; width: 80pt;" width="106"&gt;&lt;/col&gt;  &lt;/colgroup&gt;&lt;tbody&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td height="20" style="background-color: transparent; border: 0px black; height: 15pt; width: 131pt;" width="174"&gt;&lt;/td&gt;   &lt;td class="xl66" style="background-color: #1f497d; border: 0.5pt solid windowtext; width: 95pt;" width="127"&gt;&lt;span style="color: white; font-family: Calibri;"&gt;Coste implantación&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="background-color: #1f497d; border-color: windowtext windowtext windowtext white; border-style: solid solid solid none; border-width: 0.5pt 0.5pt 0.5pt 0px; width: 80pt;" width="106"&gt;&lt;span style="color: white; font-family: Calibri;"&gt;Coste uso diario&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl67" height="20" style="background-color: #9bbb59; border-color: windowtext black windowtext windowtext; border-style: solid none solid solid; border-width: 0.5pt 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Automated Builds&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext; border-style: none solid solid; border-width: 0px 0.5pt 0.5pt;"&gt;&lt;span style="font-family: Calibri;"&gt;7&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext black; border-style: none solid solid none; border-width: 0px 0.5pt 0.5pt 0px;"&gt;&lt;span style="font-family: Calibri;"&gt;1&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl67" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Continuous   Integration&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext; border-style: none solid solid; border-width: 0px 0.5pt 0.5pt;"&gt;&lt;span style="font-family: Calibri;"&gt;10&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext black; border-style: none solid solid none; border-width: 0px 0.5pt 0.5pt 0px;"&gt;&lt;span style="font-family: Calibri;"&gt;2&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl67" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Daily Standup   Meeting&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext; border-style: none solid solid; border-width: 0px 0.5pt 0.5pt;"&gt;&lt;span style="font-family: Calibri;"&gt;0&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext black; border-style: none solid solid none; border-width: 0px 0.5pt 0.5pt 0px;"&gt;&lt;span style="font-family: Calibri;"&gt;1&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl67" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Iteration   Planning&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext; border-style: none solid solid; border-width: 0px 0.5pt 0.5pt;"&gt;&lt;span style="font-family: Calibri;"&gt;2&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext black; border-style: none solid solid none; border-width: 0px 0.5pt 0.5pt 0px;"&gt;&lt;span style="font-family: Calibri;"&gt;2&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl67" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Coding   Standards&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext; border-style: none solid solid; border-width: 0px 0.5pt 0.5pt;"&gt;&lt;span style="font-family: Calibri;"&gt;7&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext black; border-style: none solid solid none; border-width: 0px 0.5pt 0.5pt 0px;"&gt;&lt;span style="font-family: Calibri;"&gt;2&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl67" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Unit Testing&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext; border-style: none solid solid; border-width: 0px 0.5pt 0.5pt;"&gt;&lt;span style="font-family: Calibri;"&gt;8&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext black; border-style: none solid solid none; border-width: 0px 0.5pt 0.5pt 0px;"&gt;&lt;span style="font-family: Calibri;"&gt;5&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl67" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Digital /   Analog Taskboard.&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext; border-style: none solid solid; border-width: 0px 0.5pt 0.5pt;"&gt;&lt;span style="font-family: Calibri;"&gt;3&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext black; border-style: none solid solid none; border-width: 0px 0.5pt 0.5pt 0px;"&gt;&lt;span style="font-family: Calibri;"&gt;1&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl67" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Release   Planning&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext; border-style: none solid solid; border-width: 0px 0.5pt 0.5pt;"&gt;&lt;span style="font-family: Calibri;"&gt;2&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext black; border-style: none solid solid none; border-width: 0px 0.5pt 0.5pt 0px;"&gt;&lt;span style="font-family: Calibri;"&gt;2&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl67" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Test Driven   Development&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext; border-style: none solid solid; border-width: 0px 0.5pt 0.5pt;"&gt;&lt;span style="font-family: Calibri;"&gt;10&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext black; border-style: none solid solid none; border-width: 0px 0.5pt 0.5pt 0px;"&gt;&lt;span style="font-family: Calibri;"&gt;3 &lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl67" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Regression   Testing&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext; border-style: none solid solid; border-width: 0px 0.5pt 0.5pt;"&gt;&lt;span style="font-family: Calibri;"&gt;5&lt;/span&gt;&lt;/td&gt;   &lt;td align="right" class="xl65" style="background-color: transparent; border-color: black windowtext windowtext black; border-style: none solid solid none; border-width: 0px 0.5pt 0.5pt 0px;"&gt;&lt;span style="font-family: Calibri;"&gt;7&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;La tabla anterior muestra unos valores ponderados (no expresan horas ni ninguna otra unidad de medida, sino que son valores que yo he estimado a nivel comparativo, para hacer un análisis&amp;nbsp;cualitativo). Usando los valores anteriores, y con un poco de matemáticas, llegaríamos a la conclusión de que si ordenamos la lista de prácticas por beneficio/coste de implantación, la lista quedaría así:&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; width: 174px;"&gt;&lt;colgroup&gt;&lt;col style="mso-width-alt: 6363; mso-width-source: userset; width: 131pt;" width="174"&gt;&lt;/col&gt;  &lt;/colgroup&gt;&lt;tbody&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: windowtext black windowtext windowtext; border-style: solid none solid solid; border-width: 0.5pt 0px 0.5pt 0.5pt; height: 15pt; width: 131pt;" width="174"&gt;&lt;span style="font-family: Calibri;"&gt;Daily   Standup Meeting&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Iteration   Planning&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Release   Planning&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Digital /   Analog Taskboard.&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Automated   Builds&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Regression   Testing&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Coding   Standards&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Continuous   Integration&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Unit Testing&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Test Driven   Development&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Bueno, esto no es muy novedoso. Ya lo sospechábamos: la práctica que mejor resultado da, y que menor coste tiene, es el Daily Stand Up Meeting. Aquí ya, es cuando haríamos las reflexiones oportunas.&lt;br /&gt;Y como vuelta de tuerca final, sería hacer los mismos cálculos, pero incorporando los costes de uso diario. Aquí ya dependería del proyecto, pero los resultados pueden ser algo de este estilo:&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; width: 174px;"&gt;&lt;colgroup&gt;&lt;col style="mso-width-alt: 6363; mso-width-source: userset; width: 131pt;" width="174"&gt;&lt;/col&gt;  &lt;/colgroup&gt;&lt;tbody&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: windowtext black windowtext windowtext; border-style: solid none solid solid; border-width: 0.5pt 0px 0.5pt 0.5pt; height: 15pt; width: 131pt;" width="174"&gt;&lt;span style="font-family: Calibri;"&gt;Daily   Standup Meeting&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Digital /   Analog Taskboard.&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Iteration   Planning&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Release   Planning&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Automated   Builds&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Coding   Standards&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Continuous   Integration&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Test Driven   Development&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Unit Testing&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15pt;"&gt;   &lt;td class="xl65" height="20" style="background-color: #9bbb59; border-color: black black windowtext windowtext; border-style: none none solid solid; border-width: 0px 0px 0.5pt 0.5pt; height: 15pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Regression   Testing&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Aquí ya vemos como se "recolocan" las prácticas, de forma que las que mejor rendimiento nos dan al proyecto, al mínimo coste, se han situado arriba, dejando relegadas algunas de las que más cuestan llevar a cabo. Por supuesto, esto ha sido un ejercicio que en la práctica habría que afinar mucho más, porque tanto las fórmulas utilizadas como los cálculos realizados han sido un tanto burdos para obtener resultados cualitativos. Os invito a todos a realizar algo similar aplicado a vuestros proyectos y costes, y ver qué prácticas son las que os da mejor ratio rendimiento/coste. Hasta la próxima.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-7671252653145288665?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/7671252653145288665/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/01/las-10-practicas-agiles-mas-utiles-ii.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7671252653145288665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7671252653145288665'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/01/las-10-practicas-agiles-mas-utiles-ii.html' title='Las 10 prácticas ágiles más útiles (II)'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-SdpSD2N-Th8/TyLjtWthFaI/AAAAAAAAAIk/wI5pqLjO83M/s72-c/taskboard.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-796652184715529391</id><published>2012-01-11T05:30:00.000-08:00</published><updated>2012-01-11T05:30:02.998-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Webcast con novedades del próximo Visual Studio ¿2012?</title><content type='html'>A continuación, os presento un&amp;nbsp;&lt;a href="http://geeks.ms/blogs/gperez/archive/2012/01/04/grabaci-243-n-webcast-nuevas-caracter-237-sticas-de-visual-studio-2011-para-el-desarrollo-web.aspx"&gt;enlace&lt;/a&gt;&amp;nbsp;donde podréis seguir mediante un interesantísimo webcast,&amp;nbsp;las novedades del próximo Visual Studio.&lt;br /&gt;&lt;br /&gt;Link: &lt;a href="http://geeks.ms/blogs/gperez/archive/2012/01/04/grabaci-243-n-webcast-nuevas-caracter-237-sticas-de-visual-studio-2011-para-el-desarrollo-web.aspx"&gt;http://geeks.ms/blogs/gperez/archive/2012/01/04/grabaci-243-n-webcast-nuevas-caracter-237-sticas-de-visual-studio-2011-para-el-desarrollo-web.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-796652184715529391?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/796652184715529391/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/01/webcast-con-novedades-del-proximo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/796652184715529391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/796652184715529391'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/01/webcast-con-novedades-del-proximo.html' title='Webcast con novedades del próximo Visual Studio ¿2012?'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-5825113820254793147</id><published>2012-01-10T08:49:00.000-08:00</published><updated>2012-01-10T08:49:42.651-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='ágil'/><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><title type='text'>Formación gratuita sobre Dirección Ágil de Proyectos</title><content type='html'>&lt;div class="MsoNormal" style="margin: 0cm 0cm 6pt;"&gt;&lt;span style="font-size: 11pt;"&gt;&lt;span style="font-family: Arial;"&gt;En LinkedIn he visto publicado un post interesante. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 6pt;"&gt;&lt;span style="font-size: 11pt;"&gt;&lt;span style="font-family: Arial;"&gt;Para los interesados en la dirección ágil de proyectos,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 11pt;"&gt;&lt;span style="font-family: Arial;"&gt;Kybele Consulting (consultora especializada en formación y métodos ágiles), ha lanzado un curso gratuito y no presencial sobre “Dirección ágil de proyectos”:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin: 0cm 0cm 6pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;span style="font-size: 11pt; mso-fareast-font-family: Arial;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font-family: Arial;"&gt;-&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 11pt;"&gt;&lt;span style="font-family: Arial;"&gt;Se enviarán las lecciones de forma semanal por correo electrónico&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin: 0cm 0cm 6pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;span style="font-size: 11pt; mso-fareast-font-family: Arial;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font-family: Arial;"&gt;-&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 11pt;"&gt;&lt;span style="font-family: Arial;"&gt;Inscripciones en: &lt;/span&gt;&lt;a href="http://www.cioagil.com/"&gt;&lt;span style="color: #72c7e7; font-family: Arial;"&gt;http://www.cioagil.com/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Arial;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin: 0cm 0cm 6pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;span style="font-size: 11pt; mso-fareast-font-family: Arial;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font-family: Arial;"&gt;-&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 11pt;"&gt;&lt;span style="font-family: Arial;"&gt;El único requisito es dar una cuenta de correo electrónico (corporativo o personal)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-5825113820254793147?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/5825113820254793147/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/01/formacion-gratuita-sobre-direccion-agil.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5825113820254793147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5825113820254793147'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/01/formacion-gratuita-sobre-direccion-agil.html' title='Formación gratuita sobre Dirección Ágil de Proyectos'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-5703364744095672042</id><published>2012-01-10T02:37:00.000-08:00</published><updated>2012-01-10T02:37:32.609-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Nuevos Virtual Labs para SQL Server 2012</title><content type='html'>Para probar las nuevas características de Microsoft SQL Server 2012, Microsoft ha dejado una serie de virtual labs disponibles para ello. Son entornos preconfigurados que facilitan el testeo de estas características.&lt;br /&gt;&lt;br /&gt;Los tenéis disponibles haciendo clic en el siguiente &lt;a href="http://www.microsoft.com/sqlserver/en/us/learning-center/virtual-labs.aspx"&gt;enlace&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-5703364744095672042?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/5703364744095672042/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/01/nuevos-virtual-labs-para-sql-server.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5703364744095672042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5703364744095672042'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/01/nuevos-virtual-labs-para-sql-server.html' title='Nuevos Virtual Labs para SQL Server 2012'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-6925257190822765856</id><published>2012-01-06T02:01:00.000-08:00</published><updated>2012-01-06T02:01:56.034-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>PMO (II)</title><content type='html'>Continuando el &lt;a href="http://calidadysoftware.blogspot.com/2011/11/pmo-introduccion.html"&gt;post&lt;/a&gt; anterior sobre PMO, vamos a añadir una serie de conceptos. Una PMO se encuentra al nivel de la gestión del portafolio. Éste, estaría a un nivel superior de la gestión del programa, y finalmente, la gestión del programa estaría un nivel por encima de la gestión de proyectos. Vamos a ver sus definiciones con algo más de detalle:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Gestión de Proyectos (Project Management):&lt;/strong&gt; la aplicación de conocimientos, capacidades, técnicas&amp;nbsp;y herramientas sobre las actividades del proyecto para satisfacer sus requisitos. (Fuente: Project Management Institute)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Gestión de Programa (Program Management):&lt;/strong&gt; la planificación coordinada, gestión y ejecución de múltiples proyectos relacionados que están dirigidos hacia los mismos objetivos estratégicos, de negocio u organizativos, para generar unos beneficios superiores a los que se hubieran obtenido mediante la ejecución individual.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Gestión del Portafolio (Portfolio Management):&lt;/strong&gt; los procesos, el gobierno y las herramientas utilizadas para planificar, crear, asegurar, balancear y comunicar la ejecución del protafolio de proyectos IT.&lt;/li&gt;&lt;/ul&gt;La Oficina de Proyectos permite:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Gestionar de una forma integral la comunicación&lt;/li&gt;&lt;li&gt;Aumentar el valor de la marca&lt;/li&gt;&lt;li&gt;Crear capital humano&lt;/li&gt;&lt;li&gt;Reducir los ciclos de proceso&lt;/li&gt;&lt;li&gt;Atender a los clientes teniendo en cuenta los retos y oportunidades del futuro, y al mismo tiempo no perder la visión del conocimiento adquirido en el pasado.&lt;/li&gt;&lt;/ul&gt;El modelo de trabajo del Gobierno IT que realiza la PMO es el siguiente:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Investiga y capacita&lt;/li&gt;&lt;li&gt;Define prácticas, metodologías y herramientas&lt;/li&gt;&lt;li&gt;Asesora a las áreas ejecutoras&lt;/li&gt;&lt;li&gt;Monitoriza, controla y realiza el seguimiento&lt;/li&gt;&lt;li&gt;Establece y monitoriza métricas&lt;/li&gt;&lt;li&gt;Estima y realiza seguimiento a los beneficios&lt;/li&gt;&lt;li&gt;Comunica evolución de la práctica&lt;/li&gt;&lt;/ul&gt;Bajo la directriz de la PMO, las áreas ejecutoras (los proyectos):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Gestionan y ejecutan sus proyectos&lt;/li&gt;&lt;li&gt;Aplican métodos y usan herramientas&lt;/li&gt;&lt;li&gt;Crean informes de seguimiento&lt;/li&gt;&lt;li&gt;Siguen cronogramas&lt;/li&gt;&lt;li&gt;Siguen presupuesto&lt;/li&gt;&lt;li&gt;Evalúan la obtención de beneficios&lt;/li&gt;&lt;/ul&gt;Los Procesos definidos por una PMO, establecen un nivel de madurez DEFINIDO. Sería el equivalente al nivel 3 de madurez:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nivel 5: Optimizado&lt;/li&gt;&lt;li&gt;Nivel 4: Gerenciado&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Nivel 3: Definido (Procesos)&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Nivel 2: Repetible&lt;/li&gt;&lt;li&gt;Nivel 1: Inicial&lt;/li&gt;&lt;li&gt;Nivel 0: ¡No Existe!&lt;/li&gt;&lt;/ul&gt;Dejaremos para un próximo post algunos temas interesantes como métricas, procesos, etc. de una PMO.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-6925257190822765856?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/6925257190822765856/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2012/01/pmo-ii.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6925257190822765856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6925257190822765856'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2012/01/pmo-ii.html' title='PMO (II)'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-2658783044490167067</id><published>2012-01-05T13:26:00.000-08:00</published><updated>2012-01-05T13:26:51.359-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='Acelerador'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>Checklists</title><content type='html'>Las checklists (o listas de control, nombre con el que aparece en algunos sitios web), suponen una herramienta fundamental en el mundo del desarrollo software.&lt;br /&gt;&lt;br /&gt;¿Que qué son?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Son como los puntos de control de un coche: una lista de verificaciones a realizar,&amp;nbsp; de acciones a llevar a cabo para un fin único. Cuando llevas el coche a arreglar, sabes qué le van a hacer (o mejor aún, según cuánto pagues, sabes cuántas cosas van a comprobar). Si queremos verificar un vehículo, lo más fácil es coger una lista, y seguirla: neumáticos, aceite, etc, etc. Pueden extenderse fácilmente para cualquier cosa: lista de la compra, lista de cosas para&amp;nbsp; un viaje, etc.&lt;/li&gt;&lt;li&gt;Ocurre lo mismo cuando queremos verificar algo en el mundo del software. ¿Cómo saber que lo hacemos bien? En el mundo del software son vitales ya que permiten aprovechar la experiencia de las personas, y resumirla en acciones concretas para tareas de control o verificación.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;¿Que porqué son una ayuda fundamental?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Son sencillas de usar.&lt;/li&gt;&lt;li&gt;Disminuyen los errores en las cosas que hacemos.&lt;/li&gt;&lt;li&gt;Homogeneizan las tareas (sabes que todo el mundo van a seguir la misma secuencia de cosas)&lt;/li&gt;&lt;li&gt;Te permiten justificar ante el cliente u otra persona, qué has hecho exactamente. Si conforme hacemos las tareas de la checklist, rellenamos un S/N, o ponemos un comentario, quedará constancia de lo que se ha hecho y su resultado. Esto evita muchos problemas, y da una imagen de seriedad y profesionalidad.&lt;/li&gt;&lt;li&gt;Facilitan su uso por personal menos experimentado o junior.&lt;/li&gt;&lt;li&gt;Son fáciles de implementar como métricas (ejemplo: ¿cuántos puntos de control han fallado de los N de la checklist?)&lt;/li&gt;&lt;li&gt;Permiten hacer fácilmente comparaciones: si un software ha fallado el 20% de las pruebas de la checklist, puede usarse para compararlo con las mismas pruebas en otros productos software.&lt;/li&gt;&lt;li&gt;Se aplica a productos software, a sistemas, a documentación, a procesos, ... a cualquier cosa.&lt;/li&gt;&lt;/ul&gt;Las checklists son la auténtica prueba de madurez, un nivel superior de hacer bien las cosas. Ya no tenemos el conocimiento en nuestra cabeza, sino que los pasos/acciones a realizar, los compartimos en una checklist para que el resto del equipo pueda realizar las mismas tareas y llegar a conclusiones similares.&lt;br /&gt;&lt;br /&gt;¿Y ejemplos concretos de ésto?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pues cuando vayamos a subir algo a producción, podemos tener una checklist de pasos/pruebas a realizar. Pueden ser pasos previos (verificación de que está todo lo necesario, personas, equipos, etc.). También estarían los pasos a realizar para la propia subida a producción. Finalmente, se incluirían las tareas posteriores: verificar que todo está ok, borrar los ficheros temporales, hacer logoff con el usuario utilizado, enviar un correo de notificación de éxito, etc, etc.&lt;/li&gt;&lt;li&gt;También, antes de cada entrega de un documento al cliente, sería interesante tener una checklist del estilo: ¿tiene el formato adecuado (S/N)? ¿se ha utilizado la plantilla correcta (S/N)? ¿el contenido ha sido revisado (S/N)? ¿Se ha versionado correctamente (S/N)? ¿Se ha enviado a todos los destinatarios adecuados (S/N)?&lt;/li&gt;&lt;li&gt;Etc, etc&lt;/li&gt;&lt;/ul&gt;Así que ya sabéis. Poned más checklists en vuestra vida.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-2658783044490167067?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/2658783044490167067/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/checklists.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/2658783044490167067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/2658783044490167067'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/checklists.html' title='Checklists'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-7689985071284685</id><published>2011-12-26T07:28:00.000-08:00</published><updated>2012-01-27T09:40:14.680-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='ágil'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>Las 10 prácticas ágiles más útiles (I)</title><content type='html'>Hoy voy a hablar de un tema muy en boga: las técnicas o prácticas ágiles. De ellas, se ha hecho un estudio a expertos profesionales en la materia. El estudio ha sido conducido por Teodora Bozheva, una excelente formadora en algún curso de calidad en el que he tenido el placer de asistir. Podéis ver los datos fuente &lt;a href="http://es.berriprocess.com/"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pero tal&amp;nbsp;como estuve hablando con Teodora, los datos no son más que eso, así que me animé a pedirle permiso para a partir de sus datos, darle una vuelta de tuerca y llegar más a fondo. Vamos con ello intentar responder a varias preguntas no sólo sobre las técnicas agiles, sino también sobre nuestro propio conocimiento de dichas técnicas.&lt;br /&gt;&lt;br /&gt;Vamos a partir de los resultados, que podemos ver en la siguiente gráfica:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-erjN3ZvGQRk/TvSx5cSu9tI/AAAAAAAAAIY/MM_rk-2AfAo/s1600/las+10+practicas+agiles+mas+utiles.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" rea="true" src="http://1.bp.blogspot.com/-erjN3ZvGQRk/TvSx5cSu9tI/AAAAAAAAAIY/MM_rk-2AfAo/s400/las+10+practicas+agiles+mas+utiles.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Lo primero a destacar, es que no hay una diferencia abismal entre los primeros y los últimos en este grupo.&lt;br /&gt;Vamos a ver un poco los más útiles:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Automated Builds: la compilación automática, forma parte tradicionalmente de los sitemas de integración continua, aunque es perfectamente válido el considerarlo de forma autónoma.&lt;/li&gt;&lt;li&gt;Continuous integration: el 2º clasificado, viene a confirmar que la automatización de tareas, se sigue considerando una técnica ágil muy útil.&lt;/li&gt;&lt;/ul&gt;Hagamos un breve inciso aquí para tener en cuenta que los dos primeros clasificados están muy relacionados. De hecho, habrá defensores que lo consideren como uno sólo. Los dos siguientes, están también relacionados, y sí que podrían considerarse técnicas puramente ágiles (mucho más asociadas a las metodologías ágiles que las dos primeras, por ejemplo):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Daily stand up meeting: la técnica de realizar breves reuniones de pie, diariamente, y de forma informal pero con un objetivo definido de poner en común las tareas en curso de cada uno, y los problemas encontrados o que nos atascan.&lt;/li&gt;&lt;li&gt;Iteration planning: tradicionalmente vinculado a la programación extrema (Extreme Programming o XP), esta práctica consiste en la ejecución de la iteración: desde el desglose y estimación de las tareas, su asignación, y posterior desarrollo, ejecución de pruebas unitarias, etc., hasta la siguiente iteración.&lt;/li&gt;&lt;/ul&gt;Algunos puntos importantes a indicar aquí sobre estas dos prácticas: la primera es extremadamente económica de implementar. Cualquier proyecto puede incorporar esta técnica, sin coste ni importantes efectos colaterales (salvo quizás el incremento de visión de los integrantes del equipo). La segunda, sin embargo, exige una involucración más profunda en las metodologías ágiles. Exige por tanto, un cambio significativo en la forma de organizar el trabajo, planificarlo, y reportarlo.&lt;br /&gt;&lt;br /&gt;Para terminar hoy, vamos a quedarnos con dos técnicas ágiles, que a pesar de estar incluidas aquí, son en realidad técnicas habituales en cualquier desarrollo de software ("ágil" o no):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Coding Standards: Se trata de disponer de estándares de codificación&amp;nbsp; o de desarrollo específicos del proyecto.&lt;/li&gt;&lt;li&gt;Unit Testing: consiste en la planificación, diseño, programación y ejecución de pruebas enfocadas a probar un único componente o función.&lt;/li&gt;&lt;/ul&gt;En primer lugar resulta curioso el considerarlos técnicas ágiles. En segundo lugar, son aspectos prácticamente de uso obligatorio en cualquier desarrollo moderno de hoy en día. En cuanto al coste, ambos son elementos costosos de implantar, ya que requieren de formación específica, y en algunos casos, de herramientas específicas tanto para su uso como para su verificación.&lt;br /&gt;&lt;br /&gt;Dejaremos para otro día, la segunda parte de este artículo, revisando las técnicas que quedan.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-7689985071284685?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/7689985071284685/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/12/las-10-practicas-agiles-mas-utiles.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7689985071284685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7689985071284685'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/12/las-10-practicas-agiles-mas-utiles.html' title='Las 10 prácticas ágiles más útiles (I)'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-erjN3ZvGQRk/TvSx5cSu9tI/AAAAAAAAAIY/MM_rk-2AfAo/s72-c/las+10+practicas+agiles+mas+utiles.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-5876767334533051584</id><published>2011-12-21T10:40:00.000-08:00</published><updated>2011-12-21T10:44:54.039-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>Cuanto antes empieces a codificar más tarde terminará el proyecto</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-PyJUf0v53oY/TvIpGT1YNyI/AAAAAAAAAIE/xEn8sHYd4fQ/s1600/i070903dilbert.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="123" src="http://3.bp.blogspot.com/-PyJUf0v53oY/TvIpGT1YNyI/AAAAAAAAAIE/xEn8sHYd4fQ/s400/i070903dilbert.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Este proverbio, lo he encontrado en la web de &lt;a href="http://www.calidaddelsoftware.com/"&gt;Calidad del Software&lt;/a&gt;. Le he dado una leída, y me he dicho: "pero qué pedazo de tontería es ésta".&lt;br /&gt;&lt;br /&gt;Pensándolo un poco más despacio...no deja de tener razón. Me explicaré.&lt;br /&gt;&lt;br /&gt;En mi experiencia, han sido ya muchos proyectos durante todos estos años en los que aunque se ha hecho el debido análisis y diseño, la presión por parte de la gerencia ha acabado obligando a que "el equipo que vaya echando código, y tú en paralelo ya harás el análisis y diseño". Al final, incluso la planificación iba muy por detrás de la ejecución de actividades.&lt;br /&gt;&lt;br /&gt;Esto tiene sus contrapartidas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Es necesario dar una visión (funcional), que aunque incompleta, permita al equipo "saber hacia dónde va". Esto obliga a que al menos, esté completada esa visión en el análisis funcional. Es decir, no basta con solamente poner&amp;nbsp;los requisitos (historias de usuario en Scrum) que vayan a empezar de forma inmediata.&lt;/li&gt;&lt;li&gt;Aunque creamos saber "hacia dónde va" nuestro desarrollo, no todo puede hacerse en base a "bloques independientes". Muchas veces, aceptamos que el software evoluciona en cuanto a sus requisitos (véase SCRUM). Sin embargo, estamos ciegos al pensar que la arquitectura del sistema no va a cambiar también. Y aquí es donde los desarrollos iterativos chocan con la triste realidad de tener que incorporar en cada iteración (o release), un gran esfuerzo en integrarse con lo existente, y probarlo todo otra vez.&lt;/li&gt;&lt;li&gt;El tamaño importa: en un desarrollo pequeño, estos comentarios pueden ser de escasa importancia. El esfuerzo en "asentar" un software sin análisis o diseño o arquitectura, puede ser despreciable. Conforme el tamaño del software aumenta (y es importante identificar muy al principio el tamaño del software), todo esto cobra importancia de forma exponencial.&lt;/li&gt;&lt;li&gt;Muchas veces se olvida que la documentación de análisis, diseño y arquitectura son parte de los entregables. ¿Por qué? Simplemente porque realizar el mantenimiento de una aplicación, basándose solamente en los comentarios que nos han dejado los antecesores, es un suicidio. Queda muy bien lo de "yo no necesito documentar, ya que dejo buenos comentarios". Esta frase es muy típica de la gente poco experimentada, que apenas ha hecho mantenimientos, o los ha hecho de aplicaciones con poca trayectoria.&lt;/li&gt;&lt;/ul&gt;Esta frase tampoco tiene porqué ser tomada a la inversa: si vamos retrasando la programación, llega un punto en que la definición ya está casi cerrada. Es absurdo que pretendamos tener el 100% de la documentación cerrada para empezar a programar. Hay que evaluar la madurez de lo que tenemos, y controlar los riesgos de que cambien las cosas. &lt;br /&gt;&lt;br /&gt;A este respecto, nada mejor que contar con la experiencia de un buen analista y un buen arquitecto que cierren los puntos clave, un jefe de proyecto experimentado que coordine la aprobación y seguimiento de esta documentación inicial....y a partir de ahí, versionar esa documentación.&lt;br /&gt;&lt;br /&gt;La desgracia, es que muchos programadores (por no decir todos), se sienten cómodos aplicando cambios al código. Pero no actualizando la documentación conforme esos mismos cambios. Además, esto se ve agravado con el hecho de que los jefes de equipo y proyecto no fomentan actualizar esa documentación. Así que dada esta escuela de comportamiento, seguimos fomentando las malas prácticas.&lt;br /&gt;&lt;br /&gt;Y ojo, no se trata de tocar la documentación con cada línea de código. Si sabemos qué se ha tocado, bastaría juntar cada 2, 3 o 4 semanas de desarrollo, los principales cambios técnicos y funcionales, y dedicar un rato a que algunos documentos no se desfasaran. También aquí hay que ser pragmáticos, si el entregable principal es el documento funcional, apliquemos ahí el mayor esfuerzo. Si es el técnico, pues lo mismo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-5876767334533051584?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/5876767334533051584/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/12/cuanto-antes-empieces-codificar-mas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5876767334533051584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5876767334533051584'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/12/cuanto-antes-empieces-codificar-mas.html' title='Cuanto antes empieces a codificar más tarde terminará el proyecto'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-PyJUf0v53oY/TvIpGT1YNyI/AAAAAAAAAIE/xEn8sHYd4fQ/s72-c/i070903dilbert.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-893104441311531698</id><published>2011-12-20T13:49:00.000-08:00</published><updated>2011-12-20T13:53:30.714-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>Hablemos de estándares</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-BLkY_3lLeE4/TvEDx-V2JtI/AAAAAAAAAH8/5H7f8OYFnYk/s1600/Dilbert_-_Asi_se_preparan_los_estandares_tecnicos.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-BLkY_3lLeE4/TvEDx-V2JtI/AAAAAAAAAH8/5H7f8OYFnYk/s400/Dilbert_-_Asi_se_preparan_los_estandares_tecnicos.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Los estándares, en el mundo del software, son uno de los facilitadores más sencillos que existen. Sin embargo, tienen muchos detractores y están muy mal vistos por colectivos que ven en el desarrollo del software un medio de expresión, un "arte", y que están en contra de las normas y directrices.&lt;br /&gt;&lt;br /&gt;Las normas y directrices ayudan a luchar contra las diferencias que presentan los distintos componentes de un proyecto:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Diversidad cultural&lt;/li&gt;&lt;li&gt;Creencias &lt;/li&gt;&lt;li&gt;Niveles de conocimiento &lt;/li&gt;&lt;li&gt;Años de experiencia &lt;/li&gt;&lt;li&gt;Personalidad &lt;/li&gt;&lt;li&gt;Barrera idiomática &lt;/li&gt;&lt;li&gt;Jerga Profesional&lt;/li&gt;&lt;/ul&gt;¿Y qué deberían cumplir estas normas, reglas o estándares? &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Simples, fáciles de entender &lt;/li&gt;&lt;li&gt;Si es posible, incluir ejemplos de uso, y demostración de su utilidad práctica&lt;/li&gt;&lt;li&gt;Los estándares no pueden ser extensos. Nadie va a recordar un documento de 200 hojas.&lt;/li&gt;&lt;li&gt;Los estándares pueden ser muchos. Por ejemplo, si en nuestra empresa se programa en 20 lenguajes, puede haber una mini guía o estándar por cada uno.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Recomendaciones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mantener vivos los estándares. Pocas cosas hay peores que dejar las cosas en el olvido. Las tecnologías evolucionan, y los estándares están muy relacionados con las tecnologías del momento. Es por eso que los documentos donde se recojan los estándares han de estar actualizados constantemente. Las actualizaciones han de estar disponibles, y la gente ha de conocer de forma clara el motivo de la actualización.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Evitar actualizaciones muy frecuentes: por ejemplo, que sólo los proyectos nuevos a partir de una fecha utilicen la última versión de los estándares. No hay peor cosa para la gente que esté en un proyecto, que la distraigan cambiando las normas. Bastante cambian ya los requisitos, los hitos, las entregas, etc., como para que encima cambie la forma en que hacemos las cosas en el día a día.&lt;/li&gt;&lt;li&gt;Realizar formaciones. De nada sirve dar a la gente al principio del proyecto un documento para que se lo lea. Tampoco será muy útil tratar de castigar o penalizar a quien no lo siga. Mucho más práctico será realizar cursos periódicamente, que además de sobre los estándares, puede incluir las últimas novedades de la tecnología que se use (esto suele ser mejor reclamo que los estándares en sí).&lt;/li&gt;&lt;li&gt;Incentivar el uso. Puede aplicarse un incentivo positivo: por ejemplo, dar premios o bonus a los desarrolladores que mejor resultados tengan en los tests relacionados con estos estándares (y mejor si son pruebas automatizadas).&lt;/li&gt;&lt;li&gt;Penalizar el desuso. Yo en general, estoy en contra de esta práctica, pero habrá quien la vea útil. Es la contraria de la anterior, y consistiría en penalizar a los desarrolladores con peores prácticas (desde el punto de vista de los estándares recomendados).&lt;/li&gt;&lt;/ul&gt;Pues nada, ahora que sabemos la teoría, dejaremos para un próximo post el ir aterrizando estándares "palpables" para algunas tecnologías. Nos vemos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-893104441311531698?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/893104441311531698/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/12/hablemos-de-estandares.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/893104441311531698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/893104441311531698'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/12/hablemos-de-estandares.html' title='Hablemos de estándares'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-BLkY_3lLeE4/TvEDx-V2JtI/AAAAAAAAAH8/5H7f8OYFnYk/s72-c/Dilbert_-_Asi_se_preparan_los_estandares_tecnicos.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-1359075216907931827</id><published>2011-12-13T01:07:00.000-08:00</published><updated>2011-12-13T01:07:21.075-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><category scheme='http://www.blogger.com/atom/ns#' term='pruebas'/><title type='text'>Por fin un estándar para las pruebas: ISO 29119</title><content type='html'>Se está haciendo un importante esfuerzo desde hace ya algún tiempo para estandarizar las pruebas de software. El resultado de esto es el estándar&amp;nbsp;ISO/IEC 29119 Software Testing, que todavía no está terminado, sino que se encuentra en revisión pública de la versión borrador. El portal de trabajo se encuentra en: &lt;a href="http://softwaretestingstandard.org/"&gt;http://softwaretestingstandard.org/&lt;/a&gt;, donde encontraréis información actualizada del estado y contenido.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;¿Qué pretende este estándar?&lt;/strong&gt;&lt;br /&gt;Su objetivo es recopilar la terminología, procesos, documentación y técnicas para todo&amp;nbsp;el ciclo de vida de pruebas del software.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;¿Cuál es su contenido?&lt;/strong&gt;&lt;br /&gt;El contenido está estructurado (actualmente a fecha 12-12-2011) en cuatro partes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Parte 1: Definiciones y Vocabulario&lt;/li&gt;&lt;li&gt;Parte 2: Proceso de Pruebas&lt;/li&gt;&lt;li&gt;Parte 3: Documentación de Pruebas&lt;/li&gt;&lt;li&gt;Parte 4: Técnicas de Pruebas&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;¿En qué se basa?&lt;/strong&gt;&lt;br /&gt;Se basa en las principales normas que actualmente son los referentes de esta área:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;BSI (British Standards Institution): BS 7925-1, Software Testing: Part 1-Vocabulary y BS 7925-2, Software Testing: Part 2-Software Component Testing.&lt;/li&gt;&lt;li&gt;IEEE Std. 829, Software Test Documentation y IEEE Std 1008, Software Unit Testing, IEEE Std 1012-1998 Software Verification and Validation y IEEE Std 1028-1997 Software Reviews.&lt;/li&gt;&lt;li&gt;ISO/IEC 12207, Software Life Cycle Processes, ISO/IEC 15289, System and Software Life Cycle Process Information Products y ISO/IEC TR 19759, Guide to the Software Engineering Body of Knowledge&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-1359075216907931827?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/1359075216907931827/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/12/por-fin-un-estandar-para-las-pruebas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/1359075216907931827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/1359075216907931827'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/12/por-fin-un-estandar-para-las-pruebas.html' title='Por fin un estándar para las pruebas: ISO 29119'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-606371273320155107</id><published>2011-12-12T09:17:00.000-08:00</published><updated>2011-12-12T09:17:32.353-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>Sistemas de Gestión de Proyectos con Software Libre</title><content type='html'>Presentado por el &lt;a href="http://www.wiziq.com/pmi-spain-barcelona-chapter858463"&gt;PMI Spain Barcelona Chapter&lt;/a&gt;, y presentado por el ponente José Moro, va a tener lugar una charla (webminar)&amp;nbsp;con el título "Sistemas de Gestión de Proyectos con Software Libre", el próximo jueves 15 de Diciembre de 2011.&lt;br /&gt;&lt;br /&gt;Tenéis toda la información en: &lt;a href="http://www.wiziq.com/online-class/686280-sistemas-de-gesti%C3%B3n-de-proyectos-con-software-libre"&gt;link&lt;/a&gt;. Fuente: publicado por el propio José Moro en &lt;a href="http://www.linkedin.com/groupItem?view=&amp;amp;gid=855957&amp;amp;type=member&amp;amp;item=84569253&amp;amp;qid=9d20a5b3-468b-4e6b-9005-c22de6366ee2&amp;amp;trk=group_most_recent_rich-0-b-ttl&amp;amp;goback=%2Egmr_855957"&gt;Linkedin&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A modo de resumen, la agenda presentada es la siguiente:&lt;br /&gt;1. ¿Necesitamos un sistema de gestión de proyectos?&lt;br /&gt;2. ¿Qué le pedimos a nuestro sistema de gestión de proyectos?&lt;br /&gt;3. Quiero uno, ¿por dónde empiezo?&lt;br /&gt;4. Aspectos a tener en cuenta a la hora de seleccionar el sistema de gestión de proyectos&lt;br /&gt;5. Conclusiones&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-606371273320155107?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/606371273320155107/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/12/sistemas-de-gestion-de-proyectos-con.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/606371273320155107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/606371273320155107'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/12/sistemas-de-gestion-de-proyectos-con.html' title='Sistemas de Gestión de Proyectos con Software Libre'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-3130758133786930080</id><published>2011-12-11T04:09:00.000-08:00</published><updated>2011-12-11T13:22:58.348-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>Chistes de Testers</title><content type='html'>Os traigo unos chistes que me han parecido buenísimos, y que están relacionados con el mundo del testing. Los que hayáis trabajado en testing, espero que os guste. Los que no...no os vendría mal dedicar algo más de tiempo a probar vuestros propios productos!&amp;nbsp;. Fuente: &lt;a href="http://www.softqatest.net/?p=109"&gt;Link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Developer&lt;/strong&gt;: The glass is half full&lt;br /&gt;&lt;strong&gt;Pessimistic Tester&lt;/strong&gt;: The glass is twice as big as required&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Developer&lt;/strong&gt;: This code hasn’t yet been tested. It’s not known if it has any bugs.&lt;br /&gt;&lt;strong&gt;Pessimistic Tester&lt;/strong&gt;: This code hasn’t yet been tested. It’s not known if it works.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Developer&lt;/strong&gt;: We are 90% done.&lt;br /&gt;&lt;strong&gt;Pessimistic Tester:&lt;/strong&gt; We don’t know when we’ll be done, if ever&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Developer:&lt;/strong&gt; We will refactor the code to make it better&lt;br /&gt;&lt;strong&gt;Pessimistic Tester:&lt;/strong&gt; They are throwing out the working code and replacing it with an unknown quantity&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Developer&lt;/strong&gt;: I only changed one line of code&lt;br /&gt;&lt;strong&gt;Pessimistic Tester:&lt;/strong&gt; The entire system must be retested&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Developer&lt;/strong&gt;: The code is the design&lt;br /&gt;&lt;strong&gt;Pessimistic Tester&lt;/strong&gt;: There is no design&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Develope&lt;/strong&gt;r: We’ll fix those bugs later, when we have time&lt;br /&gt;&lt;strong&gt;Pessimistic Tester&lt;/strong&gt;: We never have enough time to fix the bugs&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Developer&lt;/strong&gt;: This build is feature complete&lt;br /&gt;&lt;strong&gt;Pessimistic Tester&lt;/strong&gt;: The features exist; some are completely broken&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Developer&lt;/strong&gt;: Anything is possible, given enough time&lt;br /&gt;&lt;strong&gt;Pessimistic Tester&lt;/strong&gt;: Everything has flaws, and given enough time I can prove it&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Developer&lt;/strong&gt;: Of course it will work&lt;br /&gt;&lt;strong&gt;Pessimistic Tester&lt;/strong&gt;: It might work, but probably won’t&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Developer&lt;/strong&gt;: One last bug fix, and we can ship tomorrow&lt;br /&gt;&lt;strong&gt;Pessimistic Tester&lt;/strong&gt;: Fixing this one bug will likely lead to two more&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Developer&lt;/strong&gt;: Stop finding bugs, or we’ll never be done&lt;br /&gt;&lt;strong&gt;Pessimistic Tester&lt;/strong&gt;: Stop creating bugs, so I can find them all&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Developer&lt;/strong&gt;: There’s no need for more tests&lt;br /&gt;&lt;strong&gt;Pessimistic Tester&lt;/strong&gt;: Let’s just run a few more tests to be sure&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Developer&lt;/strong&gt;: There is no I in TEAM&lt;br /&gt;&lt;strong&gt;Pessimistic Tester&lt;/strong&gt;: We can’t spell BUGS without U&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Developer&lt;/strong&gt;: That’s an “undocumented feature”&lt;br /&gt;&lt;strong&gt;Pessimistic Tester:&lt;/strong&gt; That’s a bug&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Developer&lt;/strong&gt;: I like to build things&lt;br /&gt;&lt;strong&gt;Pessimistic Tester&lt;/strong&gt;: I like to break things&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optimistic Developer&lt;/strong&gt;: Sure, we can use the Beta version of this component in Production&lt;br /&gt;&lt;strong&gt;Pessimistic Tester&lt;/strong&gt;: We should wait until version 2.1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-3130758133786930080?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/3130758133786930080/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/12/chistes-de-testers.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/3130758133786930080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/3130758133786930080'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/12/chistes-de-testers.html' title='Chistes de Testers'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-7825893336512475356</id><published>2011-12-09T02:53:00.000-08:00</published><updated>2011-12-09T02:59:25.734-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Arquitectura'/><title type='text'>Top Mantra de los Arquitectos (I)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-rEVupEfgAew/TuHpj3gFw5I/AAAAAAAAAHw/n_p2Fr-5LdA/s1600/Dilbert_architect.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="197" src="http://3.bp.blogspot.com/-rEVupEfgAew/TuHpj3gFw5I/AAAAAAAAAHw/n_p2Fr-5LdA/s400/Dilbert_architect.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Estaba leyendo uno de mis autores favoritos (Dino Esposito), con su "Microsoft .NET: Architecting Applications for the Enterprise", y entre otras muchas perlas que conviene leer y que os recomiendo encarecidamente,&amp;nbsp;contiene un pequeño resumen de 10 magníficas perlas (mantras en su libro), que no por sencillas, son menos importantes en nuestro trabajo. Vamos a darles un repaso:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Mantra #1: "Depende"&lt;/strong&gt;. Ademas de ser una respuesta socorrida para aquellos que no tienen ni idea, por desgracia es también una respuesta de los más experimentados. Pues sí, depende. Depende de la situación, del contexto. Las decisiones arquitectónicas son sólo eso: decisiones basadas en la experiencia y en el conocimiento del proyecto, del cliente y del equipo de desarrollo. Basándose en los tres anteriores, hay que elaborar la lista de soluciones para cada una de las facenas de nuestra solución arquitectónica.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Mantra #2: "Los requisitos son Dios"&lt;/strong&gt;. He querido explícitamente no hablar de ellos en el mantra anterior, y es que los requisitos, aun formando parte de la especificación del proyecto, son mucho más importantes que el proyecto en sí para el arquitecto. No es fácil adaptar las cosas al equipo (si es que conseguimos un equipo estable de trabajo), como tampoco lo es adaptar la arquitectura al cliente (si es que conseguimos la colaboración del cliente, y si dicha colaboración es fructífera). Al final, los requisitos son la verdadera guía del proyecto. Cambiarán, por supuesto que cambiarán. Pero al final, es la labor inicial de análisis y el enfoque acertado de dichos requisitos, lo que marcará el éxito del proyecto. Los arquitectos sólo se limitarán a proporcionar la infraestructura tecnológica, las decisiones de comunicación, etc., para adaptarse a dichos requisitos.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Mantra #3: "Programar una interfaz". &lt;/strong&gt;De nuevo, los requisitos (en este caso de interfaz), van a ser la directriz principal de los desarrolladores. Sin interfaces, el código no tiene forma de prosperar. Serán sólo líneas de código sin un objetivo (como echar ladrillos al aire con la esperanza de que formen la pared tal y como se proyectó).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Mantra #4: "Hazlo simple, pero no simplón".&lt;/strong&gt; Aquí es donde un arquitecto se la juega. Las soluciones complejas, en las que el arquitecto pretende mostrar su conocimiento (cuando realmente se le ve el plumero de que le falta experiencia), nos llevan de forma inexorable al fracaso. Donde realmente se ve a los mejores profesionales brillar, es con soluciones simples y efectivas. Por desgracia, hay una débil frontera que hace que una solución simple, no se pueda simplificar más sin caer en lo absurdamente simple y escaso.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Mantra #5: "Herencia es sobre polimorfismo, no reutilización"&lt;/strong&gt;&lt;br /&gt;La herencia constituye un elemento fundamental de la programación orientada a objetos. Que la herencia permite reutilización, es correcto. Pero la reutilización como objetivo, es un gran error.&amp;nbsp;Dicho de otra forma, es mejor escribir una nueva clase específica para la tarea concreta, que heredar de otra que no lo está. Es mejor reescribir de forma enfocada a la solución concreta, que tratar de reutilizar todo formando una oscura maraña de dependencias que de seguro llevará al fracaso (y complicará la vida a los pobres programadores que osen completar la aplicación, y luego mantenerla).&lt;br /&gt;&lt;br /&gt;Y bueno, hasta aquí la primera parte de los 10 Top Mantra de los arquitectos. El próximo día...más.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-7825893336512475356?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/7825893336512475356/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/12/top-mantra-de-los-arquitectos-i.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7825893336512475356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7825893336512475356'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/12/top-mantra-de-los-arquitectos-i.html' title='Top Mantra de los Arquitectos (I)'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-rEVupEfgAew/TuHpj3gFw5I/AAAAAAAAAHw/n_p2Fr-5LdA/s72-c/Dilbert_architect.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-6711944877371137669</id><published>2011-12-03T01:03:00.000-08:00</published><updated>2011-12-03T01:03:12.184-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Defectos de Scrum (II)</title><content type='html'>&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-EwXCq1LOBo4/TtnlrnZ5CbI/AAAAAAAAAHo/jGEL_m0eLOs/s1600/dilbert2002220051116.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="140" src="http://1.bp.blogspot.com/-EwXCq1LOBo4/TtnlrnZ5CbI/AAAAAAAAAHo/jGEL_m0eLOs/s400/dilbert2002220051116.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;En un reciente post hablaba de &lt;a href="http://calidadysoftware.blogspot.com/2011/11/defectos-de-scrum-i.html"&gt;defectos de Scrum&lt;/a&gt;. Con este título, yo pretendía destacar los riesgos habituales en proyectos que por el motivo que sean, no encajan con las premisas de estas metodologías.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Vamos a ver a continuación una segunda parte con nuevos supuestos o problemas que presenta la implantación de una metodología como SCRUM, y que tendremos que considerar a la hora de implantarla.&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-list: l0 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;En estas metodologías hay entregas frecuentes y estables, lo que supone probar y estabilizar un producto con un número mínimo de funcionalidades. Por desgracia, a pesar de que las metodologías ágiles se presentan como preparadas para el cambio, tienen el mismo problema que las metodologías tradicionales: las funcionalidades de una iteración pueden cambiar en la siguiente. Al final, una iteración es como un mini proyecto: tiene desarrollo, pruebas, un esfuerzo de integración con la funcionalidad existente, y despliegue. Por mucha involucración que queramos tener del usuario, nada impide que las funcionalidades cambien. Si pensáramos eso, entonces ¿porqué cambian en las metodologías tradicionales? ¿Es que allí el usuario nos ignora, no se involucra, va en contra de sí mismo? ¿Es que los analistas de las metodologías tradicionales son unos inútiles, y los de las ágiles unos hachas?&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-list: l0 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;Presupone que no es necesaria la férrea gestión de recursos de otras metodologías “clásicas”. El problema está en cómo coordinar pues los desarrollos con la presencia de personal de sistemas, DBA’s, disponibilidad de recursos hardware, etc… El problema es que estas metodologías ágiles se venden desde el punto de vista del programador. Es el cliente el que debe sopesar si necesita o no un manual, una documentación exhaustiva, un seguimiento del proyecto, un control de costes y gastos...no el equipo. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-list: l0 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;Esta metodología no parece estar pensada para equipos de desarrollo dispersos en el espacio o en el tiempo. SCRUM presupone reuniones diarias cortas y presenciales. Presupone una colaboración de los equipos muy integrada. Eso no quiere decir que no se pueda trabajar en remoto. Simplemente, que en el segundo caso, puede haber dificultades adicionales que en pequeños equipos cercanos, no existen.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-list: l0 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;Se habla de que existe incompatibilidad o contradicción entre el uso de metodologías ágiles y que la empresa esté certificada CMMi. (Actualmente, con CMMi&amp;nbsp;en su versión 1.3, esto ya no es cierto). Por desgracia, existen muchas administraciones públicas nacionales e internacionales que exigen a sus proveedores la certificación CMMi (entre otras).&amp;nbsp;El Manifiesto Ágil en que se basan estas metodologías ágiles, habla de valorar más el individuo y el código frente a documentación (por ejemplo). Pero esto no quiere decir, que haya que hacerse lo que quiera el equipo, sino que ante la falta de otras directrices (es decir, si nadie pide documentación), se de mas importancia al código. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-list: l0 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;Los concursos públicos y muchos clientes privados exigen la certificación CMMi de la empresa, pero es raro que un cliente exija una certificación en metodologías ágiles (que por otro lado no existe tal, sino que es la persona quien se certifica ScrumMaster o equivalente). Esto es un problema para las metodologías ágiles, que chocan ante la falta de un auténtico certificado de empresa. La gente va y viene, pero es la empresa la que necesita ganar proyectos.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-list: l0 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;La falta de documentación detallada es un grave problemas en clientes de sectores legal, financiero, público,… y en general en proyectos grandes que requieran posterior mantenimiento, o en los que simplemente el cliente exige la documentación como parte del contrato.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-list: l0 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;En general, los métodos ágiles promueven la iniciativa e independencia del desarrollador (propietario del bloque funcional que está desarrollando), lo que puede derivar en que se implementen funcionalidades asociadas o paralelas NO SOLICITADAS, que terminen retrasando y complicando el desarrollo.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-list: l0 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;También existen problemas en la implantación de grandes clientes en los que varios proveedores interactúen. En estos casos, es muy importante definir documentación que permita la integración entre proveedores, tema que las metodologías ágiles (puras) suelen dificultar.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;Con las que ya había en el anterior post, parece que hay muchas, y así es. ¿Estoy queriendo decir que SCRUM y en general las metodologías ágiles son problemáticas o difíciles de implantar? ¿O ineficaces? Pues no. Problemas hay en todas partes. Lo que no puede ser es que como veo constantemente en la red, vanagloriemos a las metodologías ágiles como el mantra que nos va a salvar del desastre en que nos han dejado las metodologías tradicionales. Hay que tener en cuenta las limitaciones de dichas metodologías, y saber adaptarlas a los proyectos. Si caemos en el purismo&amp;nbsp; y tratamos de implantar las metodologías por ellas mismas, estaremos perdiendo de vista los objetivos de los proyectos. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES;"&gt;Este post no deja de ser una visión general de riesgos como en cualquier otro proyecto, pero esta vez desde el punto de vista de la metodología.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-6711944877371137669?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/6711944877371137669/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/12/defectos-de-scrum-ii.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6711944877371137669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6711944877371137669'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/12/defectos-de-scrum-ii.html' title='Defectos de Scrum (II)'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-EwXCq1LOBo4/TtnlrnZ5CbI/AAAAAAAAAHo/jGEL_m0eLOs/s72-c/dilbert2002220051116.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-5491492300207233613</id><published>2011-12-01T14:39:00.000-08:00</published><updated>2011-12-01T14:39:37.520-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>La eficacia de las encuestas de satisfacción</title><content type='html'>&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--7vAjh5gJoU/TtgCEioXYJI/AAAAAAAAAG4/IT9QAnCE718/s1600/dilbert_satisfaccion_cliente.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="283" src="http://4.bp.blogspot.com/--7vAjh5gJoU/TtgCEioXYJI/AAAAAAAAAG4/IT9QAnCE718/s400/dilbert_satisfaccion_cliente.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: Calibri;"&gt;Un tema que se suele dejar de lado a la hora de controlar un proyecto y tener conocimiento sobre él, son las encuestas de satisfacción.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;b&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: Calibri;"&gt;¿Qué son?&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: Calibri;"&gt;Consisten en solicitar feedback al cliente en relación a un producto vendido o servicio prestado. Existe una normativa asociada, que es la UNE 66176, aunque esto no es muy conocido. La norma se llama “Sistemas de gestión de la calidad. Guía para la medición, seguimiento y análisis de la satisfacción del cliente”.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;b&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: Calibri;"&gt;¿Para qué sirven?&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: Calibri;"&gt;Se utilizan para una adecuada gestión de los servicios prestados, a través de la medición de distintos parámetros de satisfacción, su registro y posterior análisis y seguimiento. Si se supone que nuestros desarrollos tienen al cliente como target, deberemos de medir de alguna forma lo bien que estamos acertando en dicho objetivo.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;b&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: Calibri;"&gt;¿Qué deberíamos tener en cuenta?&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: Calibri;"&gt;No dejar pasar tiempo entre la prestación del servicio y la encuesta de satisfacción.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: Calibri;"&gt;No limitarnos a preguntar al cliente por nuestros servicios, sino cruzar esos datos con las incidencias/reclamaciones recibidas.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: Calibri;"&gt;Es posible que haya habido incidencias en el servicio que estén sólo en conocimiento de los distintos departamentos de la empresa (ventas, contabilidad, ingeniería, soporte, calidad, etc.)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: Calibri;"&gt;Hay clientes que se resisten a rellenarlas (en concreto, en el sector público es muy complicado). Hay que buscar fórmulas de incentivación (asociar la encuesta a la activación de la garantía, o ofrecer pequeños premios, incluirlo como un entregable obligatorio más por contrato, etc.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: Calibri;"&gt;La encuesta de satisfacción no debería hacerse en reunión “cara a cara”, ya que puede influenciar las respuestas.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: Calibri;"&gt;Es importante el sponsorship de la dirección. Este apoyo es vital para ayudar a gestionar la resistencia de los clientes a rellenar las encuestas.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: Calibri;"&gt;En los servicios prestados a medio-largo plazo, es importante que se haga periódicamente, para permitir la mejora del servicio. Si sólo se hace al final, estaremos actuando reactivamente en lugar de proactivamente.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: Calibri;"&gt;Incluso en los servicios llave en mano, es importante evaluar los momentos en que se realiza, para evitar subjetividades y dar tiempo a que el servicio postventa actúe adecuadamente.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 10pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: Calibri;"&gt;Esta información debe registrarse en los sistemas CRM para la adecuada gestión de la cartera de clientes.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-5491492300207233613?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/5491492300207233613/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/la-eficacia-de-las-encuestas-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5491492300207233613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5491492300207233613'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/la-eficacia-de-las-encuestas-de.html' title='La eficacia de las encuestas de satisfacción'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/--7vAjh5gJoU/TtgCEioXYJI/AAAAAAAAAG4/IT9QAnCE718/s72-c/dilbert_satisfaccion_cliente.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-7495936652854720218</id><published>2011-11-30T02:28:00.000-08:00</published><updated>2011-11-30T13:56:21.013-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><category scheme='http://www.blogger.com/atom/ns#' term='pruebas'/><title type='text'>¿Hace falta que un Tester sepa programar?</title><content type='html'>&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ie_1x1mnlY0/TtYJunEgufI/AAAAAAAAAEk/bs9xmOqBt-k/s1600/qa-analyst.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" dda="true" height="150" src="http://1.bp.blogspot.com/-ie_1x1mnlY0/TtYJunEgufI/AAAAAAAAAEk/bs9xmOqBt-k/s200/qa-analyst.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: inherit;"&gt;Esta es otra afirmación que me ha sorprendido y mucho, y que he oido mucho hablar de ella durante mis muchos años de práctica. A ver. La técnica que suelen usar los bloggers normalmente es plantearlo como una pregunta. Pero en realidad, muchas veces ya se tiene la respuesta, y el post se limita a dar una avalancha de argumentos a favor de su postura. Vamos a intentar dar una vuelta a los argumentos a favor y en contra. Pero ¿porqué programar? ¿porqué no hablamos de otros conocimientos como: UML, arquitectura, lenguajes de programación, herramientas de desarrollo,&amp;nbsp; herramientas de testing, sistemas, análisis...? Me da la sensación de que esta afirmación viene siempre de gente con un fondo importante en programación, y que por&amp;nbsp; tanto da mucho valor a este rol (y no digo que no lo tenga), y que sin querer desprecia el resto de roles en el ámbito del desarrollo software.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: inherit;"&gt;Dando una vuelta por internet, me encuentro con argumentos a favor y en contra. Pero sorprendentemente, muchos más a favor. Vayamos viéndolos:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: inherit;"&gt;A favor: &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: inherit;"&gt;¿Porqué no? He encontrado este argumento, y bueno...no se han roto la cabeza.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: inherit;"&gt;Depende. Vale. Otro argumento bien fundamentado. No en serio, vamos a intentar profundizar sobre éste, ya que soy partidario de él parcialmente. Lo haremos durante el post.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: inherit;"&gt;Todo ayuda. Ahí estoy de acuerdo. Cuanta más formación, mejor. Pero más bien la duda sería: ¿qué es mejor? ¿Que esté formado en programación y desarrollo (específico en lenguaje, en plataforma, en arquitectura...)? ¿O que esté formado en el negocio del cliente, que conozca su forma de trabajo, sus necesidades, su lenguaje específico? ¿Qué debe hacer realmente un tester?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: inherit;"&gt;Para poderle explicar al programador dónde está el fallo, ya que el conocimiento de programación le puede hacer inferir qué problema tiene, y así le ayuda a corregirlos antes. Este argumento me sorprende y mucho. Salvo que el tester sea uno de los programadores, y conozca la arquitectura en detalle, es difícil (por no decir imposible), que el tester sepa qué y porqué falla algo. Estoy de acuerdo, que cuando con nuestra experiencia, los que hemos programado hacemos pruebas, podemos tener sospechas de porqué falla algo. Pero de ahí, a que realmente sea útil esa sospecha, es concedernos un criterio excesivo.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 10pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: inherit;"&gt;Para poderle aportar al programador experiencia sobre cómo corregir sus fallos, de forma que su código sea más seguro y fiable. Esta también me ha sorprendido. Entonces qué queremos ¿testers o formadores? Esta es la visión típica de la persona que ha probado mucho, pero también ha programado mucho. Pues claro que tendrás experiencia en fallos/soluciones típicas. Pero es mucho más complicado que eso. Si estamos en un mantenimiento, no vamos a tener tiempo de tonterías: hay que resolver la incidencia para cumplir el ANS (Acuerdo de Nivel de Servicio). Y si no es un mantenimiento, si de verdad tenemos tiempo de ponernos a hablar y discutir con el programador todos y cada uno de los fallos encontrados....yo quiero trabajar en ese proyecto, y lo quiero YA. Aquí se mezclan churras con merinas. De acuerdo que programadores que han hecho mucho testing, son los más adecuados para transferir ese conocimiento. Pero eso no significa que el tester deba hacerlo, porque la forma de corregir los defectos puede depender de la arquitectura específica, y el tester no tiene porqué conocerla. De hecho, en la mayoría de los casos, lo que interesa es presentar un informe de resultados de defectos al cliente y/o al jefe de proyecto. La solución de los problemas, su prioridad, etc., dependerá de muchos factores (y no tiene porqué ser el criterio del tester, y mucho menos del programador).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: inherit;"&gt;En contra:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: inherit;"&gt;No debe condicionarse al tester con el conocimiento interno de la aplicación. Las pruebas deben realizarse siguiendo las indicaciones del plan de pruebas. Ahora bien, si no hay plan de pruebas, no hay casos de pruebas, ni datos de prueba, ni resultados esperados…no necesitamos un tester que sepa programar. Necesitamos a Dios.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: inherit;"&gt;El conocimiento de la aplicación (léase documentación, arquitectura, análisis, etc), puede estar obsoleto. Si defendemos las metodologías ágiles, es posible que el tester no cuente con documentación actualizada de “qué hay dentro”. Si aceptamos que esto sea así, ¿cómo vamos a exigirle que entienda algo que seguramente no le sirve? Dejémosle que pruebe lo que debe probar, y que no esté pensando en "lo que hay detrás".&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: inherit;"&gt;¿Debe alguien que se prueba la ropa saber coser? ¿o hacer pantalones, o cortar telas…? ¿Deben los inspectores de calidad de un edificio saber poner ladrillos, etc? ¿Debe un técnico de ITV saber construir un coche? (puede que ni siquiera le haga falta saber conducir)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 10pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: inherit;"&gt;Un tester debe ser objetivo. Su resultado es un informe de pruebas. Si su resultado son consejos a los programadores, tendremos a un arquitecto, analista o programador “power”, cuyo tiempo estaría mucho más aprovechado revisando la arquitectura y el código (o formando al equipo), que probando.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 10pt 36pt; text-indent: -18pt;"&gt;&lt;span lang="ES-TRAD"&gt;A un programador difícilmente le puede aportar un resultado de pruebas del estilo: "yo creo que te falla la punta de la trócola cuando el cimborrio izquierdo recibe un valor trambostático". Si la conclusión del tester no es objetiva, acabaremos creando una cadena de opiniones que finalmente perviertan el resultado de la prueba, y por tanto, la invaliden. Al programador hay que darle algo objetivo: se da el fallo&amp;nbsp;x cuando en la situación y meto el valor z. Esto es algo repetible y objetivo. Por ejemplo: no le puedo decir: "me parece que en algunos ordenadores el color de fondo es más claro". Sino que&amp;nbsp;si soy un tester debo decir: "en las pruebas X, en el ordenador Z,&amp;nbsp;el color de fondo se ve más claro".&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style="font-family: inherit;"&gt;Yo creo que la conclusión sería ésta:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span lang="ES-TRAD"&gt;&lt;/span&gt;&lt;span lang="ES-TRAD" style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; line-height: 115%;"&gt;&lt;span style="font-family: inherit;"&gt;Si el equipo y el proyecto son pequeños, no te queda otra: no es operativo tener un señor sólo para probar, a no ser que sea un recurso compartido entre proyectos. Aquí normalmente no es que haga falta, es que simplemente este tester tiene también otros roles.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span lang="ES-TRAD" style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; line-height: 115%;"&gt;&lt;span style="font-family: inherit;"&gt;Si el proyecto es mediano o grande, se hace necesario un tester especializado en esa tarea. Y aquí es cuando es menos significativo que el tester sepa hacer otras tareas.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span lang="ES-TRAD" style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; line-height: 115%;"&gt;&lt;span style="font-family: inherit;"&gt;Si sólo llevamos un proyecto en la empresa: aquí la visión es otra: necesitas alguien que haga el testing, pero que también te de soporte a más tareas. Además, es más fácil que el tester esté versado en el negocio del cliente, la arquitectura, etc, porque sólo hay 1.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span lang="ES-TRAD" style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; line-height: 115%;"&gt;&lt;/span&gt;&lt;span lang="ES-TRAD" style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; line-height: 115%;"&gt;&lt;span style="font-family: inherit;"&gt;Si llevamos varios proyectos en la empresa: si el tester se comparte entre varios proyectos, es más difícil que esté puesto en el negocio, en la programación, la arquitectura...ya que pueden ser muy diferentes. Si el tester no se comparte entre varios proyectos, sino que hay uno por proyecto, entonces sí que es posible que aporte algo más.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-7495936652854720218?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/7495936652854720218/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/hace-falta-que-un-tester-sepa-programar.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7495936652854720218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7495936652854720218'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/hace-falta-que-un-tester-sepa-programar.html' title='¿Hace falta que un Tester sepa programar?'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-ie_1x1mnlY0/TtYJunEgufI/AAAAAAAAAEk/bs9xmOqBt-k/s72-c/qa-analyst.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-828339346622611091</id><published>2011-11-27T08:12:00.000-08:00</published><updated>2011-12-13T10:39:28.636-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ágil'/><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Defectos de Scrum (I)</title><content type='html'>Recientemente se habla mucho de las ventajas de las metodologías ágiles, y en concreto de SCRUM. Sin embargo, aunque todos tenemos claro que no existen "balas de plata" que nos permitan solucionar las cosas como si cual varita mágica se tratasen, no se oye hablar apenas de los defectos de SCRUM.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;¿Ah, pero es que tiene defectos?&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;Pues claro. No existen metodologías todoterreno al 100% Vayamos viendo algunos. No con ánimo de decir: "mirad lo malo que es SCRUM" sino más bien "tened en cuenta esto en caso de que aplique a vuestros proyectos". Al final, lo importante es saber detectar los riesgos y mitigarlos adecuadamente.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;En general, dificultad de aplicación en grandes proyectos.&lt;/li&gt;&lt;li&gt;Se requiere de un “agile champion”, experto en la metodología que monitorice su cumplimiento.&lt;/li&gt;&lt;li&gt;Parte del paradigma consiste en usar el método “tal cual”, evitando adaptarlo a la empresa (supuestamente esto saca a la luz problemas en la metodología de desarrollo existente). Claro, si por otro lado arrancamos con el método ya adaptado a la empresa, es posible que no estemos aprovechando las ventajas de la metodología ágil.&lt;/li&gt;&lt;li&gt;Plantea un problema si el desarrollo está restringido por una fecha de entrega y un precio de entrega cerrados por contrato&lt;/li&gt;&lt;li&gt;Presupone que los requerimientos cambian, pero no de forma que el cliente acepte un diseño funcional/técnico.&lt;/li&gt;&lt;li&gt;Presupone que el equipo está muy formado y motivado&lt;/li&gt;&lt;li&gt;Presupone que el cliente está muy involucrado en el desarrollo, participa de forma activa y continua, y revisa frecuentemente el avance de la funcionalidad conforme salen a la luz los sprints. Esto sin embargo no parece producirse en la mayoría de nuestros proyectos: el cliente participa, pero no hasta el punto de dedicar tiempo y recursos para revisar pequeños avances en el desarrollo.&lt;/li&gt;&lt;li&gt;Presupone que el cliente no exige ni necesita toda la documentación que manejan actualmente las empresas y que las diversas normativas internacionales requieren.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Parece que hay muchas, y así es. Pero esto no deja de ser una visión general de riesgos como en cualquier otro proyecto, pero esta vez desde el punto de vista de la metodología.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Para ver la segunda parte de este post, puedes hacer clic en este &lt;a href="http://calidadysoftware.blogspot.com/2011/12/defectos-de-scrum-ii.html"&gt;link&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-828339346622611091?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/828339346622611091/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/defectos-de-scrum-i.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/828339346622611091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/828339346622611091'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/defectos-de-scrum-i.html' title='Defectos de Scrum (I)'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-8202718376864535404</id><published>2011-11-25T12:07:00.000-08:00</published><updated>2011-11-30T02:48:32.160-08:00</updated><title type='text'>Más de 1000 visitas</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xANYsEayRmQ/TtYI3DRnw6I/AAAAAAAAAEU/tL7508euZ4E/s1600/1000.jpg" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" dda="true" height="166" src="http://2.bp.blogspot.com/-xANYsEayRmQ/TtYI3DRnw6I/AAAAAAAAAEU/tL7508euZ4E/s200/1000.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Pues vaya, ya hemos superado en este blog las 1000 visitas (quién lo iba a decir). La verdad es que un blog dedicado a guardar mis memorias y experiencias,&amp;nbsp;tiene más de un seguidor.&amp;nbsp;Parece que ya es algo más que una bitácora personal.&lt;br /&gt;&lt;br /&gt;Bueno, vale, he tenido que dar dinero a la gente por leer mi blog, y he llegado a usar anuncios de páginas eróticas desviadas a este blog para conseguir visitas. ¡Eh, que no, que era broma! A ver si la voy a liar por hacer la gracia...&lt;br /&gt;&lt;br /&gt;Pues me alegro mucho. Si de verdad sirve de algo, estará bien que la gente tenga en cuenta mis opiniones (ojo, he dicho en cuenta: como siempre, y como dirían en aquella serie "expediente X"...la verdad está ahí fuera...).&lt;br /&gt;&lt;br /&gt;Yo lo seguiré disfrutando mientras lo escribo. Espero que tú, amigo lector, disfrutes también (estés de acuerdo, o en contra de mis reflexiones). Saludos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-8202718376864535404?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/8202718376864535404/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/mas-de-1000-visitas.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8202718376864535404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8202718376864535404'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/mas-de-1000-visitas.html' title='Más de 1000 visitas'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-xANYsEayRmQ/TtYI3DRnw6I/AAAAAAAAAEU/tL7508euZ4E/s72-c/1000.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-1414312922453126364</id><published>2011-11-23T14:34:00.000-08:00</published><updated>2011-11-30T02:48:50.115-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='métricas'/><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>¿Cómo se mide la calidad?</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-z2uRPZwdAXE/TtYIELyef3I/AAAAAAAAAEM/U8bA0pKslcs/s1600/quality_pic.jpg" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" dda="true" src="http://3.bp.blogspot.com/-z2uRPZwdAXE/TtYIELyef3I/AAAAAAAAAEM/U8bA0pKslcs/s1600/quality_pic.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;... O más bien debería ser más específico: ¿cómo se mide la calidad del software?&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Parece ser que la calidad es el atributo favorito a la hora de ser incluído en propuestas y propaganda variada de los productos software, pero nunca nos hemos preguntado ¿qué es la calidad? ¿cuánta calidad tiene? ¿Si no puedo medir la calidad de un producto para qué me sirve que lo pongan en un folleto o hablen de él los comerciales? (si hasta los terremotos tienen una medida universal gracias al señor Richter).&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Hace poco leía un blog y me sorprendía la frase: "no puedes elegir fabricar software de baja calidad y rebajar el precio. Puedes restarle funcionalidad, pero no calidad". Por desgracia para el mundo del desarrollo de software, no es así. Claro que se puede ahorrar calidad. Simplemente, eliminando las actividades que le aportan y aseguran esa calidad.&lt;br /&gt;&lt;br /&gt;¿Dónde está la calidad?:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;En arquitecturas conocidas, probadas y para las que se han obtenido datos de experiencias (buenas prácticas, problemas a evitar, cómo mejorar en el futuro, etc.) Es lo que se conoce como mejora continua.&lt;/li&gt;&lt;li&gt;En las metodologías de trabajo conocidas y probadas.&amp;nbsp;Y no sólo hablo de desarrollo. También de repositorios de documentos, tener claro quién es el responsable de qué...El tener el control de qué hay, dónde está, cómo acceder a ello, y cómo usarlo.&lt;/li&gt;&lt;li&gt;En las pruebas del software antes de la entrega al cliente.&lt;/li&gt;&lt;li&gt;En las pruebas del software en la implantación.&lt;/li&gt;&lt;li&gt;En las auditorías de calidad.&lt;/li&gt;&lt;li&gt;En las auditorías internas del equipo de desarrollo.&lt;/li&gt;&lt;li&gt;En las revisiones entre pares (sí, sí, las Peer Review famosas).&lt;/li&gt;&lt;/ul&gt;¿Cómo medir la calidad? Pues midiendo la calidad de nuestro proceso de desarrollo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Calidad del análisis: ¿cuántos requisitos se han modificado? ¿cuántos se han añadido? ¿cuántos se han eliminado?&lt;/li&gt;&lt;li&gt;Calidad del diseño: ¿cuántos cambios se han producido en el diseño técnico?&lt;/li&gt;&lt;li&gt;Calidad de la arquitectura: ¿cuántos cambios de arquitectura se han producido?&lt;/li&gt;&lt;li&gt;Calidad del desarrollo: ¿cuántos defectos se han detectado en pruebas unitarias?&lt;/li&gt;&lt;li&gt;Calidad de las pruebas: ¿cuántos defectos ha detectado el cliente en producción vs defectos encontrados en pruebas en general? ¿cuál es el ratio nº defectos encontrados vs horas invertidas en pruebas?&lt;/li&gt;&lt;/ul&gt;¿Y la calidad del producto? Pues aunque está relacionado, tendríamos otros factores:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tiempo que lleva el cliente usando el producto. En mi opinión no es significativo. Por razones varias, el cliente puede verse obligado a usar un pésimo software. Realmente el problema está en la competencia y en el precio. Si es suficientemente barato un software alternativo, poco importará la calidad de nuestro software, es probable que el cliente acabe actualizándolo por otro distinto, si los costes encajan. &lt;/li&gt;&lt;li&gt;Satisfacción del cliente. Bueno, volvemos a la cruda realidad. ¿Quién es el cliente? ¿El director general? ¿el que compró el software? ¿El jefe de departamento que lo usa? ¿Los usuarios finales? Al final, la satisfacción es difícil de medir. Bueno, para eso podéis leer mi anterior blog sobre encuestas de satisfacción.&lt;/li&gt;&lt;li&gt;Número de fallos en producción. Realmente no sólo es una medida de calidad del software, sino de su proceso de desarrollo.&lt;/li&gt;&lt;li&gt;Número de clientes. Pues ahora mismo se me ocurren unos cuantos ejemplos de software vendido por millares (por no decir millones), y de calidad pésima. Al final, el número de clientes lo deciden una serie de factores ajenos a la calidad: precio, esfuerzo comercial, renombre de la marca comercial, etc.&lt;/li&gt;&lt;li&gt;Número de años en uso. Uf. Por esa regla de 3, tendríamos que el software hecho en cobol en los años 80 debía de ser de calidad asombrosa, porque se ha usado hasta hace muy poco, o sigue en uso. A la hora de la verdad, este factor no depende de la calidad, sino de la competencia, de la facilidad de actualizar el producto. Si encontramos repuestos de ruedas, las cambiaremos fácilmente. Si no encontramos repuestos, pues...habrá que fastidiarse y seguirlos usando (independientemente de su calidad).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Lo importante es destacar que no tendremos calidad del producto basándonos únicamente en tener equipos de personas buenas y maravillosas, todos senior y super-motivados, y blah, blah. La calidad se consigue a través de un método, proceso y control. Quien confunde el control con desconfianza en el equipo, tiene un problema (y más vale que se lo haga mirar).&lt;br /&gt;&lt;br /&gt;El siguiente link está en la línea de lo que digo, aunque hay varios argumentos en los que no estoy 100% de acuerdo (ojo, no digo que él esté equivocado):&lt;br /&gt;&lt;a href="http://geeks.ms/blogs/msierra/archive/2008/08/25/_BF00_C_F300_mo-se-mide-la-calidad-en-el-software_3F00_.aspx"&gt;http://geeks.ms/blogs/msierra/archive/2008/08/25/_BF00_C_F300_mo-se-mide-la-calidad-en-el-software_3F00_.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-1414312922453126364?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/1414312922453126364/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/como-se-mide-la-calidad.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/1414312922453126364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/1414312922453126364'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/como-se-mide-la-calidad.html' title='¿Cómo se mide la calidad?'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-z2uRPZwdAXE/TtYIELyef3I/AAAAAAAAAEM/U8bA0pKslcs/s72-c/quality_pic.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-2986554665541929554</id><published>2011-11-17T13:39:00.000-08:00</published><updated>2011-11-30T02:46:19.591-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><title type='text'>Los 7 secretos del éxito.</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-TTc9SG8EUaY/TtYJVHbTijI/AAAAAAAAAEc/jLWDUp-KNFc/s1600/exito.jpg" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" dda="true" height="200" src="http://2.bp.blogspot.com/-TTc9SG8EUaY/TtYJVHbTijI/AAAAAAAAAEc/jLWDUp-KNFc/s200/exito.jpg" width="145" /&gt;&lt;/a&gt;&lt;/div&gt;Tras este pretencioso titular, encontramos siete recomendaciones para ayudarnos a establecer el éxito en nuestro trabajo, proyectos, etc. Aviso a navegantes de que si os parece rayante, os animo a leer el artículo original (url al final), y entonces me decís. Ale, ahí vamos.&lt;br /&gt;&lt;br /&gt;Ya es hora de enterrar la idea de que el éxito, en cualquier profesión, es el resultado de suerte, oportunidad y esfuerzo. No hay nada más equivocado que esto. Pensad en ello. ¿cuántos profesionales conocéis que trabajen increíblemente duro, dedicando jornadas interminables, y no consiguen el éxito? El esfuerzo, tiene un papel en el éxito, pero el esfuerzo por sí solo no te va a hacer destacar. ¿Dónde se encuentra pues el catalizador del éxito?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Empieza por conocer con detalle lo que quieres.&lt;/b&gt;&lt;br /&gt;Las personas de éxito, tienen muy claro en qué consiste el éxito que desean conseguir. Es la única forma de poder enfocar sus esfuerzos en su consecución.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;2. Visualízate consiguiendo los resultados deseados&lt;/b&gt;&lt;br /&gt;Los grandes ganadores se ven a sí mismo ganando cada día. Visualizar, es el camino a materializar lo deseado.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;3. El éxito viene a través de una confianza férrea en tí y en tus capacidades&lt;/b&gt;&lt;br /&gt;Los ganadores creen en su éxito, y esto acaba volviéndose realidad. Un error típico suele ser el creer que si se van obteniendo suficientes capacidades durnate nuestra carrera profesional, llegará el éxito. Sin embargo, la formación y la adquisición de capacidades no garantiza el éxito. Lo lo que&amp;nbsp;lo garantiza está en el hecho de creer en&amp;nbsp;él.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;4. Los top-performes hacen las cosas como si ya hubieran alcanzado los objetivos que realmente quieren.&lt;/b&gt;&lt;br /&gt;Los ganadores piensan, trabajan, hablan, juegan y hacen todo como la persona que quieren ser. Eso significa en enfocarse en las tareas como si ya hubiéramos estado donde queremos estar.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;5. Toma la total responsabilidad de tu destino&lt;/b&gt;&lt;br /&gt;¡Los ganadores obtienen resultados! No se trata de dar respuestas, de ofrecer EXCUSAS. Los ganadores no pierden de vista sus objetivos, y simplemente los cumplen.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;6. Construye asociaciones de alta dependencia&lt;/b&gt;&lt;br /&gt;Nadie en el mundo actual logra el éxito por sí solo. Simplemente hay mucho que entender y las situaciones cambian constantemente. Las personas de éxito siempre dedican más tiempo a otras personas de éxito. Se atraen. Van a los mismos eventos,&amp;nbsp; comen en los mismos restaurantes, juegan juntos al mismo deporte... Elige tus relaciones sabiamente.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;7. Aporta valor por encima del que solicites&lt;/b&gt;&lt;br /&gt;Hazte la pregunta: “¿Cómo puedo aportar más calidad? ¿Qué puedo hacer para hacerlo mejor?" Los ganadores siempre aportan un valor mkuy superior del que piden a cambio.&lt;/div&gt;&lt;br /&gt;Fuente: &lt;a href="http://build-business.info/seven-secrets-of-top-performers/"&gt;http://build-business.info/seven-secrets-of-top-performers/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-2986554665541929554?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/2986554665541929554/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/los-7-secretos-del-exito.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/2986554665541929554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/2986554665541929554'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/los-7-secretos-del-exito.html' title='Los 7 secretos del éxito.'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-TTc9SG8EUaY/TtYJVHbTijI/AAAAAAAAAEc/jLWDUp-KNFc/s72-c/exito.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-4565248076031693831</id><published>2011-11-12T01:13:00.000-08:00</published><updated>2011-12-01T14:06:49.988-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Personal Brand Online</title><content type='html'>Como respuesta a toda la fiebre de estar conectados y crear una "marca personal" online, Dilbert ataca de nuevo como sólo él puede hacerlo. Nuestra tira cómica favorita se sigue superando. Podéis seguirla como siempre en &lt;a href="http://www.dilbert.com/"&gt;www.Dilbert.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-6Q5idMXGe1c/Tr43w-plhsI/AAAAAAAAADQ/tWZylOt8DAU/s1600/dilbert_personalbrand.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://1.bp.blogspot.com/-6Q5idMXGe1c/Tr43w-plhsI/AAAAAAAAADQ/tWZylOt8DAU/s400/dilbert_personalbrand.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify" class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Hay otro problema que vengo observando recientemente, y es que en la práctica, hoy en día hay mucho más interés en aparentar, y tener una "marca personal", que realmente realizar ningún tipo de aporte. Es por eso que encontramos tantos blogs, twitters y facebooks repetitivos y amiguismos por doquier.﻿&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-4565248076031693831?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/4565248076031693831/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/personal-brand-online.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4565248076031693831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4565248076031693831'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/personal-brand-online.html' title='Personal Brand Online'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-6Q5idMXGe1c/Tr43w-plhsI/AAAAAAAAADQ/tWZylOt8DAU/s72-c/dilbert_personalbrand.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-4537398683632343416</id><published>2011-11-11T09:14:00.000-08:00</published><updated>2011-12-01T14:09:39.520-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><category scheme='http://www.blogger.com/atom/ns#' term='Ingenieria'/><title type='text'>De ingeniería y programación</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-paCNGXl_qlg/Ttf7EYnLNfI/AAAAAAAAAFU/jzIZPjJgC6E/s1600/fingenieria.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-paCNGXl_qlg/Ttf7EYnLNfI/AAAAAAAAAFU/jzIZPjJgC6E/s320/fingenieria.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Leo un artículo, que me recuerda un antiguo mito, que sigue siendo una poderosa lacra en nuestra vida de desarrolladores de software...¿o debería decir ingenieros de software?&lt;br /&gt;&lt;br /&gt;El problema es que se quiere evitar el uso de técnicas de ingeniería, el uso de la aproximación científica y el acopio metodológico tradicionalmente asociados al término ingeniería. Sin embargo, no son pocos los que se apuntan al carro de usar la coletilla "ingeniero" en su título o en su actividad, y defienden lo que una ingeniería debe ser (o al menos lo que ellos quieren que sea, acorde con sus expectativas).&lt;br /&gt;&lt;br /&gt;Vemos habitualmente en blogs y artículos, la defensa de frases como "construir software no es como fabricar coches o casas". Normalmente los argumentos ofrecidos intentan separar el mundo de la ingeniería tradicional, con el de la construcción del software (aquí he evitado explícitamente el uso del término ingeniería del software). Lo peor de todo, lo que resulta más flagrante, es que se&amp;nbsp;pretende apoyar el uso y efectividad de las metodologías ágiles como resultado de todo esto. Las técnicas ágiles están ahí, y son tan buenas como adecuadas en la situación concreta en que de buenos resultados. Pero eso no convierte en ciertos los argumentos.&lt;br /&gt;&lt;br /&gt;Veamos algunos argumentos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;&lt;b&gt;Los coches se fabrican en serie. Son todos iguales. El software es siempre distinto&lt;/b&gt;. &lt;i&gt;Falso:&amp;nbsp;realmente, al construir coches, es exactamente igual que en el software. Tenemos máquinas, robots y técnicas de ingeniería para tratar de que todos los coches salgan parecidos, pero es inevitable que todos salgan realmente distintos. Donde entra la ingeniería, es en tratar de que todos sean razonablemente parecidos, dentro de unos márgenes.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;La ingeniería es para fabricar "en serie", "como churros", al contrario que el software, que es siempre distinto&lt;/b&gt;. &lt;i&gt;Falso: la mayoría de creaciones en el mundo de la ingeniería son únicas: puentes, pasos elevados, máquinas, mecanismos, etc. La visión de la ingeniería enfocada a la producción en serie es una manipulación enfocada única y exclusivamente a crear la ilusión de que la ingeniería y el software son radicalmente distintos.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Las ingenierías clásicas precisan mucho de un diseño previo a la construcción, el disponer de los planos del arquitecto siempre antes de empezar el edificio&lt;/b&gt;. &lt;i&gt;Falso: ¿es innecesario el tener las especificaciones de lo que hay que construir? Por supuesto que podemos construir casas sin planos, sin cimientos, etc. Eso no significa que la experiencia recomiende lo contrario.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Los planos para construir son precisos&lt;/b&gt;. &lt;i&gt;Falso. Existe una cosa en ingeniería llamada tolerancias. Significa simplemente que como las cosas se construyen de forma más o menos artesana, existen unos límites razonables entre lo que el ingeniero o proyectista desea, y los resultados reales obtenidos por la persona que realiza la tarea. Esto significa que el ingeniero desea un resultado, pero es consciente que al llevarlo a la práctica habrá desviaciones. Los planos pretenden que estas desviaciones, estén "contenidas". Además, los planos no son siempre tan precisos, puesto que muchas veces se deja en manos de quien fabrica, algunas tomas de decisiones, siempre que no se altere el resultado deseado.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;En el software, al contrario de la ingeniería, es casi imposible que no cambie el diseño.&lt;/b&gt; &lt;i&gt;Falso al compararlo con la ingeniería. En ésta, incluso al fabricar coches (que nos parecen todos iguales aunque esto no sea así), las especificaciones cambian durante la creación de las máquinas que van a servir para construir los coches, durante la instalación de esas máquinas, pero es que también durante la vida del modelo de coche&lt;/i&gt;. Esto se ve incluso en las casas: los planos cambian durante la construcción (e incluso después).&lt;/li&gt;&lt;li&gt;&lt;b&gt;El sueño de construir software como en una cadena de montaje no es realista.&lt;/b&gt; &lt;i&gt;Inexacto: no tiene nada que ver la fabricación en serie con el tema a tratar. Una cadena de montaje es un resultado de aplicar prácticas de ingeniería, pero no es la ingeniería. Realmente una cadena de montaje sería un software de creación de software (como puede ser Genexus). Alguien ha construído la cadena de montaje, que esa sí es el fruto del trabajo de ingeniería. Existen aplicaciones que son "fábricas de software", y que sí que tienen siempre el mismo resultado para los mismos datos y situaciones de entrada (de hecho mucho más que los coches en el caso de la fábrica, que como hemos visto, no son nunca iguales).&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;¿Qué ocurre entonces? ¿Estamos diciendo pues que son exactamente iguales la construcción del software y la ingeniería tradicional? Pues va a ser que no. Lo que significa es que la construcción del software no debe prescindir de una herramienta fundamental como son las técnicas de ingeniería, la planificación, etc. Por supuesto que podemos hacerlo. Como es posible hacer cualquier cosa. Pero vivimos en un mundo en el que no es despreciable el obtener resultados predecibles y controlados (dentro de unos márgenes, claro. Todo tiene su tolerancia). Las empresas necesitan prever los gastos que van a tener, porque normalmente (y digo normalmente), los empleados no estamos construyendo software sólo por amor al arte, sino que exigimos una remuneración a cambio. Y una remuneración fija. A ver si ahora vamos a inventar el cobro del sueldo "iterativo", basado en las funcionalidades que hemos completado.&lt;br /&gt;&lt;br /&gt;El día en que la premisa fundamental sea tener un producto en el mercado a toda costa...habremos perdido una parte esencial de nuestra profesión.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-4537398683632343416?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/4537398683632343416/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/de-ingenieria-y-programacion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4537398683632343416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4537398683632343416'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/de-ingenieria-y-programacion.html' title='De ingeniería y programación'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-paCNGXl_qlg/Ttf7EYnLNfI/AAAAAAAAAFU/jzIZPjJgC6E/s72-c/fingenieria.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-7597297096381100575</id><published>2011-11-10T14:29:00.000-08:00</published><updated>2011-12-01T14:12:26.686-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><title type='text'>Procrastinación (III): la multitarea</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-2pNrJE3N11k/Ttf7ntzgaUI/AAAAAAAAAFc/rvAh6Zij_c8/s1600/multitasking.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/-2pNrJE3N11k/Ttf7ntzgaUI/AAAAAAAAAFc/rvAh6Zij_c8/s320/multitasking.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: xx-small;"&gt;(fuente de la imagen: DevianArt)&lt;/span&gt; &lt;br /&gt;Y no hay dos sin tres. Tras el éxito de los dos primeros artículos sobre la procrastinación, me he animado a un tercero, a ver si dejamos el tema cerrado de una vez.&lt;br /&gt;&lt;br /&gt;Actualmente encontramos una tendencia de hacer muchas cosas a la vez. Nos gusta ser "multitarea", y nos sentimos orgullosos de ello. Pero...¿esto es realmente así?&lt;br /&gt;&lt;br /&gt;Hay muchos detractores de esta supuesta multitarea, y entre ellos, existen muchas personas que aseguran que las personas que realmente se sienten multitarea, realmente se encuentran en uno de estos dos escenarios:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Una tarea real y muchas distracciones&lt;/li&gt;&lt;li&gt;Varias tareas, cuyo nivel de prioridad y atención cambian a lo largo del día.&lt;/li&gt;&lt;/ul&gt;En el fondo, cuando estamos haciendo varias cosas a la vez, lo que en realidad ocurre es que estamos procrastinando. Estamos restando la atención de una tarea principal, quizá la que realmente es prioritaria y la que tenemos que resolver.&lt;br /&gt;&lt;br /&gt;Para realmente ser multitarea, el truco está en hacer una sola cosa a la vez, enfocando adecuadamente nuestro tiempo y esfuerzo en ella. Una adecuada planificación de las tareas durante el día, será la única forma en que realmente podamos invertir adecuadamente nuestro tiempo, y llevar a cabo varias tareas "a la vez".&lt;br /&gt;&lt;br /&gt;Por ejemplo, actividades paralelas habituales como atender facebook, el correo, twitter, linkedin, etc., no son más que ladrones de tiempo, y fuentes de procrastinación. Lo mejor es establecer horarios específicos para atender estas tareas.&amp;nbsp;Eso de estar permanentemente encima de la casilla de actualizar el email es una locura.&lt;br /&gt;&lt;br /&gt;¿Que queremos seguir llamándonos multitarea? Adelante. Después de todo, nos engañamos con cosas peores en esta vida.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-7597297096381100575?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/7597297096381100575/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/procrastinacion-iii-la-multitarea.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7597297096381100575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7597297096381100575'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/procrastinacion-iii-la-multitarea.html' title='Procrastinación (III): la multitarea'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-2pNrJE3N11k/Ttf7ntzgaUI/AAAAAAAAAFc/rvAh6Zij_c8/s72-c/multitasking.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-4310316612154169551</id><published>2011-11-09T10:41:00.000-08:00</published><updated>2011-12-01T14:14:47.365-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>PMO: Introducción</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Dbqtx-g2bW8/Ttf8QoxlrqI/AAAAAAAAAFk/WCuSoHyyPEI/s1600/PMO.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="123" src="http://1.bp.blogspot.com/-Dbqtx-g2bW8/Ttf8QoxlrqI/AAAAAAAAAFk/WCuSoHyyPEI/s400/PMO.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Uno de mis últimos proyectos está siendo mi participación en una PMO. Vamos a ver qué es.&lt;br /&gt;&lt;br /&gt;Una PMO es una Oficina de Gestión de Proyectos (las siglas vienen del inglés Project Management Office).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Para qué sirve una PMO&lt;/b&gt;&lt;br /&gt;Si ya tenemos un jefe de proyectos, ¿para qué podemos querer una PMO? ¿Acaso supone más burocracia y simplemente es otro nivel por encima del jefe de proyecto?&lt;br /&gt;Las responsabilidades de una PMO y de un jefe de proyecto son muy diferentes. Una PMO da respuesta a una serie de cuestiones que se plantean en las empresas y que un jefe de proyecto no proporciona:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;¿Cómo alinear los proyectos con los objetivos de la organización?&lt;/li&gt;&lt;li&gt;¿Cómo medir de forma uniforme los proyectos en mi organización? ¿Cómo mido su valor, su coste, su rendimiento en términos homogéneos?&lt;/li&gt;&lt;li&gt;¿Cómo controlo los riesgos de alto nivel, o los riesgos que afectan a varios proyectos? &lt;/li&gt;&lt;li&gt;¿Cómo controlo las dependencias entre proyectos?&lt;/li&gt;&lt;li&gt;¿Cómo priorizo los proyectos conforme a los objetivos organizativos?&lt;/li&gt;&lt;li&gt;¿Cómo gestionar la capacidad y el cambio en los diversos proyectos?&lt;/li&gt;&lt;li&gt;¿Cómo detectar los proyectos con mejor y peor desempeño? ¿Cómo reaprovechar las mejores prácticas de los proyectos con mejor desempeño? ¿Cómo evitar los problemas de los proyectos con peor desempeño?&lt;/li&gt;&lt;/ul&gt;Lo normal es que si vamos a implantar una PMO, pensemos en los siguientes grupos de procesos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Seguimiento de proyectos&lt;/li&gt;&lt;li&gt;Comunicación&lt;/li&gt;&lt;li&gt;Gestión del conocimiento&lt;/li&gt;&lt;li&gt;Gestión de proyectos y recursos&lt;/li&gt;&lt;/ul&gt;Hasta aquí una breve introducción. Dejemos para otro día el detallar las actividades y procesos de una PMO. Nos vemos.&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-4310316612154169551?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/4310316612154169551/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/pmo-introduccion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4310316612154169551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4310316612154169551'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/pmo-introduccion.html' title='PMO: Introducción'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Dbqtx-g2bW8/Ttf8QoxlrqI/AAAAAAAAAFk/WCuSoHyyPEI/s72-c/PMO.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-1871352177728699582</id><published>2011-11-08T07:16:00.000-08:00</published><updated>2011-11-08T07:16:32.058-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Nueva Dotnetmania</title><content type='html'>La revista DotNetMania, ahora es DotNetMania+&lt;br /&gt;Han migrado de web, a una nueva url: &lt;a href="http://www.dnmplus.net/"&gt;http://www.dnmplus.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Además, por tiempo limitado, tendrán sus contenidos abiertos, aunque ya están preparando ofertas para suscriptores.&lt;br /&gt;&lt;br /&gt;Se trata de un portal orientado a programadores, arquitectos en tecnologías .Net, e incluyen novedades, artículos,&amp;nbsp;cursos, vídeos, entrevistas, todo ello enfocado al mundo .Net.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-1871352177728699582?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/1871352177728699582/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/nueva-dotnetmania.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/1871352177728699582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/1871352177728699582'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/nueva-dotnetmania.html' title='Nueva Dotnetmania'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-1061445113310422869</id><published>2011-11-06T01:32:00.000-07:00</published><updated>2011-12-01T14:17:50.155-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='métricas'/><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><category scheme='http://www.blogger.com/atom/ns#' term='Ingenieria'/><title type='text'>¿Cuándo se puede dar por terminado un proyecto?</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-nlisEb77fNg/Ttf9AA2ccEI/AAAAAAAAAFs/u4BxHKbwp9U/s1600/Cerrado.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="239" src="http://4.bp.blogspot.com/-nlisEb77fNg/Ttf9AA2ccEI/AAAAAAAAAFs/u4BxHKbwp9U/s320/Cerrado.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Vaya. Esta vez he dejado pasar unos cuantos días desde mi último blog. Y es que mi últimos proyectos me estaban absorbiendo por completo.&lt;br /&gt;&lt;br /&gt;Vamos a tratar un tema que tanto en las metodologías, como en los distintos entornos de trabajo, siempre se da por supuesto, y se deja un poco al azar. Y es que ¿tenéis claro cuándo se puede cerrar un proyecto?&lt;br /&gt;&lt;br /&gt;Parece algo trivial, ¿no? Cuando el proyecto se termine...se habrá acabado y por tanto, se cierra. Pues no.Vamos a introducir algunos conceptos para entender de qué hablamos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Cierre&lt;/b&gt;: se denomina cierre de un proyecto, al final del desarrollo. En realidad, el desarrollo no termina cuando se produce la subida al entorno de producción. Un desarrollo termina...cuando así lo determina el contrato. Y es que por contrato (y así lo suelen recoger las metodologías), se incorpora un período de soporte distinto del de mantenimiento. Se le suele llamar soporte post-implantación (aunque el nombre puede variar según la metodología que tratemos). &lt;/li&gt;&lt;li&gt;&lt;b&gt;Soporte&lt;/b&gt;: como acabamos de comentar, se llama soporte al período posterior a la puesta&amp;nbsp;en producción (el Go-Live en tecnologías SAP). El soporte lo realiza el mismo equipo de desarrollo, y aunque sus actividades suelen ser similares a las de mantenimiento, existen diferencias con la fase de mantenimiento. Por ejemplo, no aplican los ANS.&lt;/li&gt;&lt;li&gt;&lt;b&gt;ANS&lt;/b&gt;: acrónimo de "Acuerdos de Nivel de Servicio". Son las condiciones de servicio que por contrato, estipulan la forma de colaboración entre el proveedor del servicio y el contratista. Suele incluir penalizaciones y/o bonificaciones en función de varios parámetros como pueden ser el tiempo de respuesta, la calidad del servicio, etc.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Mantenimiento&lt;/b&gt;: es la fase del ciclo de vida del software que tiene lugar tras el cierre (no tras la puesta en producción). Tras la puesta en producción, hay un período de soporte en el que el proveedor del desarrollo software ha estabilizado la solución, se produce el hito del cierre, y&amp;nbsp;después, el inicio de la fase de mantenimiento.&amp;nbsp;Esta fase de mantenimiento la puede llevar a cabo un proveedor distinto del de desarrollo (otra empresa diferente).&lt;/li&gt;&lt;/ul&gt;Y tras este rodeo de explicaciones, volvamos al tema. Tras el desarrollo, hay un período de soporte, normalmente de tiempo limitado. Pero...¿debemos dejar que un software erróneo, inadecuado o inestable pase a la fase de mantenimiento? ¿Cómo sabe el cliente que el producto que ha recibido y que ya está en producción, está como para dar salida al proveedor de desarrollo? Recordemos que es en este punto cuando suele terminar de cobrar el proveedor de desarrollo. El cliente no querrá terminar de pagar por un producto hasta que este no esté correcto, pero...¿qué entendemos por correcto?&lt;br /&gt;&lt;br /&gt;Es en esta situación, en la que un proceso de cierre entra en acción, definiendo una serie de parámetros que permitan de forma &lt;b&gt;cuantitativa&lt;/b&gt; identificar si la solución desarrollada está Ok o no. No se trata de que no tenga errores. De eso, ya se encarga el mantenimiento que se hace tras el cierre del proyecto. Se trata de demostrar estabilidad y madurez tanto en la solución desarrollada, como en su implantación.&lt;br /&gt;&lt;br /&gt;Normalmente, en todas las metodologías, la forma de ralizar verificaciones (peer review, auditorías, milestone reviews, etc) es mediante checklists de control. Sin embargo, estas checklists de control no suelen incluir factores cuantitativos. Aquí es donde las métricas suelen venir al rescate, incorporando factores cuantitativos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-1061445113310422869?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/1061445113310422869/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/cuando-se-puede-dar-por-terminado-un.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/1061445113310422869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/1061445113310422869'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/11/cuando-se-puede-dar-por-terminado-un.html' title='¿Cuándo se puede dar por terminado un proyecto?'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-nlisEb77fNg/Ttf9AA2ccEI/AAAAAAAAAFs/u4BxHKbwp9U/s72-c/Cerrado.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-3427527118922945023</id><published>2011-10-22T11:42:00.001-07:00</published><updated>2012-03-08T00:07:56.412-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>ASP.NET MVC (II) Ventajas</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-oprLkMsVdQg/Ttf9WEQ59uI/AAAAAAAAAF0/5trAubER08c/s1600/ash-mvc-architecture.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="274" src="http://1.bp.blogspot.com/-oprLkMsVdQg/Ttf9WEQ59uI/AAAAAAAAAF0/5trAubER08c/s320/ash-mvc-architecture.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Vamos a continuar con esta serie de posts sobre ASP.NET MVC. Puedes ir también a los artículos &lt;a href="http://calidadysoftware.blogspot.com/2011/10/aspnet-mvc-i-introduccion.html" target="_blank"&gt;1&lt;/a&gt; y &lt;a href="http://calidadysoftware.blogspot.com/2012/03/aspnet-mvc-iii.html" target="_blank"&gt;3&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;¿Qué ventajas nos ofrece este modelo MVC en ASP.NET?&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Es extensible&lt;/li&gt;&lt;li&gt;Es amigable con SEO (las url son muy sencillas, e implementan las acciones y parámetros de forma natural,&amp;nbsp;facilitando su acceso mediante buscadores)&amp;nbsp;y REST&lt;/li&gt;&lt;li&gt;Nos da un enorme control sobre la salida&lt;/li&gt;&lt;li&gt;Nos da un enorme control sobre el flujo&lt;/li&gt;&lt;li&gt;Nos separa de forma natural las responsabilidades&lt;/li&gt;&lt;li&gt;Facilita la prueba de nuestras aplicaciones de formas que en el mundo WebForms no podríamos ni imaginar.&lt;/li&gt;&lt;li&gt;Se sigue basando en todo el framework existente ASP.Net (masterpages, membership, etc.)&lt;/li&gt;&lt;li&gt;Se integra con el&amp;nbsp;funcionamiento natural de la web, sin metáforas que nos acaben complicando la vida en cuanto tratamos de realizar cosas más complejas&lt;/li&gt;&lt;li&gt;Estabilidad y fiabilidad: se basa sobre el más que probado framework asp.Net, e integra casi cualquier elemento que nos pueda hacer falta&lt;/li&gt;&lt;li&gt;Facilita los cambios&amp;nbsp;(sí, esta vez de verdad, de forma muy superior a como se facilita en las aplicaciones N-tier)&lt;/li&gt;&lt;li&gt;Facilita separar el trabajo de los diseñadores, que pueden editar directamente la capa de presentación, sin tener que pasar como ocurre con Silverlight con herramientas específicas de diseño.&lt;/li&gt;&lt;li&gt;Se integra de forma natural con jQuery&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;¿Debemos migrar las aplicaciones Webform existentes?&lt;/b&gt;&lt;br /&gt;No. Para nada. En todo caso, habría que evaluar si los problemas y cambios que nos solicitan en el mantenimiento de las aplicaciones antiguas, nos justifican el cambio.&lt;br /&gt;Lo que sí es cierto, es que la migración a MVC ofrece de forma exponencial unos enormes beneficios de cara al mantenimiento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-3427527118922945023?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/3427527118922945023/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/aspnet-mvc-ii-ventajas.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/3427527118922945023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/3427527118922945023'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/aspnet-mvc-ii-ventajas.html' title='ASP.NET MVC (II) Ventajas'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-oprLkMsVdQg/Ttf9WEQ59uI/AAAAAAAAAF0/5trAubER08c/s72-c/ash-mvc-architecture.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-4170351384154100827</id><published>2011-10-14T01:46:00.000-07:00</published><updated>2011-10-15T03:27:25.399-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Así no se puede trabajar</title><content type='html'>Esto no es serio. Así no se puede trabajar. Hoy traigo un mensaje (cuadro de diálogo) de Microsoft Powerpoint, que me ha hecho desear asesinar a alguien. Esto no está sacado de ningún sitio web, ni na. Lo he sufrido en mis carnes. Aún sigo sin saber el motivo ni la información perdida. El mensaje es:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-YV258FenRak/Tpf1i2rhJ8I/AAAAAAAAADA/r8UeRudKBQU/s1600/MS_PPT_content_lost.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="85" oda="true" src="http://4.bp.blogspot.com/-YV258FenRak/Tpf1i2rhJ8I/AAAAAAAAADA/r8UeRudKBQU/s400/MS_PPT_content_lost.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Para los que no estéis puestos en inglés, os traduzco lo que pone tal y como lo he sentido:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Powerpoint ha encontrado contenido en este fichero, que no entiende.&lt;/li&gt;&lt;li&gt;Por tanto, Powerpoint ha decidido borrar este contenido,&amp;nbsp;y no se puede recuperar. Ole, ole y ole tus...pues eso.&lt;/li&gt;&lt;li&gt;Te interesaría revisar esta presentación POR SI ACASO detectas algo cambiado o borrado&lt;/li&gt;&lt;/ul&gt;Pero si no es mía la presentación! Pero qué narices me está contando! Pero cómo voy a saber si algo falta o no! Y ni siquiera puedo contactar con su autor!!!!!&lt;br /&gt;&lt;br /&gt;Queridos desarrolladores de Microsoft Powerpoint: GRACIAS. Gracias por hacerme sentir idiota. Gracias por dejarme alucinado con mensajes tan retorcidamente creativos.&lt;br /&gt;En fin, que así no se puede trabajar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-4170351384154100827?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/4170351384154100827/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/asi-no-se-puede-trabajar.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4170351384154100827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4170351384154100827'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/asi-no-se-puede-trabajar.html' title='Así no se puede trabajar'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-YV258FenRak/Tpf1i2rhJ8I/AAAAAAAAADA/r8UeRudKBQU/s72-c/MS_PPT_content_lost.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-5321898767032419271</id><published>2011-10-13T08:57:00.000-07:00</published><updated>2011-10-13T08:57:54.511-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Chuck Norris Exception</title><content type='html'>He encontrado en este &lt;a href="http://criso.github.com/ChuckNorrisException/"&gt;link&lt;/a&gt; esta pequeña perla (aunque me suena, quizás sea vieja):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-kUY3NAxo_U4/TpcC8GfGe0I/AAAAAAAAAC4/d8XzUTuDXF0/s1600/Chuck_Norris_Jedi_Master.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" oda="true" src="http://4.bp.blogspot.com/-kUY3NAxo_U4/TpcC8GfGe0I/AAAAAAAAAC4/d8XzUTuDXF0/s320/Chuck_Norris_Jedi_Master.jpg" width="247" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h2&gt;Instalación&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;$ npm install ChuckNorrisException&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Uso&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;var ChuckNorrisException = require('ChuckNorrisException');&lt;br /&gt;&lt;br /&gt;var imFeelingLucky = true;&lt;br /&gt;try {&lt;br /&gt;  if (imFeelingLucky) throw new ChuckNorrisException();&lt;br /&gt;} catch (e) {&lt;br /&gt;  // FAIL: You cannot catch a ChuckNorrisException&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Si intenta lanzar una ChuckNorrisException resultará en un fallo y se cerrará su programa.&lt;br /&gt;¿El motivo? Porque usted no lanza a Chuck Norris....Chuck Norris le lanza a &lt;strong&gt;Usted&lt;/strong&gt;!!!&lt;br /&gt;Los siguientes errores se producirán si se intenta tamaña estupidez.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Usted no lanza a Chuck Norris....Chuck Norris le lanza a &lt;strong&gt;Usted&lt;/strong&gt;!!!&lt;/li&gt;&lt;li&gt;Chuck Norris escribió "Hola Mundo" una vez...y se llamó Unix.&lt;/li&gt;&lt;li&gt;Chuck Norris le &lt;strong&gt;pateará el culo&lt;/strong&gt; asíncronamente&lt;/li&gt;&lt;/ul&gt;Original: &lt;a href="http://criso.github.com/ChuckNorrisException/"&gt;http://criso.github.com/ChuckNorrisException/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-5321898767032419271?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/5321898767032419271/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/chuck-norris-exception.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5321898767032419271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5321898767032419271'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/chuck-norris-exception.html' title='Chuck Norris Exception'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-kUY3NAxo_U4/TpcC8GfGe0I/AAAAAAAAAC4/d8XzUTuDXF0/s72-c/Chuck_Norris_Jedi_Master.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-6559614824006849759</id><published>2011-10-13T08:48:00.000-07:00</published><updated>2011-12-01T14:20:47.221-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><title type='text'>Lloremos una gran pérdida</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-VOvK0mzB8Gk/Ttf9su41wnI/AAAAAAAAAF8/wd2ABR4ckLA/s1600/dennis_ritchie.jpeg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="227" src="http://3.bp.blogspot.com/-VOvK0mzB8Gk/Ttf9su41wnI/AAAAAAAAAF8/wd2ABR4ckLA/s320/dennis_ritchie.jpeg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Bueno, hoy 13 de Octubre,&amp;nbsp;&lt;b&gt;hemos de llorar una gran pérdida para el mundo del desarrollo de software&lt;/b&gt;. Su contribución ha sido incalculable, ya que ha influido en muchísimos aspectos técnicos que aún están en boga hoy en día, tantísimos años después.&lt;br /&gt;&lt;br /&gt;NO, no me refiero a Steve Jobs (también, recientemente fallecido, y contra el que nada tengo).&lt;br /&gt;&lt;br /&gt;Me refiero a &lt;b&gt;&lt;a href="http://es.wikipedia.org/wiki/Dennis_Ritchie"&gt;Dennis Ritchie&lt;/a&gt;&lt;/b&gt;, autor que ha influido en más de una generación de universitarios (no sólo informáticos), a través de su casi obligatorio título "El lenguaje de programación C" de Kernigan &amp;amp; Ritchie. Algún otro título suyo, también resultó de lectura obligatoria en la universidad, como aquel sobre Unix, ya que por otra parte, este señor fue COAUTOR del sistema UNIX. Sí, sí, el que aún se sigue venerando como fuente de Linux y otros dialectos.&lt;br /&gt;&lt;br /&gt;Descanse en Paz&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-6559614824006849759?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/6559614824006849759/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/lloremos-una-gran-perdida.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6559614824006849759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6559614824006849759'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/lloremos-una-gran-perdida.html' title='Lloremos una gran pérdida'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-VOvK0mzB8Gk/Ttf9su41wnI/AAAAAAAAAF8/wd2ABR4ckLA/s72-c/dennis_ritchie.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-2118102348034755268</id><published>2011-10-12T13:46:00.000-07:00</published><updated>2011-12-01T14:22:29.384-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Novedades en el ASP.Net Framework 4.0</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-dYPu7HMWKKA/Ttf-GBSkkHI/AAAAAAAAAGI/JVkfCU-1a-A/s1600/ASPNET40.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="239" src="http://2.bp.blogspot.com/-dYPu7HMWKKA/Ttf-GBSkkHI/AAAAAAAAAGI/JVkfCU-1a-A/s320/ASPNET40.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;No sólo de MVC vive el hombre, así que antes de que llegue la siguiente versión de Visual Studio y otro nuevo Framework, vamos a repasar algunas de&amp;nbsp;las novedades que llegaron en la última versión del .Net Framework 4.0 para ASP.Net.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nuevas propiedades en controles para mejorar la gestión del ViewState. Ya no sólo se gestiona a través de  la&amp;nbsp; propiedad [EnableViewState].&lt;/li&gt;&lt;li&gt;Mejoras en la cache: opción de compresión en las caché "Out-Of-Process" y nuevas opciones de customización de caché mediante la creación de custom providers. Esto puede ser especialmente útil en entornos con poca memoria.&lt;/li&gt;&lt;li&gt;Nuevas opciones para renderizar el código html mediante las buenas prácticas de accesibilidad recomendadas, evitando tablas, estilos inline, etc. Para ello, los controles existentes (como el control menu), han incorporado nuevas opciones de renderizado. Entre otras, la propiedad [IncludeStyleBlock] (true/false), ahora permite habilitar o inhabilitar la inclusión del bloque de estilos inline, tal y como se hacía en el framework 3.5.&lt;/li&gt;&lt;li&gt;Nuevas opciones para facilitar y automatizar el nombrado de elementos HTML (los IDs), que hasta la versión del framework 3.5 eran prácticamente imposibles de predecir. Es decir, el framework los nombraba de forma que no facilitaba la inclusión de código Javascript, ya que éste necesita predecir los nombres de los elementos HTML a los que se quiere acceder.&lt;/li&gt;&lt;li&gt;Validación de peticiones extensible. En el framework 4.0 se validan todas las peticiones, aunque es posible configurar el comportamiento y extender el comportamiento mediante validación de cabeceras, URL, parámetros, etc.&lt;/li&gt;&lt;li&gt;AJAX: soporte para jQuery de serie de Microsoft, soporte para plantillas de lado cliente.&lt;/li&gt;&lt;li&gt;Disminución del tamaño de los web.config&lt;/li&gt;&lt;li&gt;Query Extenders&lt;/li&gt;&lt;li&gt;Expresiones HTML nuevas para codificación: &amp;lt;%: %&amp;gt;&lt;/li&gt;&lt;li&gt;RedirectPermanent&lt;/li&gt;&lt;li&gt;Despliegue automatizado de aplicaciones Web con transformación de configuraciones.&lt;/li&gt;&lt;/ul&gt;Este post es de resumen, desde luego que lo que tocaría es ahora ir tocando todos y cada uno de estos temas. Algunos, como el nuevo soporte de jQuery, son apasionantes. A ver si le puedo sacar algún ratito y podemos detallar si no todo, alguno de ellos. De todas formas, antes me gustaría irme quitando también&amp;nbsp;la serie de posts sobre MVC. En fin: pasito a pasito.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-2118102348034755268?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/2118102348034755268/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/novedades-en-el-aspnet-framework-40.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/2118102348034755268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/2118102348034755268'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/novedades-en-el-aspnet-framework-40.html' title='Novedades en el ASP.Net Framework 4.0'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-dYPu7HMWKKA/Ttf-GBSkkHI/AAAAAAAAAGI/JVkfCU-1a-A/s72-c/ASPNET40.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-4714599525860308066</id><published>2011-10-10T13:22:00.000-07:00</published><updated>2011-10-10T13:22:34.298-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>El framework CLSA .Net</title><content type='html'>Lleva ya mucho tiempo esto del &lt;a href="http://www.lhotka.net/cslanet/"&gt;CLSA&lt;/a&gt; dando vueltas por el mercado.&lt;br /&gt;&lt;br /&gt;¿Que cómo lo descubrí? Yo andaba buscando material para frameworks que nos ayudasen a mejorar la metodología de desarrollo en mi empresa actual. El hecho de tener CMMI nivel 3 está muy bien, pero si no das a los equipos de desarrollo formas de trabajar "reales", al final corres el riesgo de convertirte en un teórico de la tecnología. &lt;br /&gt;&lt;br /&gt;El caso es que mientras buscaba frameworks de pruebas y modelos de negocio, me encuentro una referencia a CLSA y el señor Rockford Lhotka.&lt;br /&gt;&lt;br /&gt;Lhotka es autor de varios libros sobre desarrollo .Net, y autor del framework CLSA que está orientado al desarrollo rápido de aplicaciones. CLSA es un framework que facilita la construcción de la capa lógica de negocios para aplicaciones Windows, Web, orientadas a servicios, y de flujos de trabajo. &lt;br /&gt;&lt;br /&gt;CLSA.Net simplifica y estandariza la creación de capas de negocio en .net&lt;br /&gt;&lt;br /&gt;La implementación de CLSA para .Net comenzó en 1999, y sigue evolucionando todavía hoy con soporte para Visual Studio 2010, Microsoft .NET 4.0, Silverlight 4, y Windows Phone 7.&lt;br /&gt;&lt;br /&gt;¿Porqué la desestimé? En su momento, estuve evaluando la capacidad de este framework para su uso e integración con nuestra metodología .Net, pero me pareció demasiado "customized". Efectivamente promete flexibilidad, pero a costa de hacer el desarrollo muy dependiente de este framework. En absoluto me pareció poco potente ni le encontré fallos significativos&amp;nbsp;en el tiempo que le dediqué, así que os animo a los que estáis evaluando frameworks de este tipo a que le déis una oportunidad.&lt;br /&gt;&lt;br /&gt;Esto acaba aquí. Si esperas que te detalle información sobre el uso de este framework sin haber tenido yo experiencia personal real, estás listo. Para eso ya tienes otros blogs. Cuidaros.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-4714599525860308066?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/4714599525860308066/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/el-framework-clsa-net.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4714599525860308066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4714599525860308066'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/el-framework-clsa-net.html' title='El framework CLSA .Net'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-6885016956060380397</id><published>2011-10-08T03:11:00.001-07:00</published><updated>2012-03-08T00:04:13.685-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>ASP.NET MVC (I) Introducción</title><content type='html'>&lt;strong&gt;Introducción&lt;/strong&gt;&lt;br /&gt;Hoy vamos a ver una introducción a lo que espero sea una larga serie de artículos sobre ASP.NET MVC. &lt;br /&gt;Podéis saltar directamente a las partes &lt;a href="http://calidadysoftware.blogspot.com/2011/10/aspnet-mvc-ii-ventajas.html" target="_blank"&gt;2&lt;/a&gt; y &lt;a href="http://calidadysoftware.blogspot.com/2012/03/aspnet-mvc-iii.html" target="_blank"&gt;3&lt;/a&gt;&lt;br /&gt;Aquellos que vengáis del mundo Java prácticamente veréis a MVC como un estándar del día a día. Pero en el mundo .Net, no es así.&lt;br /&gt;&lt;br /&gt;El problema es que en .Net hemos sufrido de la obsesiva directriz de Microsoft en el sentido de OCULTAR la complejidad y la esencia de las cosas, encapsulándolo todo en nuevas metáforas supuestamente más sencillas. Eso ha funcionado muy bien, consiguiendo en el modelo ASP.NET Webforms una forma relativamente simple de construir aplicaciones Web. Pero no deja de ser una abstracción, una metáfora. Cuando intentamos bajar al nivel del código Javascript es cuando realmente vemos que la metáfora de los WebForms se cae con su propio peso y nos ha estado ocultando una realidad compleja, pero que en otras tecnologías como Java, se maneja de forma natural.&lt;br /&gt;&lt;br /&gt;Desde hace ya algún tiempo, ASP.NET MVC se ha introducido como una forma de volver a las raíces, de resolver las dos principales problemáticas que existían en los desarrollos web:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No ocultar la naturaleza de la web mediante falsas metáforas, que realmente nos complicaban mucho más la vida, como el uso de ViewState, etc.&lt;/li&gt;&lt;li&gt;Los flujos de las aplicaciones no están integrados de forma natural en las estructuras y arquitecturas de los webforms. Los webforms están diseñados para ser sencillos de implementar desde el punto de vista de los WinForms (pantallas de escritorio). Pero no constituyen una forma natural de implementar y separar la visualización de los datos, de lo que es el negocio.&lt;/li&gt;&lt;/ul&gt;El modelo MVC ante todo se basa en la estructura del flujo de nuestra aplicación Web. Representa de forma natural una vista por pantalla (o tipo de pantalla), e implementa acciones que no son sino las acciones de nuestras pantallas.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;¿Cómo funciona MVC?&lt;/strong&gt;&lt;br /&gt;El patrón que se usa en MVC de ASP.NET es el de Front Controller.&lt;br /&gt;Al controlador le llegan peticiones, que pasan por un mecanismo de enrutamiento. El enrutador decide qué controlador debe dispararse, ese controlador es el que da paso a las&amp;nbsp;acciones e interactúa con el modelo, dando como resultado una vista.&lt;br /&gt;&lt;br /&gt;El enrutamiento se encuentra dentro del espacio de nombres System.Web.Routing. Se trata de un espacio de nombres independiente de ASP.NET MVC, por lo que las personas que utilicen ASP.NET clásico (el de webforms), pueden tener también acceso a ese espacio de nombres.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Enrutado&lt;/strong&gt;&lt;br /&gt;La esencia de MVC dentro de ASP.NET se encuentra en el enrutado. Para ello, en el archivo Global.asax se define una tabla de rutas, una colección de rutas (RouteTable). Esa tabla lleva una ordenación, y el comportamiento vendrá definido por dicho orden (debe de ponerse el comportamiento más restrictivo siempre antes). Además, este enrutado permite restricciones (por ejemplo, en función de una clase específica definida por nosotros, o bien a través de expresiones globales).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Definición de rutas&lt;/strong&gt;&lt;br /&gt;La definición de rutas se hace mediante patrones. El patrón más común es:&lt;br /&gt;{Controlador}/{acción}{parámetro}&lt;br /&gt;Esto hace que la forma más habitual de navegar en una aplicación MVC sea mediante url's del estilo:&lt;br /&gt;&lt;a href="http://misitioweb/controlador/accion/parametro"&gt;http://misitioweb/controlador/accion/parametro&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para definir una ruta por código sería algo así como:&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;var route = new Route("{controller}/{action}/{param}",new MvcRouteHandler());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;class Route: RouteBase{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //definición de la ruta&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string Url &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RouteValueDictionary Defaults //valores por defecto&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RouteValueDictionary Constraints //permite definir restricciones&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RouteValueDictionary DataTokens //permite asignar metadatos donde guardar información adicional&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IRouteHandler RouteHandler&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bueno, ya vale para una primera introducción. &lt;br /&gt;Para saltar a la segunda parte de este post, clic &lt;a href="http://calidadysoftware.blogspot.com/2011/10/aspnet-mvc-ii-ventajas.html"&gt;aquí&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-6885016956060380397?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/6885016956060380397/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/aspnet-mvc-i-introduccion.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6885016956060380397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6885016956060380397'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/aspnet-mvc-i-introduccion.html' title='ASP.NET MVC (I) Introducción'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-8258005998209423454</id><published>2011-10-06T13:49:00.000-07:00</published><updated>2011-12-01T14:24:52.408-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><category scheme='http://www.blogger.com/atom/ns#' term='patrones'/><title type='text'>Refactoritis</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-6_G9IS_OLxI/Ttf-qJLKbVI/AAAAAAAAAGQ/m8U1cgg2bzg/s1600/refactoring.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-6_G9IS_OLxI/Ttf-qJLKbVI/AAAAAAAAAGQ/m8U1cgg2bzg/s320/refactoring.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Hoy vamos a tratar una enfermidad muy común de los programadores "experimentados": La &lt;b&gt;Refactoritis&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;La refactorización se lleva haciendo durante décadas. No es algo nuevo, a pesar de que siempre se cite al bueno de Martin Fowler como referencia, en su libro "&lt;i&gt;Refactoring: Improving the Design of Existing Code&lt;/i&gt;". Si no conocéis a Martin Fowler y os dedicáis a la informática, no sé a qué esperáis para leer este libro y saber un poco más de este autor.&lt;br /&gt;&lt;br /&gt;La &lt;a href="http://es.wikipedia.org/wiki/Refactorizaci%C3%B3n"&gt;refactorización&lt;/a&gt; se define en la Wikipedia como "técnica de la ingeniería del software para reestructurar un código fuente, alterando su estructura interna sin cambiar su comportamiento externo". Es en estos momentos cuando muchos de vosotros estaréis asintiendo con la cabeza y pensando en frases como "pues yo refactorizo mucho o poco", "yo no lo veo una enfermedad", etc, etc.&lt;br /&gt;&lt;br /&gt;¿Y qué sería en ese caso la Refactoritis? Pues la podríamos definir como el "&lt;b&gt;trastorno compulsivo que deriva en el uso excesivo de la refactorización del código&lt;/b&gt;". Vamos, cuando se le va la mano al programador y no para hasta que ha llegado al final del código, y lo ha dejado todo "a su gusto".&lt;br /&gt;&lt;br /&gt;Como hemos visto antes, la refactorización no cambia la funcionalidad. Es decir, no se aporta valor al producto desde el punto de vista de los requisitos. En la metodología SCRUM, estaríamos dedicando horas de trabajo sin implementar ninguna "historia de usuario". En realidad, sería una forma de procrastinación: no hacemos algo que se haya solicitado, sino que estamos haciendo algo que nos gusta o nos parece subjetivamente agradable o necesario. Por supuesto que habrá ocasiones en que sí se ha creado una tarea a realizar de refactorización, pero en esos casos nos deberíamos preguntar si realmente no deberíamos atajar la causa del problema: &lt;b&gt;no generamos código de calidad según estándares, lo que obliga a refactorizar después&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;La refactoritis deriva en múltiples problemas. Veamos primero las necesidades que nos pueden llevar a refactorizar el código, y vamos a discutirlas una a una:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Calidad&lt;/b&gt;. Esta suele ser una de las excusas más usadas. Estamos creando calidad, mejorando la calidad. Y como no sabemos medir la calidad, no hay límite para nuestras ansias de refactorizar. Podemos seguir refactorizando hasta que nuestra sensación subjetiva de calidad&amp;nbsp;consuma el tiempo de desarrollo. Algunos autores defienden que el código de calidad es bueno, y que mientras se satisfagan las pruebas unitarias, no pasa nada. El problema, es que las pruebas unitarias no son perfectas, lo que puede derivar en que a pesar de que "todo parece ir bien" tras refactorizar, en realidad estamos introduciendo bugs en el código.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Mala planificación&lt;/b&gt;. En ocasiones, se planifica en exceso. Los programadores cuando se encuentran con que han terminado una tarea antes de la fecha planificada pueden hacer varias cosas. O buscan una nueva tarea, o tratan de llenar el tiempo de la tarea terminada. ¿Cómo? Pues refactorizando: mejorando comentarios, encapsulando, quitando código duplicado, etc.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Eficiencia&lt;/b&gt;. Supuestamente, un código refactorizado es más eficiente. Además, se supone que se entiende mejor y es más claro. Esto último es muy dudoso, ya que es muy fácil refactorizar código y dejarlo de forma que sea muy compleja de entender. En este caso, si no medimos la eficiencia, ocurriría lo mismo que con la calidad. Podemos pegarnos la vida intentando ser más eficientes, que como no se mide esa mejora en eficiencia...no hay límites a nuestra refactoritis.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Evolución&lt;/b&gt;. A veces, cambios en las normas de programación, en requisitos de calidad, etc., hacen que debamos refactorizar el código para que se cumplan las nuevas normas. Debemos recordar que salvo excepciones, el cliente paga por funcionalidades, no por la refactorización del código. Si no tenemos claras nuestras normas de desarrollo...mal asunto.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Evitar la reescritura de código&lt;/b&gt;. Es muy discutible que un código refactorizado sea mejor que un código reescrito. Deben establecerse las necesidades, y evaluar qué solución merece la pena en uno y otro caso. Si refactorizar es la alternativa&amp;nbsp;a la reescritura de código, en realidad tenemos un problema mayor: el mero hecho de plantearnos reescribir el código significa que un tiempo invertido en el desarrollo "va a la basura". Los paños calientes y las vendas no van a ocultar que tenemos un problema mayor.&lt;/li&gt;&lt;/ul&gt;¿Cuáles son las prácticas que deberíamos aplicar?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No tocar el código que no se ha solicitado tocar.&lt;/li&gt;&lt;li&gt;No tocar el código para el que no se han definido pruebas (automatizadas o no).&lt;/li&gt;&lt;li&gt;No tocar el código sin antes realizar un análisis del coste (horas necesarias) para su refactorización, y definirlo como una tarea. Sólo así podremos controlar el tiempo necesario en rehacer las cosas una y otra vez. No deberíamos dedicar más horas de las estimadas a refactorizar, ni tocar más código del inicialmente identificado. Si no conocemos el alcance de nuestras acciones, no sabemos hacia dónde vamos.&lt;/li&gt;&lt;li&gt;El código se debe refactorizar ANTES de pasar las pruebas, en la actividad de verificación. Las pruebas son muy costosas (incluso automatizadas), por lo que deberíamos pensar dos veces antes de tocar un código que ha pasado ya las pruebas.&lt;/li&gt;&lt;li&gt;No tocar el código que afecte a otros desarrollos (en curso o en producción), sin antes hacer una evaluación del impacto y recibir la aprobación correspondiente. En muchas ocasiones, algo que funciona correctamente según las pruebas unitarias, al subirlo a producción ROMPE OTROS DESARROLLOS con los que interactuaba.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-8258005998209423454?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/8258005998209423454/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/refactoritis.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8258005998209423454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8258005998209423454'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/refactoritis.html' title='Refactoritis'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-6_G9IS_OLxI/Ttf-qJLKbVI/AAAAAAAAAGQ/m8U1cgg2bzg/s72-c/refactoring.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-7171416988458729752</id><published>2011-10-04T05:32:00.000-07:00</published><updated>2011-10-04T13:43:28.295-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><title type='text'>Gestión de equipos: la teoría del caballo muerto</title><content type='html'>Hoy, a falta de algo más elaborado, tengo que echar mano de otro guiño de humor.&lt;br /&gt;&lt;br /&gt;Para los que trabajáis en este mundillo del desarrollo de software, os arrancará algunaque otra sonrisa. Para los gestores de equipos y de proyectos que no lo hayáis entendido...manteneos alejados de mí.&lt;br /&gt;&lt;br /&gt;Por cierto, haciendo clic en la imagen la veréis "en grande", ¿ok? pues ale.. a disfrutar&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-i4egDOXD__U/TorsarGO2aI/AAAAAAAAAC0/zUV3EAuRnWE/s1600/caballomuerto.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="290" kca="true" src="http://2.bp.blogspot.com/-i4egDOXD__U/TorsarGO2aI/AAAAAAAAAC0/zUV3EAuRnWE/s400/caballomuerto.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-7171416988458729752?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/7171416988458729752/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/gestion-de-equipos-la-teoria-del.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7171416988458729752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7171416988458729752'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/gestion-de-equipos-la-teoria-del.html' title='Gestión de equipos: la teoría del caballo muerto'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-i4egDOXD__U/TorsarGO2aI/AAAAAAAAAC0/zUV3EAuRnWE/s72-c/caballomuerto.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-6927640830725543457</id><published>2011-10-03T05:36:00.000-07:00</published><updated>2011-10-03T05:36:36.973-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><title type='text'>El gerente del turno de noche</title><content type='html'>A continuación, adjunto una imagen, que vale por cien palabras. Yo suelo decir una frase sobre los malos gestores y jefes de proyecto que reza que "mantienen los recursos lejos de los objetivos".&lt;br /&gt;&lt;br /&gt;Vendría a ser similar esta iniciativa, en la que nuestro gerente favorito se encarga de poner los medios más inadecuados para las necesidades del proyecto.&lt;br /&gt;&lt;br /&gt;Que aproveche.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Ebt5SfKd0xk/TomsJ-ofBLI/AAAAAAAAACw/CGBSiqIcSx0/s1600/Dilbert_Night+Shift+Manager.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="122" kca="true" src="http://3.bp.blogspot.com/-Ebt5SfKd0xk/TomsJ-ofBLI/AAAAAAAAACw/CGBSiqIcSx0/s400/Dilbert_Night+Shift+Manager.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-6927640830725543457?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/6927640830725543457/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/el-gerente-del-turno-de-noche.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6927640830725543457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6927640830725543457'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/10/el-gerente-del-turno-de-noche.html' title='El gerente del turno de noche'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-Ebt5SfKd0xk/TomsJ-ofBLI/AAAAAAAAACw/CGBSiqIcSx0/s72-c/Dilbert_Night+Shift+Manager.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-3375605382456474597</id><published>2011-09-29T07:33:00.000-07:00</published><updated>2011-12-01T14:27:12.138-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Arquitectura'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>Cacheitis: otra enfermedad común del desarrollo software</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-78T_1QJScMw/Ttf_NGEIoeI/AAAAAAAAAGY/HBMsB7OVxY0/s1600/SRTC_2.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="270" src="http://2.bp.blogspot.com/-78T_1QJScMw/Ttf_NGEIoeI/AAAAAAAAAGY/HBMsB7OVxY0/s320/SRTC_2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Hoy hablamos de otra enfermedad habitual en el mundo del desarrollo software. Relacionada con las enfermedades "arquitectónicas", está especialmente relacionado con desvaríos de los arquitectos de software a la hora de implantar soluciones que por su ineficiente diseño, producen un mal rendimiento. Entonces la definición de &lt;b&gt;&lt;i&gt;Cacheitis&lt;/i&gt;&lt;/b&gt; vendría a ser algo así: "desorden transitorio del arquitecto o diseñador de software por el cual el uso inadecuado de la caché provoca como resultado una solución ineficiente".&lt;br /&gt;&lt;br /&gt;¿Y cuál es la primera solución que se les ocurre? Sí señoooor: más caché. Caché por todos lados. Vamos a cachear todo lo cacheable.&lt;br /&gt;&lt;br /&gt;En otras ocasiones, es al reves. Se parte con un exceso de caché desde el inicio del diseño, y esto deriva en un mal rendimiento. Para solucionarlo: como no...más caché.&lt;br /&gt;&lt;br /&gt;Rodrigo corral en su &lt;a href="http://geeks.ms/blogs/rcorral/archive/2011/02/16/cacheitis-lo-m-237-nimo-que-todo-desarrollador-debe-saber-sobre-las-cach-233-s.aspx"&gt;blog&lt;/a&gt; ya hablaba de este problema, y aporta algunas buenas prácticas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Asume que no puedes cachearlo todo&lt;/b&gt;. Esto es viejísimo: ya es harto conocido por ejemplo, que en el mundo de las bases de datos es absurdo tratar de indexar todo en la búsqueda del rendimiento. Pues esa mala práctica, la cacheitis la extiende al uso de la cache.&lt;/li&gt;&lt;li&gt;&lt;b&gt;El cacheo temprano no es bueno&lt;/b&gt;. A menudo cuando diseñamos una arquitectura establecemos mecanismos de cacheo que luego son utilizados hasta el abuso. El peligro subyacente al cacheo temprano es que comencemos a cachear sistemáticamente elementos que nos parecen costosos sin tener evidencia de que realmente son los mejores candidatos para su cacheo. De nuevo, podemos establecer la comparación con el uso excesivo de índices en las bases de datos.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Tener en cuenta las otras cachés&lt;/b&gt;. Hay que recordar que existen muchos niveles de caché. El motor de base de datos, el servidor web, ADO.Net, etc, etc. &lt;/li&gt;&lt;li&gt;&lt;b&gt;Una colección estática o global no es una caché:&lt;/b&gt; los desarrolladores noveles, y a veces los no tan noveles, utilizan datos estáticos o globales para simular el uso de la caché. Por desgracia, esto es una burda imitación de las múltiples características que deben incluirse en un mecanismo de caché como: acceso frecuente a los datos, políticas de refresco e invalidación, liberación de recursos de uso infrecuente, etc.&lt;/li&gt;&lt;/ul&gt;¿Qué es lo que hay que hacer? Pues recordar que somos ingenieros, y tratar de aplicar el sentido común (por desgracia, no el más común de los sentidos hoy día). Para ello, hay que relajar el usar la caché en las etapas tempranas del proyecto, y dejar para las etapas de optimización un uso combinado e inteligente de:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Optimización mediante caché&lt;/li&gt;&lt;li&gt;Optimización del acceso a datos mediante índices, su propia caché, vistas, datos calculados, etc.&lt;/li&gt;&lt;li&gt;Minimizar los accesos a servicios web, WCF, y a otras capas de la aplicación, de forma que las operaciones no hagan "excesivos viajes" para obtener la misma información.&lt;/li&gt;&lt;/ul&gt;De hecho, al final, no es sino hacer uso de los más básicos principios ágiles: simplicidad desde el diseño.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-3375605382456474597?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/3375605382456474597/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/cacheitis-otra-enfermedad-comun-del.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/3375605382456474597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/3375605382456474597'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/cacheitis-otra-enfermedad-comun-del.html' title='Cacheitis: otra enfermedad común del desarrollo software'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-78T_1QJScMw/Ttf_NGEIoeI/AAAAAAAAAGY/HBMsB7OVxY0/s72-c/SRTC_2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-8187325733446436297</id><published>2011-09-27T23:44:00.000-07:00</published><updated>2011-12-01T14:31:10.164-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><title type='text'>5 malas prácticas en la oficina</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Gh7GvcxdXGI/TtgAHXjKSFI/AAAAAAAAAGg/wosJzE-gOg0/s1600/the-office.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="245" src="http://4.bp.blogspot.com/-Gh7GvcxdXGI/TtgAHXjKSFI/AAAAAAAAAGg/wosJzE-gOg0/s320/the-office.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Bueno, hoy el titular es la metáfora del auténtico titular que ha inspirado este post: "&lt;a href="http://lifehacker.com/5843752/the-stupid-things-you-do-at-work-and-how-to-fix-them"&gt;The stupid things you do at work (and how to fix them)&lt;/a&gt;"&lt;br /&gt;&lt;br /&gt;En este artículo, hace una magnífica reflexión de acciones que solemos llevar a cabo y son improductivas o contraproducentes. Me ha hecho gracia por dos motivos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Vuelve a sacar el tema de la procrastinación en el trabajo. ¿Que no sabes lo que es?. ¿Es que no lees este blog? ;)&lt;/li&gt;&lt;li&gt;El otro motivo es que para ejemplizar la procrastinación, hace referencia a un refrán:&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;"y como dice el refrán español: mañana probablemente es el día más ocupado de la semana". &lt;i&gt;Anónimo&lt;/i&gt;.&lt;/blockquote&gt;Soberbio. Sin palabras. En fin, al grano. Vamos a ver resumidas, las 5 malas prácticas en la oficina:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Ponernos nerviosos&lt;/b&gt;. Cuando nos enfrentamos a tareas grandes, con alto riesgo, que nunca antes hemos hecho, o para las que no nos vemos preparados, suele ocurrar esto.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Aferrarse a nuestras ideas y métodos, aunque estén mal&lt;/b&gt;. Hemos de aceptar que nuestros métodos o ideas no han de ser siempre los mejores. Punto. Quien lo confunde con ofrecer seguridad, tiene un grave problema. La seguridad consiste en poner los medios y medir los riesgos, para que podamos ofrecer la solución más adecuada al contexto.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Procrastinar en lugar de hacer las cosas&lt;/b&gt;. El no afrontar las tareas inmediatas, y relegarlas en favor de lo que nos gusta más, o nos hace sentir más seguros, es un problema.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Creerte mejor de lo que realmente eres&lt;/b&gt;. Tenemos una tendencia exagerada a ignorar nuestros fallos y hacer públicos nuestros éxitos. Es un mecanismo de conservación innato en nuestra especie. El miedo a qué dirán. La verguenza pública. Todo esto realmente nos limita y nos hace comportarnos muy por debajo de nuestras posibilidades. Nuestro rendimiento profesional y la calidad de nuestro trabajo, se ven afectados en consecuencia.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Traer tu orgullo a la oficina&lt;/b&gt;. A la hora de negociar, mucha gente cuando obtiene un beneficio muy pequeño de la negociación, hace gala de su orgullo y prefiere no llevarse nada. Si pensamos con pura lógica, no tendría sentido este resutado. Sin embargo, la realidad nos hace ver cuán afectado puede verse nuestro comportamiento si nuestro orgullo hace acto de presencia.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-8187325733446436297?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/8187325733446436297/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/5-malas-practicas-en-la-oficina.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8187325733446436297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8187325733446436297'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/5-malas-practicas-en-la-oficina.html' title='5 malas prácticas en la oficina'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Gh7GvcxdXGI/TtgAHXjKSFI/AAAAAAAAAGg/wosJzE-gOg0/s72-c/the-office.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-2295136162470975062</id><published>2011-09-27T03:53:00.000-07:00</published><updated>2011-12-01T14:33:34.109-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Gestión de Proyectos Ágil</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-j46A7vml2uY/TtgAr0vWQaI/AAAAAAAAAGo/eFbZ1QIW0TE/s1600/DilbertAgileProgramming.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="140" src="http://1.bp.blogspot.com/-j46A7vml2uY/TtgAr0vWQaI/AAAAAAAAAGo/eFbZ1QIW0TE/s400/DilbertAgileProgramming.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Se ha publicado recientemente el documento "Agile Project Management", que podéis descargar &lt;a href="http://www.qrpinternational.es/index/download"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;El documento, resultado de la colaboración entre APMG-International y el consorcio DSDM, presenta un enfoque innovador en la gestión de proyectos. Ojo, no confundir con la gestión de equipos, que es el alcance que tienen muchas metodologías ágiles como SCRUM.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-2295136162470975062?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/2295136162470975062/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/gestion-de-proyectos-agil.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/2295136162470975062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/2295136162470975062'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/gestion-de-proyectos-agil.html' title='Gestión de Proyectos Ágil'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-j46A7vml2uY/TtgAr0vWQaI/AAAAAAAAAGo/eFbZ1QIW0TE/s72-c/DilbertAgileProgramming.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-3964647769535791968</id><published>2011-09-26T06:04:00.000-07:00</published><updated>2011-12-01T14:35:27.916-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='ágil'/><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><title type='text'>Errores a evitar en la adopción de metodologías ágiles</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-QgkI0CXGT0w/TtgBHzAuuCI/AAAAAAAAAGw/wt1DYayiKmk/s1600/Dilbert-agile2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="146" src="http://4.bp.blogspot.com/-QgkI0CXGT0w/TtgBHzAuuCI/AAAAAAAAAGw/wt1DYayiKmk/s400/Dilbert-agile2.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;En varias ocasiones, nos encontraremos que por muy convencidos que estemos de las bondades de las metodologías ágiles, vamos a encontrar una reacción de desconfianza o incluso de rechazo por parte de los clientes o de los responsables de proyectos cuando tratemos de que las adopten.&lt;br /&gt;&lt;br /&gt;Incluso aunque los proyectos / clientes tengan problemas con sus metodologías actuales, el rechazo y desconfianza se mantiene, y se sigue trabajando una y otra vez manteniendo las mismas prácticas y cometiendo los mismos errores. Conclusión: los proyectos se siguen entregando tarde y mal.&lt;br /&gt;&lt;br /&gt;El problema está en la cultura corporativa. Las ideas, los hábitos, son difíciles de cambiar. La resistencia al cambio es constante. Además, dicha resistencia debería ser inversamente proporcional a los argumentos proporcionados. Y no es así. ¿Cuál es la solución? Pues como todo en esta vida, la solución está asociada al problema, así que vamos a tratar de identificarlo.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;No tenemos la razón.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;La clave, está en que estamos tratando de vender una idea, un concepto: nuestra metodología es mejor. Y la percepción es precisamente ésa, de que estamos tratando &lt;b&gt;vender&lt;/b&gt;. Y la gente no quiere comprar, &lt;b&gt;quiere soluciones a sus problemas&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;Es por eso que es necesario un cambio de enfoque. Hemos de conseguir que la gente sea consciente de la raiz de sus problemas, que sean capaces ellos mismos de darse cuenta de que necesitan un cambio. Los pasos serían algo así como:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Identificar los problemas&lt;/li&gt;&lt;li&gt;Identificar las causas&lt;/li&gt;&lt;li&gt;Identificar la necesidad de un cambio&lt;/li&gt;&lt;li&gt;Identificar alternativas&lt;/li&gt;&lt;li&gt;Evaluar alternativas&lt;/li&gt;&lt;li&gt;Encontrar una solución&lt;/li&gt;&lt;/ul&gt;Así de simple. De hecho, es posible que a pesar de creernos los poseedores de la verdad más absoluta ("que sí, que Scrum es la solución, que sí, que si 10 millones de usuarios usan Scrum, es que Scrum es bueno"), da igual. Hay que ofrecer soluciones adaptadas, no varitas mágicas. A continuación, veremos algunas técnicas útiles en la realización de los pasos comentados.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;El método de la abuela&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;A la hora de explicar una metodología (Scrum,&amp;nbsp;etc.), hemos de hacerlo con el "&lt;b&gt;Método de la Abuela&lt;/b&gt;". ¿Qué es? Pues elegir alguien que haga de "abuela". Si puede ser, coge directamente a tu abuela. Y tratemos de explicarle, en este caso, en qué consiste la metodología que queremos implantar. Repítelo N veces, usando cada vez un lenguaje menos técnico, hasta que cualquier "abuela" pueda entenderlo.&lt;br /&gt;&lt;br /&gt;En este método, hay que evitar hacer sentirse tonta a la gente. Una abuela puede que no tenga un fondo técnico o relacionado con las TI, pero no es tonta. Así que acostumbrémonos a &lt;b&gt;evitar hacer sentirse tonta a la gente.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Escuchar&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Hay que saber escuchar, incluyendo lo que no nos dicen. Si detectamos rechazo o desconfianza, hay que ver la raíz de su comportamiento.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Conseguir empatía&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Es más fácil que te "compren" una idea, si la otra parte siente que das confianza. Por ejemplo, no se trata de dar nuestras experiencias (que al final pueden ser subjetivas). En lugar de eso, demos datos reales de otros proyectos y empresas, y refrendado por métricas o datos verificables.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Detectar barreras en la organización&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;En ocasiones, las barreras están en la propia empresa, no en nuestras habilidades comunicativas. Si la cultura organizativa es resistente al cambio (burocracia, organigrama, reinos de taifas, etc.), de poco servirán nuestros bien pulidos "interpersonal skills".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-3964647769535791968?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/3964647769535791968/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/errores-evitar-en-la-adopcion-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/3964647769535791968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/3964647769535791968'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/errores-evitar-en-la-adopcion-de.html' title='Errores a evitar en la adopción de metodologías ágiles'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-QgkI0CXGT0w/TtgBHzAuuCI/AAAAAAAAAGw/wt1DYayiKmk/s72-c/Dilbert-agile2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-2722158328582283461</id><published>2011-09-22T12:59:00.000-07:00</published><updated>2011-09-22T12:59:08.261-07:00</updated><title type='text'>Por los expatriados</title><content type='html'>Por cierto, estoy teniendo visitas al blog desde Alemania...¿será Alberto Bolsa?&lt;br /&gt;&lt;br /&gt;Ese Albertoooo...mucha suerte, tio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-2722158328582283461?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/2722158328582283461/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/por-los-expatriados.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/2722158328582283461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/2722158328582283461'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/por-los-expatriados.html' title='Por los expatriados'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-1576986803831615296</id><published>2011-09-21T13:35:00.000-07:00</published><updated>2011-09-22T12:56:17.905-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>xxx Driven Development</title><content type='html'>Desde hace ya tiempo, vienen desgranándose ;) diversos paradigmas de desarrollo con el nombre de "no-se-qué Driven Development".&lt;br /&gt;&lt;br /&gt;Y aunque algunos de ellos son muy jóvenes y están aún en pleno arranque, no está de más echar a un vistazo a la evolución, no siempre lineal en el tiempo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;strong&gt;Database Driven Design (¿DDD?)&lt;/strong&gt;.&lt;/span&gt; &lt;br /&gt;Es el diseño de una aplicación partiendo del modelo de datos. Durante muchos años explicado en las universidades y otros centros de enseñanza, al final es más una consecuencia de la forma de pensar que de una necesidad de arquitectura o diseño. La necesidad de establecer un modelo de datos como "base"&amp;nbsp;en las fases más tempranas, conlleva que tratemos de definir al máximo los datos, su estructura y flujo. Al final, las pantallas no dejan de ser un mero reflejo de dicho modelo. Por desgracia, esta forma de trabajo con el tipo de aplicaciones actuales orientadas al usuario, donde la interfaz es el rey, y lo importante es hacer sentir cómodo al usuario.&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;UI Driven Design (UIDD)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;He sido fan de este modelo de diseño, pero ha chocado con una realidad, y es que es relativamente sencillo definir un modelo de datos y una capa de negocio que cumplan con los objetivos. Sin embargo, las interfaces de usuario se resisten, en especial con la explosión del mundo web, que ha acabado barriendo los desarrollos de escritorio (en orden de magnitud). Ha tenido que llegar el año 2010/2011 para que tengamos que oir (otra vez) la promesa de que con nuevos estándares (esta vez HTML5 entre otros), la web será "como las aplicaciones de escritorio". Gracias por reinventar la rueda, pero seguiremos esperando. Mientras tanto, las aplicaciones (de escritorio o web), siguen fallando de forma habitual en la interfaz.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Interaction Design (Goal-Oriented Design=GOD)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Similar a la anterior, está apadrinada (entre otros) por Alan Cooper, experto en temas de interacción y usabilidad (os recomiendo su famoso "The Inmates are Running The Asylum", donde trata la metodología "Goal-Oriented Design"). Bajo mi punto de vista, es una metodología desaprovechada, y que sigue cubriendo aquello que muchas otras metodologías están buscando abordar: la satisfacción del usuario.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Test Driven Development (TDD)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Esta vez sin seguir secuencia cronológica, la TDD o metodología de desarrollo guiada por pruebas, nos invita a acelerar los desarrollos y mejorar la calidad de los productos, basándose esta vez en otra de las fases o actividades del ciclo de vida: las pruebas. De nuevo, una gran promesa, todavía sin caer en el desprecio, pero que exige por parte de los equipos de desarrollo de dos ingredientes no habituales: disciplina y mesura. Disciplina para crear con antelación los tests, y mesura para saber hasta dónde llegar con las pruebas.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Domain Driven Design (DDD)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Según el sitio web&amp;nbsp;&lt;a href="http://domaindrivendesign.org/"&gt;http://domaindrivendesign.org&lt;/a&gt;&amp;nbsp;es una forma de pensar, en lugar de una metodología. Dejando aparte dogmatismos insondables, se centran en la parte del diseño de un modelo, de la capa de negocio principalmente. De esta forma, se pretende dar solución a los proyectos en los que la complejidad y el tamaño del software a construir haga inabordable la tarea. Bajo mi punto de vista, esta forma de trabajo,&amp;nbsp;sigue adoleciendo de problemas similares a los que presentan otras técnicas. De hecho, si una de las causas del fracaso del software es la complejidad del software, tenemos un grave problema no metodológico, sino de análisis y de visión del producto.&lt;br /&gt;&lt;br /&gt;[Editado]: ¡me había dejado Feature Driven Development!&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Feature Driven Development (FDD)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Es una metodología de desarrollo ágil, centrada en el modelo, y en la que el desarrollo está liderado por los requisitos. Es una metodología que parece encajar muy bien en equipos y proyectos grandes. Ya le dedicaré un post con más tranquilidad otro día.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-1576986803831615296?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/1576986803831615296/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/xxx-driven-development.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/1576986803831615296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/1576986803831615296'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/xxx-driven-development.html' title='xxx Driven Development'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-6940238273814419240</id><published>2011-09-21T06:34:00.000-07:00</published><updated>2011-09-21T06:34:27.825-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Requisitos'/><title type='text'>Requisitos y la importancia del diseño</title><content type='html'>Revisando documentación, he encontrado esta imagen que resume la importancia de:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Los requisitos&lt;/li&gt;&lt;li&gt;El diseño de la solución&lt;/li&gt;&lt;li&gt;La coherencia en las comunicaciones hacia el cliente&lt;/li&gt;&lt;li&gt;La importancia del prototipo&lt;/li&gt;&lt;li&gt;Las carencias en la documentación, soporte e implementación&lt;/li&gt;&lt;/ul&gt;Como la considero un clásico que todos los que nos dedicamos al desarrollo de software deberíamos conocer, ahí va para los que no la conozcáis.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-sA42oM4l3Ug/TnC_OJU1s5I/AAAAAAAAACI/wmpPCmm6l4k/s1600/requirements.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="285" rba="true" src="http://4.bp.blogspot.com/-sA42oM4l3Ug/TnC_OJU1s5I/AAAAAAAAACI/wmpPCmm6l4k/s400/requirements.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Los&amp;nbsp;que decís que&amp;nbsp;lo teníais muy visto...más os valdría recordarlo de vez en cuando (me incluyo), porque cometemos de forma constante errores como estos, y algún día habrá que dejar de echar la culpa a los demás.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Para este tipo de problemas, existen varias soluciones o técnicas que nos pueden servir:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;strong&gt;Prototipado&lt;/strong&gt;. El cliente puede ver con anticipación, la solución final o partes de la misma. Sin embargo, esto se queda simplemente para formación teórica, ya que en la práctica, los programas de software son mucho más complejos que lo mostrado en la figura. El cliente, hasta que no USE realmente en su día a día el producto, no será capaz de detectar lo buen o mal diseñado que estará.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;strong&gt;Ciclos de vida iterativos en general&lt;/strong&gt;. Prometen tener soluciones parcialmente construidas, que el cliente puede validar. Tiene los mismos problemas que el prototipado.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;strong&gt;Metodologías ágiles&lt;/strong&gt;. Normalmente, las metodologías ágiles incluyen entregas frecuentes y un ciclo de vida iterativo que facilita evitar estos problemas. Sin embargo, en absoluto son garantía de evitar los problemas descritos en la imagen. Tiene también problemas&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Como vemos, no hay balas de plata. Al final, la mejor herramienta es la experiencia. Conocer el negocio del cliente, y conocer el negocio del desarrollo de software.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Como ejemplo, voy a dar un caso real. Para una empresa, se solicitó una aplicación para rellenar unos formularios tipo. La primera aproximación que se tomó, y que coincidía con lo que pedía literalmente el cliente, fue mostrar en pantalla "el formulario tal cual". Así se hizo, y resultó un fracaso. El trasladar a la pantalla el formulario produjo múltiples problemas, ya que la metáfora usada (el mostrar el formulario tal cual), contradecía las metáforas de usabilidad que había en el resto de aplicaciones, y a las que estaban acostumbrados los usuarios. Además, resultó que cualquier cambio en el formulario físico (el report), obligaba a cambiar la pantalla de inserción de datos.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-6940238273814419240?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/6940238273814419240/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/requisitos-y-la-importancia-del-diseno.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6940238273814419240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6940238273814419240'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/requisitos-y-la-importancia-del-diseno.html' title='Requisitos y la importancia del diseño'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-sA42oM4l3Ug/TnC_OJU1s5I/AAAAAAAAACI/wmpPCmm6l4k/s72-c/requirements.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-3209845576863262017</id><published>2011-09-19T05:46:00.000-07:00</published><updated>2011-09-19T23:56:40.164-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Arquitectura'/><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>La importancia del análisis</title><content type='html'>Un análisis (funcional o técnico), es un punto importante, en el que el analista de turno "se moja" y decide implementar los requisitos de una forma implementable. El problema, como se ejemplifica a la perfección en la imagen siguiente, es que hay que tener antes la&amp;nbsp;experiencia suficiente para (entre otras cosas), saber identificar si hay componentes o incluso sistemas enteros que implementan nuestra misma solución.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Ul0sWYLTjug/Tnc5cv_kyeI/AAAAAAAAACM/X-jfDe3wREY/s1600/nosolotira_0001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" rba="true" src="http://3.bp.blogspot.com/-Ul0sWYLTjug/Tnc5cv_kyeI/AAAAAAAAACM/X-jfDe3wREY/s400/nosolotira_0001.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Fuente: &lt;a href="http://www.nosololinux.com/2009/03/27/la-nosolotira-grandes-ideas/"&gt;http://www.nosololinux.com/2009/03/27/la-nosolotira-grandes-ideas/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-3209845576863262017?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/3209845576863262017/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/la-importancia-del-analisis.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/3209845576863262017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/3209845576863262017'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/la-importancia-del-analisis.html' title='La importancia del análisis'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-Ul0sWYLTjug/Tnc5cv_kyeI/AAAAAAAAACM/X-jfDe3wREY/s72-c/nosolotira_0001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-7729172190940976706</id><published>2011-09-15T12:06:00.000-07:00</published><updated>2011-09-15T12:06:49.477-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>TFS y las reglas de CheckIn de asociación a WorkItems</title><content type='html'>Como ya sabréis lo que desarrolláis en Microsoft&amp;nbsp;.Net, se pueden establecer reglas para que las operaciones de CheckIn en el repositorio de código de TFS, exijan asociar a cada subida de código uno o más WorkItems.&lt;br /&gt;&lt;br /&gt;Esta regla, es mucho más importante de lo que parece, ya que esconde por detrás un grave problema de gestión y visibilidad del estado del desarrollo.&lt;br /&gt;&lt;br /&gt;¿Qué ocurre si haces un CheckIn, y no asocias ningún workitem?. Pues que la tarea no está planificada, no se puede detectar a qué se han debido los cambios. Si no es un desliz, y realmente no hay tarea (workitem) planificada, &lt;br /&gt;&lt;ol&gt;&lt;li&gt;estamos haciendo algo innecesario, o bien&lt;/li&gt;&lt;li&gt;estamos haciendo algo necesario no planificado, o bien&lt;/li&gt;&lt;li&gt;estamos haciendo algo necesario, planificado, pero que está oculto.&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;En el primer caso,&amp;nbsp; tendríamos al típico programador que dedica su tiempo a tareas agradables, que le gustan, o que simplemente está probando algo que se le ha ocurrido. Sería un caso típico de procrastinación (ver entradas anteriores en este blog sobre este tema).&lt;/li&gt;&lt;li&gt;En el caso 2, hay varias opciones, pero una típica sería cuando hemos dado algo por cerrado, y recordamos un requisito de diseño, una funcionalidad que se habló pero no se incluyó en los workitems, etc.&lt;/li&gt;&lt;li&gt;En el caso 3, por ejemplo, un ejemplo habitual es cuando queriendo o sin querer, hacemos cosas planificadas en el workitem, pero se nos olvida asociarlo. Puede ser que se nos olvidara por ejemplo las pruebas unitarias, así que las pasamos, corregimos cosas de un workitem antiguo, pero no lo indicamos.&lt;/li&gt;&lt;/ul&gt;En proyectos con metodología no iterativa, muchas veces estos casos quedan ocultos, y tienen un impacto menos apreciable en la planificación (aunque no dejan de ser importantes). Sin embargo, con metodologías iterativas, tipo Scrum, el impacto es mucho mayor. El hecho de que en una iteración de 1 o 2 semanas, tengamos tareas realizadas pero no planificadas, puede suponer una desviación importante. Si ya las tareas que se realizan encima no son necesarias, el desastre está asegurado.&lt;br /&gt;&lt;br /&gt;¿Qué tiene que ver esto con la calidad? Pues mucho, porque como veremos en un próximo post sobre cómo medir la calidad, ésta no es sólo "nº de defectos". En el desarrollo de software, un factor clave es la trazabilidad. Si no somos capaces de saber en qué partes de nuestro programa están implementados los requisitos (o las "Historias de Usuario" en terminología Scrum), una de dos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;O alguien ha rellenado una matriz de trazabilidad (infame pero útil documento del cual algún día hablaremos)&lt;/li&gt;&lt;li&gt;O simplemente, no podremos identificar dónde están implementados esos requisitos. Como supuestamente estamos abiertos al cambio, cualquier cambio en los requisitos hará que&amp;nbsp;tengamos que dedicar un tiempo precioso a&amp;nbsp;rastrear el código&amp;nbsp;para saber cuánto hay que cambiar y dónde. Y si no somos capaces de identificar el impacto de un cambio, me rio yo de las estimaciones que haremos.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-7729172190940976706?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/7729172190940976706/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/tfs-y-las-reglas-de-checkin-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7729172190940976706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7729172190940976706'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/tfs-y-las-reglas-de-checkin-de.html' title='TFS y las reglas de CheckIn de asociación a WorkItems'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-5836666739351209628</id><published>2011-09-15T07:25:00.001-07:00</published><updated>2011-09-19T23:55:41.007-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><title type='text'>Test de habilidades profesionales</title><content type='html'>Aún a riesgo de caer en el exceso de blogs con la etiqueta humor, hoy traigo otro, que por otro lado hará las delicias de los profesionales (incluyendo los ajenos al mundo del desarrollo del software). &lt;br /&gt;&lt;br /&gt;A continuación, presento un test de preguntas que utiliza Accenture para ayudar a entender tu forma de pensar. Las preguntas no son difíciles. Para ver las respuestas, basta seleccionar con el ratón el texto&amp;nbsp;en el hueco que hay debajo de cada pregunta (sí, sí, es texto del color de fondo, por eso no lo ves).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. ¿Como meterías una girafa en&amp;nbsp;el frigorífico?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;La respuesta correcta es: abre el frigorífico, mete la girafa y cierra la puerta.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;Esta pregunta comprueba si tiendes a hacer las cosas de forma excesivamente complicada.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. ¿Cómo meterías un elefante en el frigorífico?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;Respuesta incorrecta: Abre el frigorífico, mete el elefante y cierra la puerta.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;Respuesta correcta: abre el frigorífico, saca la girafa, mete el elefante y cierra la puerta.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;Esta pregunta comprueba tu habilidad para ser consciente de las repercusiones de tus acciones.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. El Rey León está en una conferencia de los animales, donde están todos menos uno. ¿Qué animal no está allí?.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;Respuesta correcta: el elefante, que está el pobre aún metido en el frigorífico. &lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;Esta pregunta comprueba tu memoria. Llegados a este punto, incluso si no respondiste correctamente las 3 preguntas anteriores, seguramente la siguiente sí lo harás.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. Hay un río que debes cruzar, pero está habitado por cocodrilos. ¿Cómo lo harías?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;Respuesta correcta: lo cruzas nadando y punto, ya que todos los cocodrilos están atendiendo la conferencia del Rey Leon!!.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;Esta pregunta comprueba si puedes aprender rápidamente de tus errores.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Según Accenture, alrededor del 90% de los profesionales tuvieron todas las preguntas mal. Cuando se les hizo esta pregunta a preescolares, éstos tuvieron varias respuestas correctas.&lt;br /&gt;Según Accenture, esto concluyentemente contradice la teoría de que la mayoría de los profesionales tienen el cerebro de un niño de 4 años.&lt;br /&gt;&lt;br /&gt;Fuente: &lt;a href="http://www.creativityatwork.com/articlesContent/creativity-quiz.html"&gt;http://www.creativityatwork.com/articlesContent/creativity-quiz.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-5836666739351209628?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/5836666739351209628/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/test-de-habilidades-profesionales.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5836666739351209628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5836666739351209628'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/test-de-habilidades-profesionales.html' title='Test de habilidades profesionales'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-6886605431851201324</id><published>2011-09-14T14:17:00.000-07:00</published><updated>2011-12-01T14:51:08.749-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><title type='text'>9 maneras de lidiar con un jefe tonto</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-u1BqHGiCtd8/TtgESVxKaaI/AAAAAAAAAHI/T_TlH80vO4A/s1600/Quality+boss.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="177" src="http://2.bp.blogspot.com/-u1BqHGiCtd8/TtgESVxKaaI/AAAAAAAAAHI/T_TlH80vO4A/s400/Quality+boss.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Bueno, en primer lugar, y para tranquilizar a propios y extraños, diré que vamos a hablar de situaciones hipotéticas, de charlas habidas alrededor de un vaso de café, pero que en absoluto están relacionadas con situaciones reales. &lt;br /&gt;&lt;br /&gt;Por cierto, recordad que las imágenes como la que acompaña este blog, podéis ampliarlas sin más que hacer clic sobre ellas. Además la de hoy es una tira de Dilbert que os recordará más de una ocasión en vuestra vida laboral.&lt;br /&gt;&lt;br /&gt;En alguna ocasión, casi todo el mundo se ha encontrado con alguien que parece seguir el principio de Dilbert: alguien que ha ascendido en la escala laboral, de forma inversamente proporcional a su aptitud. Y que a pesar de esgrimir de forma evidente y constante dicha falta de aptitud, se las ingenia para seguir siendo jefe o incluso seguir ascendiendo. Si usted cree que su jefe es así, aquí van algunos consejos que quizá le hagan la vida más fácil.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Intente hacerle quedar siempre por encima&lt;/b&gt;. Vamos, hacerle la pelota no le irá mal, y con suerte, conseguirá aumentar la estima de su jefe lo suficiente para que desaparezca (quizá, siguiendo con el principio de Peter, sea ascendido en base a su incompetencia).&lt;/li&gt;&lt;li&gt;&lt;b&gt;Documente su trabajo&lt;/b&gt;. Tome nota de qué le pide su jefe, en qué términos y condiciones, etc. Cuanto más sea lo absurdo o imposible que le pida su jefe, tómese más molestias en anotarlo, conseguir pruebas, guardar mailes, etc.&lt;/li&gt;&lt;li&gt;&lt;b&gt;No critique a su jefe de forma abierta&lt;/b&gt;. Si su jefe la caga en una reunión, asuma usted el rol de jefe, haciéndole a puerta cerrada sutiles comentarios acerca de lo desacertado de su, por otra parte, magnífica exposición.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Evite saltarse a su jefe&lt;/b&gt;. Hágalo partícipe de todo, sobre todo de sus éxitos. Con un poco de suerte, se los atribuirá él, y al ascender, se librará de su supervisión.&lt;/li&gt;&lt;li&gt;&lt;b&gt;No espere que su jefe cambie&lt;/b&gt;. &lt;/li&gt;&lt;li&gt;&lt;b&gt;Manténgase alejado en público de su jefe&lt;/b&gt;. Por asociación, puede usted convertirse en "el tonto que es amigo del tonto".&lt;/li&gt;&lt;li&gt;&lt;b&gt;Cambie de dirección&lt;/b&gt;. Cuando su jefe trate de darle una orden, ofrezca una lista de problemas espantosos e insolubles, y pídale su opinión.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Cambio gradual de objetivos&lt;/b&gt;. Consiste en diseñar  una serie de objetivos en el tiempo para un proyecto que sean más fáciles de  cumplir o, de hecho, que sea algo que usted ya haya realizado.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Entrene a su jefe tonto&lt;/b&gt;. Ofrezca a su jefe un dulce cada vez que pase cerca de su mesa y hace un comentario positivo. Si el comentario es negativo, no le de ningún dulce. Observará cómo el número de comentarios negativos que su jefe le hace, decrece con el tiempo.&lt;/li&gt;&lt;/ol&gt;Fuente: &lt;a href="http://www.eltiempo.com/archivo/documento/MAM-1011314"&gt;http://www.eltiempo.com/archivo/documento/MAM-1011314&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-6886605431851201324?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/6886605431851201324/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/9-maneras-de-lidiar-con-un-jefe-tonto.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6886605431851201324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6886605431851201324'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/9-maneras-de-lidiar-con-un-jefe-tonto.html' title='9 maneras de lidiar con un jefe tonto'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-u1BqHGiCtd8/TtgESVxKaaI/AAAAAAAAAHI/T_TlH80vO4A/s72-c/Quality+boss.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-3635060694949911410</id><published>2011-09-13T23:57:00.000-07:00</published><updated>2011-12-01T14:41:38.621-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>Procrastinación (II)</title><content type='html'>&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-TWQ8E7rr-ZQ/TtgChF2zePI/AAAAAAAAAHA/Au8gQl1VRb4/s1600/procrastinacion.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-TWQ8E7rr-ZQ/TtgChF2zePI/AAAAAAAAAHA/Au8gQl1VRb4/s640/procrastinacion.jpg" width="352" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;Visto el éxito de del anterior &lt;/span&gt;&lt;a href="http://calidadysoftware.blogspot.com/2011/09/procrastinacion.html"&gt;&lt;span style="color: blue; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;post&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt; sobre procrastinación, me he animado a ahondar algo más sobre el asunto. Si bien en un principio me hacía gracia la palabrita, si&amp;nbsp;rascamos sobre la superficie, encontramos un tema actual y candente, una cruda realidad de estos tiempos que corren.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;Además, la viñeta de Dilbert que acompaña este post no tiene desperdicio. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;Es bien conocido que estos días se habla mucho de que la cultura de internet, twitter, facebook, blogging, etc., parece que está provocando que tengamos déficit de atención, que seamos incapaces de concentrarnos en un tema por tiempo suficiente hasta su resolución, o al menos hasta que tengamos un grado de análisis suficiente para continuarlo posteriormente. Las consecuencias, pueden ser pues:&lt;/span&gt;&lt;/div&gt;&lt;ul type="disc"&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;baja productividad en nuestros proyectos y tareas&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;baja calidad en los resultados&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;¿Cuáles son las causas?&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul type="disc"&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;Psicológicamente, mostramos cierta resistencia a fijar objetivos, o al menos, nos cuesta afrontar la evaluación de su necesidad y la decisión de llevarlos a cabo.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;Cuando lo hacemos, no ponemos los medios&amp;nbsp;adecuados hasta su resolución. Como leí hace tiempo en una cita relativa a los malos managers: "el mal manager es el que mantiene los recursos alejados de los objetivos".&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;No somos coherentes a la hora de decidir "qué es importante" y "qué es urgente".&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;Usar el placer como brújula, dando satisfacción a nuestros deseos inmediatos, en lugar de realizar las tareas que por otra parte, ¡ya teníamos planificadas y priorizadas!&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;¿Cuáles son los resultados?&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul type="disc"&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;"Mañana me pongo". Vamos, fijo que me pongo. Pero segurísimo.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;Uf, como evitar entrar a comentar fotos de gatitos en Facebook, cuando el informe mensual de resultados de xxxxx lo puedo hacer mañana.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;Autosabotaje. Somos nuestros peores enemigos. Todos los años vuelta a los mismos objetivos de mejorar el inglés, ir al gimnasio, bla, bla, bla. Y antes de volvernos a poner los mismos&amp;nbsp;objetivos, no nos paramos a analizar las causas de que no se hayan llevado a cabo.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;etc, etc y etc otra vez.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;¿Qué acciones podemos tomar para evitarla?&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;Olvida los detalles&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;. Lo imperfecto es bueno. Utiliza la regla de Pareto: aplica el 20% de esfuerzo, para lograr el 80% del resultado. Normalmente será suficiente. En el caso del desarrollo de software, asegúrate que no estás creando requisitos artificialmente, o que el nivel de calidad es al menos el estrictamente acordado. A partir de ahí, hay que hacer un balance entre lo necesario y lo deseado.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;Acepta lo planificado&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;. No lo consideres una obligación. Acostúmbrate a disfrutar con lo que haces, ya que si no es así, el subconsciente se encargará de encontrar otra tarea que sí te haga disfrutar, y actuará de potente imán. Lo peor de todo es que llegamos al autoengaño, aceptando tareas de disfrute como planificadas, y eso no debemos permitirlo.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;Asegúrate que entre tus actividades, hay actividades que te gusten&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;. Pueden estar dentro o fuera del trabajo, pero asegúrate que están ahí. Planifica el ocio, de forma que se alterne en tu vida con el trabajo (el trabajo planificado y necesario).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt; line-height: 115%;"&gt;Analiza las tareas que emprendas&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt; line-height: 115%;"&gt;. Cada vez que emprendas una nueva acción plantéate: ¿estaba planificada? ¿la estás haciendo en el tiempo en que tenías ya algo planificado?&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-3635060694949911410?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/3635060694949911410/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/procrastinacion-ii.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/3635060694949911410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/3635060694949911410'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/procrastinacion-ii.html' title='Procrastinación (II)'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-TWQ8E7rr-ZQ/TtgChF2zePI/AAAAAAAAAHA/Au8gQl1VRb4/s72-c/procrastinacion.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-5388938130250682677</id><published>2011-09-12T23:58:00.000-07:00</published><updated>2011-09-12T23:58:24.961-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='formación'/><title type='text'>Libro sobre TDD gratis y en castellano</title><content type='html'>Hoy tenemos un&amp;nbsp;libro gratis y en castellano sobre el desarrollo según TDD en este &lt;a href="http://www.dirigidoportests.com/el-libro"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;En el link, además del propio libro (descargable en varios formatos), ofrece diversos enlaces que ofrecen blogs, información adicional, formación, etc., todo ello relativo a TDD.&lt;br /&gt;&lt;br /&gt;Para los perdidos, despistados, o los que no hayáis visto TDD en alguna de mis anteriores entradas, vamos a incluir un breve resumen.&lt;br /&gt;&lt;br /&gt;TDD son las siglas de Test Driven Development. Hoy en día, tenemos varias metodologías XDD, sustituyendo "X" por alguna de las facetas del desarrollo. En este caso, el desarrollo está dirigido o guiado a partir de los Tests. El objetivo es definir en primera instancia un conjunto de pruebas que recojan al máximo una verificación de los requisitos. De esa forma, el código se va desarrollando posteriormente contra unos tests ya establecidos. Los tests se suelen automatizar, ofreciendo un paradigma de desarrollo bastante estable. Por desgracia, y esto enseguida gustará a sus detractores, no es en absoluto perfecto,&amp;nbsp;y tiene problemas relativos a la variabilidad de los tests, ya que éstos han de cambiar de forma síncrona con los cambios en los requisitos.&lt;br /&gt;&lt;br /&gt;Hoy en día, un&amp;nbsp; gran número de metodologías ágiles incluyen esta técnica de desarrollo, aunque hay que decir que como técnica, es totalmente ajena al desarrollo ágil, y puede ser implementada en cualquier otra metodología.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-5388938130250682677?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/5388938130250682677/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/libro-sobre-tdd-gratis-y-en-castellano.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5388938130250682677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5388938130250682677'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/libro-sobre-tdd-gratis-y-en-castellano.html' title='Libro sobre TDD gratis y en castellano'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-9128325817479470493</id><published>2011-09-12T05:49:00.000-07:00</published><updated>2011-12-02T01:39:35.117-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='métricas'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>Métricas: LOC</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Fm3PBfTRIwc/Tticxju_bMI/AAAAAAAAAHg/xbCDOS8T9mU/s1600/lines_of_code.jpg" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" dda="true" height="400" src="http://4.bp.blogspot.com/-Fm3PBfTRIwc/Tticxju_bMI/AAAAAAAAAHg/xbCDOS8T9mU/s400/lines_of_code.jpg" width="282" /&gt;&lt;/a&gt;&lt;/div&gt;LOC es un acrónimo de "Lines of Code". Se utiliza como métrica en diversas situaciones, en las que se mide el número de líneas de código. Usualmente, se utiliza la variante "KLOC", que son miles de líneas de código.&lt;br /&gt;&lt;br /&gt;¿Que qué le pasa a esta métrica? Pues que está maldita. Sí, sí, maldita. Ni el exhorcista más aguerrido podría devolverle el honor a esta defenestrada medida. Pero en fin, como me gustan las causas perdidas...ahí vamos.&lt;br /&gt;&lt;br /&gt;¿Porqué está maldita? Pues porque basta presentarla para que la gente ponga caras raras, empiece a generar excusas, exponga argumentos en su contra, etc.&amp;nbsp;Sin embargo, esta métrica tiene cosas a su favor, al menos en apariencia:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Es fácil de medir. Pues sí, eso es cierto. Prácticamente cualquier entorno lo ofrece, y todos los plugins de métricas lo ofrecen.&lt;/li&gt;&lt;li&gt;Es fácil de combinar: muchas otras métricas pueden venir referidas a ella (Ejemplo: "nº de defectos&amp;nbsp;por cada mil líneas de código").&lt;/li&gt;&lt;li&gt;Ofrece una medida aproximada del tamaño de un software, y de su complejidad. Pues vaya, esto también es cierto. Un programa de 1000 líneas no sé si será el doble de grande que otro de 500, pero más grande, sí.&lt;/li&gt;&lt;/ul&gt;Sin embargo, en este mundillo se encuentran muchos argumentos en su contra:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;No es una medida fiable de productividad personal&lt;/strong&gt;. La respuesta obvia sería: "pues claro". En este mundillo de las métricas, uno aprende que lo primero que hace un programador es ver en qué medida la métrica puede valorar su trabajo. Es el caso&amp;nbsp;típico de: "pensar mal".&amp;nbsp;El problema es que las métricas están siempre&amp;nbsp;para &lt;strong&gt;conocer el proyecto&lt;/strong&gt;, y no siempre&amp;nbsp;para ver el &lt;strong&gt;rendimiento de las personas&lt;/strong&gt;. Sin embargo, sí puede obtenerse (y se debe, de hecho) métricas del estilo: LOC totales por persona, LOC modificadas por persona en un período, LOC nuevas por persona en un período, etc. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Penaliza a lenguajes de alto nivel&lt;/strong&gt;. Toma, pues claro. Los lenguajes de alto nivel están para eso. Para que con menos líneas, se hagan más cosas. Lo mismo que los frameworks y las librerías: para ahorrar líneas de código. Pero de nuevo volvemos a lo mismo: esta métrica permite comparar sólo en el caso de que se pueda comparar. No podemos comparar solamente lenguajes similares, sino proyectos en que la arquitectura sea equivalente.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;La complejidad de un software no depende de su tamaño&lt;/strong&gt;. Hay programas muy pequeños, endiabladamente retorcidos, mientras que hay otros muy grandes, pero muy simples en concepción y ejecución. De nuevo, la respuesta es "pues claro". El problema es que una métrica no es más que un número. Para obtener conclusiones, normalmente hay que usar varias métricas e indicadores de los proyectos.&lt;/li&gt;&lt;/ul&gt;La conclusión vendría a ser que esta medida es para lo que es, para apoyo, para dar una visión orientativa que por sí sola nunca puede ser concluyente (lo que no deja de ser cierto en general para prácticamente todas las métricas). &lt;br /&gt;&lt;br /&gt;Desde luego, si no podemos medir algo, no podremos decir que esté bajo control.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-9128325817479470493?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/9128325817479470493/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/metricas-loc.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/9128325817479470493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/9128325817479470493'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/metricas-loc.html' title='Métricas: LOC'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Fm3PBfTRIwc/Tticxju_bMI/AAAAAAAAAHg/xbCDOS8T9mU/s72-c/lines_of_code.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-8205725199504332667</id><published>2011-09-12T05:43:00.000-07:00</published><updated>2011-09-12T05:43:38.792-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><category scheme='http://www.blogger.com/atom/ns#' term='usabilidad'/><title type='text'>El valor de lo predeterminado</title><content type='html'>El encontrar nombrado&amp;nbsp;a uno de mis referentes (&lt;strong&gt;Alan Cooper&lt;/strong&gt;*), en un &lt;a href="http://msdn.microsoft.com/es-es/magazine/hh335072.aspx"&gt;artículo&lt;/a&gt; de la revista MSDN, me ha hecho leerlo y recordar sus libros.&lt;br /&gt;&lt;br /&gt;Y es que como ya Alan Cooper hablaba en su libro "About Face", el tema de los &lt;strong&gt;valores por defecto&lt;/strong&gt; (los valores predeterminados), son una de las principales claves de la usabilidad, y la causa del éxito o fracaso de una gran mayoría de proyectos software. &lt;br /&gt;&lt;br /&gt;Realmente, es un factor más importante que los propios requisitos y funcionalidades implementados, aunque esto se le resista hoy día a una gran masa de desarrolladores. Fijémonos por ejemplo en los teléfonos móviles. Se sacan constantemente modelos, pero el comentario que se oye es del estilo: "hasta la versión del firmware xxxxx, la cámara sacaba unas fotos penosas", o también: "la pantalla no respondía bien en las versiones anteriores a la xxxx". &lt;br /&gt;&lt;br /&gt;Hemos llegado a aceptar que los productos que compramos recién salidos al mercado, simplemente "no están ajustados". Salen con la funcionalidad (requisitos) que aparece en los catálogos, pero no satisfacen realmente a los usuarios, es decir, falla la usabilidad. Y ese fallo, está originado en los valores por defecto (firmware, parametrización, etc).&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-XYDmQLlByqI/Tm24T0QVC2I/AAAAAAAAAB8/Ti-Fmthu3H8/s1600/Clippo.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" nba="true" src="http://1.bp.blogspot.com/-XYDmQLlByqI/Tm24T0QVC2I/AAAAAAAAAB8/Ti-Fmthu3H8/s200/Clippo.jpg" width="108" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Clippo, que tantos quebraderos de cabeza nos dio&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Algunos veteranos todavía recordamos la presencia de "Clippo", el famoso asistente que presentaron por defecto en versiones antiguas de Office, que acabó defenestrado ante su insistencia en frases del estilo: "Parece que estás escribiendo una carta". No es tan importante la ayuda ofrecida, como el crear una buena base de configuraciones por defecto, y saber asociar a cada perfil de usuario, su configuración más acertada. &lt;br /&gt;&lt;br /&gt;De hecho, es desproporcionadamente más importante el que las funcionalidades estén &lt;strong&gt;accesibles&lt;/strong&gt; cuando se necesitan, y sea &lt;strong&gt;cómodo&lt;/strong&gt; encontrarlas, que el hecho de que haya cientos de funcionalidades, pero estén tan ocultas y rebuscadas, que sólo ciertos perfiles de geeks, sepan dónde están. Una funcionalidad que introdujo Office hace ya varias versiones, es adaptar automáticamente su interfaz, para adaptarse al tipo de tarea que se está realizando, ofreciendo los botones y menús más usados, y llegando a esconder los menús y botones que con el tiempo se dejan de usar. Muchos ni nos hemos dado cuenta, y simplemente dejamos que los botones más usados o más apropiados al contexto, aparezcan ahí.&lt;br /&gt;&lt;br /&gt;Tampoco se trata de que hagamos las aplicaciones complicadas, sino de que pensemos en quién las va a usar, pensemos en 2 o 3 tipos habituales de usuarios, y las configuremos para ellos. Después de todo, recordad que &lt;strong&gt;el principal usuario de nuestros programas, no solemos ser nosotros&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(*) Alan Cooper (&lt;a href="http://www.cooper.com/"&gt;http://www.cooper.com/&lt;/a&gt;)&amp;nbsp;se hizo famoso por escribir varios&amp;nbsp;libros sobre usabilidad, y ser el creador de una de las interfaces más usadas hoy día en los entornos de desarrollo (sí, del estilo de Visual Basic). Estigmatizado por ser "el padre de Visual Basic", hoy día es consultor y propietario de su propia empresa dedicada a las interfaces, usabilidad, etc.&amp;nbsp;He tenido la suerte de disfrutar devorando sus libros:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;About Face: The Essentials of User Interface Design&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;The Inmates Are Running the Asylum: Why High-Tech Products Drive Us Crazy and How to Restore the Sanity&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-8205725199504332667?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/8205725199504332667/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/el-valor-de-lo-predeterminado.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8205725199504332667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8205725199504332667'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/el-valor-de-lo-predeterminado.html' title='El valor de lo predeterminado'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-XYDmQLlByqI/Tm24T0QVC2I/AAAAAAAAAB8/Ti-Fmthu3H8/s72-c/Clippo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-6680843560919992772</id><published>2011-09-10T07:38:00.000-07:00</published><updated>2011-09-10T07:38:12.776-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='Ingenieria'/><title type='text'>¿Más siglas? MDE, MDD, MDA</title><content type='html'>Hoy tenemos más siglas de las que hablar:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;MDA:&amp;nbsp;Model-Driven Architecture.&lt;/li&gt;&lt;li&gt;MDD:&amp;nbsp;Model-Driven Development.&lt;/li&gt;&lt;li&gt;MDE:&amp;nbsp;Model-Driven Engineering.&lt;/li&gt;&lt;/ul&gt;En general, los tres están relacionados con el paradigma de desarrollo que utiliza o propone el uso de modelos como el principal artefacto del proceso de desarrollo. O al menos, como el artefacto que dirige y sirve de arranque al desarrollo.&lt;br /&gt;&lt;br /&gt;Lo que se pretende, es que el código se genere de forma semi-automática, a partir de dichos modelos. Según estas metodologías, partiríamos de un modelo diseñado con un programa (por ejemplo, con Software Architect), y él solito nos crearía el código asociado. El lenguaje para el modelado, bien podría ser UML, aunque existen otras alternativas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-6680843560919992772?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/6680843560919992772/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/mas-siglas-mde-mdd-mda.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6680843560919992772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6680843560919992772'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/mas-siglas-mde-mdd-mda.html' title='¿Más siglas? MDE, MDD, MDA'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-7895021881478501496</id><published>2011-09-09T05:19:00.000-07:00</published><updated>2011-09-09T05:19:05.875-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>El proceso de preventa</title><content type='html'>Pocas veces (más bien ninguna), cuando hablamos de calidad en el mundo del desarrollo software, nos acordamos de la preventa. Parece que todas las metodologías arrancan cuando está firmado el contrato, y terminan tras el despliegue (con suerte, tras el mantenimiento).&lt;br /&gt;&lt;br /&gt;El problema es que se debe tener en cuenta también la preventa. Es decir, el proyecto realmente debemos gestionarlo desde&amp;nbsp;que decidimos presentarnos a una propuesta, o cuando decidimos ir a llamar al cliente, etc.&lt;br /&gt;&lt;br /&gt;Muchos os preguntaréis ¿pero esto de la venta también tiene que tener metodología? Pues claro. Y por varios motivos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Como toda actividad de gestión, debe haber un procedimiento habitual de trabajo, donde se definan responsabilidades, roles, actividades y entregables.&lt;/li&gt;&lt;li&gt;Debe hacerse un seguimiento. Normalmente la alta dirección querrá saber periódicamente datos de: posibles acciones de preventa, acciones en marcha, acciones realizadas, nivel de éxito de dichas acciones, etc. Esto nos lleva a las inevitables métricas, informes, etc.&lt;/li&gt;&lt;li&gt;Y lo que es más importante: debes estimar. Y no es cualquier estimación, es la primera, y precisamente la que se hace cuando tienes menos información de lo que hay que hacer. Por eso requiere de unas herramientas y técnicas distintas de las usadas para estimar cuando estas a mitad del proyecto.&lt;/li&gt;&lt;/ul&gt;Al final, no deja de ser como un pequeño proyecto:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tiene sus fases: por ejemplo podría hablarse de "Oportunidad", "Análisis", "Diseño y ejecución de la oferta", "Revisión y presentación de la oferta"&lt;/li&gt;&lt;li&gt;Tiene asociado una gestión: durante las fases anteriores, deberá haber una planificación, una estimación de esfuerzo (¿si debemos presentar una oferta antes del día x...llegamos?), etc. También habrá que registrar las horas invertidas, para controlar el tiempo dedicado.&lt;/li&gt;&lt;li&gt;Tiene sus entregables: el material que usemos para hacer la venta, presentación, etc. Si por ejemplo es una propuesta para un concurso público, ahí entraría toda la documentación a presentar. Otro entregable o documento a controlar podría ser el contrato, la estimación,....&lt;/li&gt;&lt;li&gt;Tiene sus roles y responsabilidades: alguien se responsabiliza de preparar el material, otra persona lo supervisa, otra (o la misma) presenta la oferta...etc&lt;/li&gt;&lt;/ul&gt;Lo que no hay que perder de vista, es que la labor comercial, como cualquier otra...tiene un coste. Y como todo coste, sería una irresponsabilidad no darle un seguimiento y tener un mínimo control.&lt;br /&gt;&lt;br /&gt;Además, cuando hablamos de metodologías, parece que cuando el equipo de desarrollo comienza (bien con el análisis, diseño, o el propio código), es el PRINCIPIO DEL MUNDO. Es como el big-bang, el principio de la creación. No hay nada anterior, y si lo hay..."no queremos saberlo". Y no es así. No sólo hay que controlar esas acciones, sino que están relacionadas con el propio desarrollo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;¿Se conoce la fecha de entrega? Pues claro: anda, léete el contrato.&lt;/li&gt;&lt;li&gt;¿Y los requisitos me los invento? Pues tampoco: anda y léete la propuesta. A veces ahí están detallados los requisitos a un nivel impresionante.&lt;/li&gt;&lt;li&gt;¿Y porqué esto está estimado así? Pues revísate la plantilla de estimación.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-7895021881478501496?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/7895021881478501496/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/el-proceso-de-preventa.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7895021881478501496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7895021881478501496'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/el-proceso-de-preventa.html' title='El proceso de preventa'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-4086835843243075310</id><published>2011-09-08T21:57:00.000-07:00</published><updated>2011-09-08T21:57:49.102-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Scrum y la motivación</title><content type='html'>Parece ser que un equipo está motivado principalmente por dos factores: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Visibilidad (logros tempranos)&lt;/li&gt;&lt;li&gt;Reconocimiento&lt;/li&gt;&lt;/ul&gt;Pero existe un peligro a tan fantástica conclusión, y es que al contrario, podría usarse Scrum para motivar al personal, simplemente porque "parece ser que los equipos que usan Scrum están más motivados". Es decir, olvidaríamos los requisitos, premisas y dogmas de Scrum, para centrarnos en "tener contentos a los programadores".&lt;br /&gt;&lt;br /&gt;Recientemente me he encontrado con premisas de este tipo: el seleccionar Scrum, como herramienta de motivación para los equipos de desarrollo. Después de todo, no parece una mala idea el motivar a los equipos mediante un cambio de forma de trabajo. Al final, el problema está siempre en necesidades contrapuestas. Por desgracia, al igual que tenemos un triángulo del software (calidad, tiempo, recursos), también tenemos un triángulo&amp;nbsp;de actores que se relacionan con el&amp;nbsp;desarrollo del software:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;El cliente&lt;/strong&gt;: tiene unas expectativas, y unos requisitos funcionales. No ve valor en el código, sino en necesidades de negocio resueltas.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;La dirección&lt;/strong&gt; (los jefes del equipo de desarrollo): la empresa no vive del aire, y para poder seguir desarrollando, hay que poder seguir emitiendo facturas. Tiene unos requisitos económicos y de negocio. Estas necesidades de la dirección está íntimamente relacionada con las labores "ingratas" o rechazadas por parte del equipo desarrollo (control, monitorización, documentación).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;El equipo de desarrollo&lt;/strong&gt;: En este caso, se trataría más bien de unos requisitos de satisfacción laboral, de bienestar social, reconocimiento, y algo que parecemos olvidar siempre: hay que cobrar todos los meses. No sólo de metodologías ágiles y buen rollito vive la gente.&lt;/li&gt;&lt;/ul&gt;Hay que tener en cuenta estas interrelaciones entre los tres, ya que podemos encontrarnos con que la implantación de Scrum u otras metodologías ágiles, no consiga la motivación deseada, o lo haga de forma temporal.&lt;br /&gt;&lt;br /&gt;Es por eso, que en vez de buscar la mera implantación de una metodología, lo que hay que hacer es detectar las necesidades de los actores alrededor del desarrollo software, y lograr un equilibrio mediante:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Políticas de reconocimiento de logros&lt;/li&gt;&lt;li&gt;Metodologías que mediante técnicas ágiles obtengan logros tempranos, pero que no perjudiquen las necesidades de información de los clientes y gestores.&lt;/li&gt;&lt;li&gt;Sistemas de mejora continua, que satisfagan tanto a la empresa como a los desarrolladores.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-4086835843243075310?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/4086835843243075310/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/scrum-y-la-motivacion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4086835843243075310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4086835843243075310'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/scrum-y-la-motivacion.html' title='Scrum y la motivación'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-500993166804366756</id><published>2011-09-07T23:46:00.000-07:00</published><updated>2011-09-07T23:46:34.072-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Requisitos'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>Tipos de requisitos - no sólo de usuario</title><content type='html'>A la hora de tomar requisitos, aunque nos enfrascamos siempre en lo que más nos gusta (recordad mi entrada sobre procrastinación), que suelen ser los requisitos que el usuario nos comunicada, es labor y responsabilidad de los buenos analistas el saber "rascar" la fachada y obtener una visión global de las necesidades a todos los niveles. &lt;br /&gt;&lt;br /&gt;Digo esto porque hay mucho más allá de los requisitos que solemos anotar al hacer las entrevistas con los usuarios. A continuación, una lista de tipos de requisitos, obtenida del libro que estoy leyendo (*):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;End-user requirements&lt;/li&gt;&lt;li&gt;Software requirements, or functional requirements&lt;/li&gt;&lt;li&gt;Operational requirements&lt;/li&gt;&lt;li&gt;Platform requirements&lt;/li&gt;&lt;li&gt;Corporate requirements&lt;/li&gt;&lt;li&gt;Compliance requirements&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Aunque estemos tentados de quedarnos con los dos primeros, que son los más directos de obtener, es esa labor policíaca de "rascar" y obtener ese paquete de requisitos, restricciones, etc. lo que diferencia de un analista de verdad, de un señor que se limita a rellenar la ficha.&lt;br /&gt;&lt;br /&gt;Por poner algunos ejemplos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Corporate: los requisitos corporativos pueden ser las normas de la empresa, la forma de trabajar (formalmente establecidos, o no). A veces una empresa es una filial de otra mayor, pues cuidado, que esa otra empresa mayor, puede tener requisitos corporativos que debamos tener en cuenta, y que quizá nos cueste descubrir a primera vista.&lt;/li&gt;&lt;li&gt;Operational: dentro de los operativos, podemos encontrar restricciones legales del negocio (legales a nivel local, regional, estatal, etc.) Por ejemplo, un software para una constructora debería tener en cuenta las restricciones legales, como pueden ser legislaciones locales de tiempo de conservación de documentos, de normas a cumplir&amp;nbsp;etc.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: x-small;"&gt;(*) El libro es: "&lt;span id="b24-booktitle-40763"&gt;Optimize Quality for Business Outcomes: A Practical Approach to Software Testing" (Andreas Golze, Mark Sarbiewski, Alain Zahn; (c)2008,&amp;nbsp;John Willey and Sons), &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-500993166804366756?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/500993166804366756/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/tipos-de-requisitos-no-solo-de-usuario.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/500993166804366756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/500993166804366756'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/tipos-de-requisitos-no-solo-de-usuario.html' title='Tipos de requisitos - no sólo de usuario'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-6311943285381051622</id><published>2011-09-06T06:49:00.000-07:00</published><updated>2011-09-06T06:49:49.513-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ágil'/><category scheme='http://www.blogger.com/atom/ns#' term='Acelerador'/><title type='text'>Acelere sus proyectos: resumen de técnicas ágiles</title><content type='html'>Voy a recopilar una lista de técnicas ágiles, o que de alguna manera pueden influir en acelerar la entrega de un proyecto en cuanto a calidad y funcionalidad:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Pair Programming&lt;/strong&gt;. Programación por parejas.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Desarrollo Iterativo e Incremental&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Entregas frecuentes&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;KISS&lt;/strong&gt; (=Keep It Simple, Stupid); simplicidad del código&lt;/li&gt;&lt;li&gt;&lt;strong&gt;YAGNI&lt;/strong&gt; (=You Ain't Gonna Need It). Simplicidad general (funcional, arquitectónica, etc.)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Refactorización del código&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Feedback rápido&lt;/strong&gt; (realimentación)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Automatización de pruebas&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Integración Continua&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TDD&lt;/strong&gt; (=Test Driven Development), empezar el desarrollo escribiendo los tests&lt;/li&gt;&lt;li&gt;&lt;strong&gt;FDD&lt;/strong&gt; (=Feature Driven Development). Como el anterior, pero el desarrollo está guiado por los requisitos.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Prototipado&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Peer Review&lt;/strong&gt;. Revisión entre pares. Alguien de igual categoría (aunque preferiblemente de mayor experiencia), revisa el entregable.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;DRY&lt;/strong&gt; (=Don't Repeat Yourself)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;HOLLYWOOD&lt;/strong&gt;. Principio que favorece&amp;nbsp; la alta cohesión&amp;nbsp; y e bajo acoplamiento (facilitando el debug, pruebas y mantenimiento posterior del código)&lt;/li&gt;&lt;/ul&gt;Algunas de ellas han sido absorbidas como suyas por ciertas metodologías ágiles.&lt;br /&gt;Para otro día, con tiempo y ganas, daré un repaso detallado de ellas, sus beneficios, y por desgracia, también sus riesgos/problemas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-6311943285381051622?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/6311943285381051622/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/acelere-sus-proyectos-resumen-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6311943285381051622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/6311943285381051622'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/acelere-sus-proyectos-resumen-de.html' title='Acelere sus proyectos: resumen de técnicas ágiles'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-7167003446221370935</id><published>2011-09-06T03:16:00.000-07:00</published><updated>2011-09-06T03:16:49.249-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='ágil'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Desarrollar sin programar (II)</title><content type='html'>Mira por donde, Microsoft ha sacado una herramienta llamada &lt;a href="http://msdn.microsoft.com/es-es/library/ff851953.aspx"&gt;Visual Studio LightSwitch&lt;/a&gt;, que encaja con el tipo de aplicaciones que permiten crear aplicaciones "sin programar".&lt;br /&gt;&lt;br /&gt;Básicamente, permite hacer una completa aplicación en 3 capas en unos sencillos pasos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Conectar a una base de datos&lt;/li&gt;&lt;li&gt;Definir las entidades de datos&lt;/li&gt;&lt;li&gt;Crear pantallas para las entidades (es posible crearlas automáticamente a partir de las entidades)&lt;/li&gt;&lt;li&gt;Faltaría ya solamente&amp;nbsp;añadir código a&amp;nbsp;la capa de negocio, aunque la validación y reglas básicas, pueden configurarse en el propio editor.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-7167003446221370935?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/7167003446221370935/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/desarrollar-sin-programar-ii.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7167003446221370935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7167003446221370935'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/desarrollar-sin-programar-ii.html' title='Desarrollar sin programar (II)'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-4773299816298797553</id><published>2011-09-05T23:59:00.001-07:00</published><updated>2011-09-05T23:59:57.727-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Visión global de las redes sociales</title><content type='html'>En la web &lt;a href="http://www.elandroidlibre.com/"&gt;http://www.elandroidlibre.com/&lt;/a&gt;, aparece una &lt;a href="http://www.elandroidelibre.com/wp-content/uploads/2011/09/redes-sociales-explicadas-con-una-frase.jpg"&gt;imagen&lt;/a&gt; que explica con un símil bastante gráfico, cómo son, y en qué se diferencian las principales redes sociales:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-pbJL8m6yFlU/TmR6W-tENsI/AAAAAAAAABU/qqV6TcBTJWU/s1600/redes-sociales-explicadas-con-una-frase.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="http://2.bp.blogspot.com/-pbJL8m6yFlU/TmR6W-tENsI/AAAAAAAAABU/qqV6TcBTJWU/s320/redes-sociales-explicadas-con-una-frase.jpg" width="320" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;¿No&amp;nbsp;anda muy desencaminada de la realidad?.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-4773299816298797553?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/4773299816298797553/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/vision-global-de-las-redes-sociales.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4773299816298797553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4773299816298797553'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/vision-global-de-las-redes-sociales.html' title='Visión global de las redes sociales'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-pbJL8m6yFlU/TmR6W-tENsI/AAAAAAAAABU/qqV6TcBTJWU/s72-c/redes-sociales-explicadas-con-una-frase.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-8064838200866248629</id><published>2011-09-05T23:59:00.000-07:00</published><updated>2011-09-05T23:59:16.318-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gestión'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><category scheme='http://www.blogger.com/atom/ns#' term='formación'/><title type='text'>¿Por qué fracasa la formación en las empresas?</title><content type='html'>En primer lugar, me gustaría aclarar que este post no está relacionado con mi empresa actual, ni con ninguna en particular. La información que ofrezco está basada en opiniones de diversos profesionales en diversas empresas.&lt;br /&gt;&lt;br /&gt;El tema, bien mirado, está relacionado con los dos principales del blog: calidad y desarrollo de software.&lt;br /&gt;&lt;br /&gt;Vamos a ver una lista de los problemas más habituales:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Una queja de los empleados, suele ser que la formación ofrecida, está pensada desde el punto de vista de las necesidades de la organización.&lt;/li&gt;&lt;li&gt;La formación ofrecida está obsoleta&lt;/li&gt;&lt;li&gt;La formación ofrecida no cubre las necesidades actuales de los proyectos&lt;/li&gt;&lt;li&gt;Las empresas cuentan con un presupuesto, una subvención, ...(en general, un dinero a gastar en formación), y se enfoca más en el qué (que se gaste ese dinero, se comunique y publicite, etc), que en el cómo (alineamiento de la formación, con las necesidades organizativas, de los proyectos, y de los empleados).&lt;/li&gt;&lt;li&gt;Las empresas, en general, no se preocupan de que el dinero en formación tenga resultados.&amp;nbsp;(satisfacción de los empleados, grado de cobertura de necesidades detectadas, etc). Al no plantear objetivos medibles y no evaluar los resultados, no hay una visión global del rendimiento de la inversión en formación.&lt;/li&gt;&lt;li&gt;Los cursos no se asignan a los empleados que más partido pueden sacar de la formación, sino que se usan criterios subjetivos (amiguismos, etc.)&lt;/li&gt;&lt;li&gt;La empresa confunde el tener formación con el estar preparado para ofrecer soluciones. A veces se pretende sustituir la experiencia por formación, con escasos resultados.&lt;/li&gt;&lt;li&gt;En ocasiones, la alta dirección no le da la importancia que debería.&lt;/li&gt;&lt;li&gt;Las formaciones se contratan por precio y disponibilidad, lo que hace que a veces fracasen por ineficacia del formador, materiales, etc.&lt;/li&gt;&lt;li&gt;No siempre la formación está alineada con las expectativas y carrera profesional de los empleados.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-8064838200866248629?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/8064838200866248629/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/por-que-fracasa-la-formacion-en-las.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8064838200866248629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8064838200866248629'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/por-que-fracasa-la-formacion-en-las.html' title='¿Por qué fracasa la formación en las empresas?'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-8952524173966549921</id><published>2011-09-05T05:52:00.000-07:00</published><updated>2011-09-09T05:19:32.146-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>11 trucos para aparentar que siempre está ocupado</title><content type='html'>He visto&amp;nbsp;en un &lt;a href="http://elartedelaestrategia.blogspot.com/2011/09/11-trucos-para-aparentar-que-siempre.html"&gt;blog&lt;/a&gt; un tema que me ha parecido muy interesante, y está sacado en última instancia de Scott Adams, creador de Dilbert y todo lo que lo acompaña (tiras cómicas, libros, películas, etc):&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Quéjese constantemente de estar "abrumado"&lt;/strong&gt;. Utilice frases como "estoy hasta el cuello" o "saltando de un fuego al otro" para que su trabajo suene como sexy y peligroso. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Lleve un pedazo de papel a todas partes&lt;/strong&gt;. Para que sus gestos y lenguaje corporal cobren urgencia, imagine que es algo increiblemente importante, como una orden de ejecución firmada por el gerente. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Nunca limpie su espacio de trabajo&lt;/strong&gt;. Después de todo, si tuviera tiempo para malgastar, no viviría como un cerdo. De vez en cuando ordene u ojee papeles en su puesto. Simule leerlos con interés y preocupación.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Simule un&amp;nbsp; lenguaje corporal como si estuviera estresado&lt;/strong&gt;. Resople de vez en cuando. Rásquese la cabeza. Suelte alguna frase contundente del tipo “¿esto es imposible, no lo saco ni en un millón de años?". Así evitará que la gente le moleste.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Mandar e-mails parece trabajo&lt;/strong&gt;. Mande e-mails a sus amigos y familiares con frecuencia.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Si tiene ganas de hablar, en lugar de trabajar, hable con su jefe&lt;/strong&gt;. Eso cuenta como trabajo, sin importar de qué hablen. El tópico ideal para la conversación es el mal comportamiento laboral de sus compañeros de trabajo. Hay una variante de este último que es: "si su jefe va a tomar café, vaya y aproveche para tomar otro y hablar con él. Hay un punto extra si consigue&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Si utiliza gafas, deje unas viejas en su escritorio&lt;/strong&gt;, como si usted fuera a regresar en unos minutos. Después, váyase a casa. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Deje mensajes de voz a sus compañeros de trabajo&lt;/strong&gt; a la 1:00 am, aún cuando sólo se haya levantado para ir al baño. Si realmente quiere despertar admiración, déjele un mensaje a su jefe con sus comentarios sobre el anticuado sistema de archivos usado en la empresa, a las 11:30 pm del 31 de Diciembre. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Asegúrese de involucrarse en proyectos incuantificables&lt;/strong&gt;. Escoja proyectos de consultoría, asesoría y participación. Evite cualquier cosa que tenga una fecha límite fija y cercana.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Aprenda a dormir dando la espalda a la entrada de su espacio de trabajo&lt;/strong&gt;. Tendrá que practicar evitar que su cabeza caiga de lado, pero vale la pena. Si no lo logra, cómprese un collarín del color de su piel. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Despotrique de su trabajo tanto como pueda&lt;/strong&gt;. Esto se considera trabajo, aún cuando es divertido. Como en el punto 1, su lenguaje corporal debe acompañar a la expresión oral.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-8952524173966549921?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/8952524173966549921/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/11-trucos-para-aparentar-que-siempre.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8952524173966549921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8952524173966549921'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/11-trucos-para-aparentar-que-siempre.html' title='11 trucos para aparentar que siempre está ocupado'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-306032947821992595</id><published>2011-09-04T10:27:00.000-07:00</published><updated>2011-12-02T01:37:41.601-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Arquitectura'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><title type='text'>Desarrollar sin programar</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-q5En0crVtSE/TticWFeQ-nI/AAAAAAAAAHY/H6DvCn-B1Ks/s1600/programacion_medida.jpg" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" dda="true" height="320" src="http://2.bp.blogspot.com/-q5En0crVtSE/TticWFeQ-nI/AAAAAAAAAHY/H6DvCn-B1Ks/s320/programacion_medida.jpg" width="274" /&gt;&lt;/a&gt;&lt;/div&gt;Imaginaos un futuro en que se pudiese crear software sin programar ni una sola línea de código (ojo, no he dicho &lt;strong&gt;sin saber programar&lt;/strong&gt;, aunque tampoco quiero decir con ésto que sea obligatorio saber programar para crear este tipo de software).&lt;br /&gt;&lt;br /&gt;Imaginaos un futuro en que con sólo conocer el proceso de negocio, la interacción con el usuario y otros sistemas/procesos/bases de datos, se pudiese crear complejas aplicaciones.&lt;br /&gt;&lt;br /&gt;Imaginad que en ese futuro,&amp;nbsp;en el desarrollo, se abstrajesen de forma totalmente transparente al usuario desarrollador:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;lenguaje de programación&lt;/li&gt;&lt;li&gt;sistema operativo destino&lt;/li&gt;&lt;li&gt;arquitectura (MVC, N-tier, etc)&lt;/li&gt;&lt;li&gt;acceso a datos (ODBC, dataset, entidades POCO, etc).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Imaginad en ese futuro, que las aplicaciones&amp;nbsp;fuesen fáciles de mantener, y estuviesen actualizadas a las últimas tecnologías del mercado.&lt;br /&gt;&lt;br /&gt;Pues este tipo de software existe ya hoy. De hecho, existe ya desde hace muuuchos años. Además, uno de los entornos de desarrollo de los que me gustaría hablar se creó en su versión 1.0 en el año 1989! Me ha sorprendido, porque yo lo había oido hablar desde hace algo menos, los 14 o algo más de años que llevo en esta profesión. De hecho, me ha tocado trabajar con alguno de estos entornos (y ni siquiera es de los conocidos, pues es una plataforma para soluciones bancarias).&lt;br /&gt;&lt;br /&gt;Pues nada, a ver si saco un rato, y dedico un par de entradas en el blog&amp;nbsp;a este mercado de aplicaciones, y a la que más me suena y conocía desde unos añitos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-306032947821992595?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/306032947821992595/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/desarrollar-sin-programar.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/306032947821992595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/306032947821992595'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/desarrollar-sin-programar.html' title='Desarrollar sin programar'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-q5En0crVtSE/TticWFeQ-nI/AAAAAAAAAHY/H6DvCn-B1Ks/s72-c/programacion_medida.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-8004951646593706230</id><published>2011-09-03T08:37:00.000-07:00</published><updated>2011-12-02T01:35:51.989-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CMMI'/><category scheme='http://www.blogger.com/atom/ns#' term='ágil'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Cuando hablamos de CMMI</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3ZmSdAROhgQ/Ttib7al1VrI/AAAAAAAAAHQ/7GvEMCUtBRU/s1600/logo-cert-cmmi.gif" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" dda="true" src="http://4.bp.blogspot.com/-3ZmSdAROhgQ/Ttib7al1VrI/AAAAAAAAAHQ/7GvEMCUtBRU/s1600/logo-cert-cmmi.gif" /&gt;&lt;/a&gt;&lt;/div&gt;Observo constantemente en blogs y comentarios frases como éstas:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"La metodología SCRUM es mucho más ágil que CMMI" &lt;/li&gt;&lt;li&gt;"CMMI es una metodología arcaica y excesivamente burocrática"&lt;/li&gt;&lt;li&gt;"No tengo claro qué metodología usar en mi proyecto: CMMI, SCRUM, xxx"&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;¿Nadie se da cuenta? El problema es que en todas las frases, se está hablando de CMMI como metodología, y no lo es. Por tanto, es absurdo compararla con cualquier otra (he usado por ejemplo SCRUM, pero podría haber puesto cualquiera).&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;CMMI es un modelo de referencia. Según wikipedia: "&lt;strong&gt;es un modelo para la mejora y evaluación de procesos para el desarrollo, mantenimiento y operación de sistemas de software&lt;/strong&gt;". Realmente, los que hayáis estudiado CMMI más o menos a fondo, veréis que en este modelo no se dice cómo se han de hacer las cosas, sino qué cosas deben hacerse.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Os preguntaréis...¿hacerse...para qué? Pues para tener una metodología (conjunto de procesos) que cubran todos los aspectos necesarios, que cubran todas las necesidades de la gestión y el desarrollo. Es por eso que es absurdo comparar a CMMI con cualquier metodología (ya que no lo es). Es como lo de las peras y las manzanas: no se pueden comparar. &lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Otra forma impropia de hablar de CMMI es cuando se usa para hablar de excesiva burocracia, métodos arcaicos, poco ágiles, o como cuando se vincula con metodologías en cascada (las famosas Waterfall Methods). Aquí hay varios problemas que provocan esto:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Excesiva burocracia: evidentemente, si algo no nos apetece hacerlo, pasará a segundo plano (ver mi reciente entrada sobre &lt;strong&gt;procrastinacion&lt;/strong&gt;), aunque eso no signifique es es innecesario. Por desgracia, eso también ocurre si bajo nuestro punto de vista no es necesario. Por ejemplo, yo desarrollo software. No me gusta facturar al cliente, no me gusta hacer seguimiento de cobros...pero sin ello, ya puedo ser el mejor programador del mundo: no puedo vivir del aire. Yo, mi familia, todos necesitamos el dinero que cobramos. Luego el control de horas trabajadas, el control de pagos/cobros, y muchas otras actividades, son necesarias &lt;strong&gt;para la empresa&lt;/strong&gt;. Cuando hablamos de burocracia, se nos olvida que no trabajamos para nosotros. Hay metodologías que por fin han involucrado&amp;nbsp;a los clientes&amp;nbsp; (enhorabuena por el descubrimiento), pero siguen ignorando a la empresa en la que trabajan. Por desgracia, y es un mal endémico en nuestro sector, todavía hay quien cree que cobra por sus horas trabajadas, cuando en la mayoría de los casos, se cobra por cumplir un contrato.&lt;/li&gt;&lt;li&gt;Métodos arcaicos: algo es arcaico o antiguo en comparación o referencia a otra cosa. Resulta divertido ver cómo los defensores de ciertas metodologías, las consideran muy modernas para unas cosas, y luego para defender que están arraigadas y no son algo inmaduro, acreditan estar basadas en métodos, prácticas, y otras referencias de 10, 20, 30 años o más. Por desgracia, en nuestro sector se consigue que algo sea bueno o atractivo, en base a destruir&amp;nbsp;la reputación de todo aquello que le pueda hacer competencia.&lt;/li&gt;&lt;li&gt;Agilidad: los métodos son tanto más ágiles, cuanto más rápidamente nos acercan a nuestros objetivos. Eso no significa que sean los más rápidos. Se nos olvida muchas veces, que para llegar antes, no es más importante correr mucho, sino tener claro hacia dónde debemos ir (y no desandar constantemente el camino). Esto me recuerda muchos proyectos en los que no se tienen claros los objetivos, ni qué hay que hacer, pero los jefes de proyecto insisten en "redoblar los esfuerzos". Por eso, las técnicas, prácticas y metodologías, serán sólo ágiles, cuando en las condiciones favorables, nos acerquen a nuestros objetivos de forma que se aumente el rendimiento.&lt;/li&gt;&lt;li&gt;Desarrollo en cascada. Esto casi lo dejo para otro post, tan grande es la confusión que observo respecto a este término, y su vinculación con CMMI y muchos otros conceptos.&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;CMMI es desde luego un método imperfecto a la hora de evaluar la madurez de las empresas y los procesos, pero tiene muchos puntos a su favor:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No hay muchos métodos de evaluación de la madurez&lt;/li&gt;&lt;li&gt;Es un método en constante evolución y mejora. Actualmente CMMI DEV está en su versión 1.3.&lt;/li&gt;&lt;li&gt;Se integra muy bien con prácticamente todas las metodologías de ciclo de vida.&lt;/li&gt;&lt;li&gt;Es un modelo extendido a nivel mundial, y está diseñado para comparar uniformemente a organizaciones de todo el mundo.&lt;/li&gt;&lt;li&gt;Para las empresas, es un modelo de evaluación ventajoso: proporciona prestigio, y el "sello" de calidad queda referido a la empresa, no a sus individuos. Los individuos se van o vienen, pero los beneficios se quedan en la empresa.&lt;/li&gt;&lt;/ul&gt;Bueno , hasta ahora hemos visto que usar CMMI en comparación con otras metodologías, no es adecuado, y que se desprestigia injustamente a este modelo (en la mayoría de los casos, por ignorancia o para crear prestigio por comparación), pero no pensemos que por ello, es perfecto, ni tiene defectos. Me guardo para un post el detallar los problemas y defectos de CMMI como modelo, y su mayor talón de aquiles: las pésimas implementaciones como metodología que se hacen a veces, cuando el único objetivo es "tener el sello de calidad".&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-8004951646593706230?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/8004951646593706230/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/cuando-hablamos-de-cmmi.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8004951646593706230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8004951646593706230'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/cuando-hablamos-de-cmmi.html' title='Cuando hablamos de CMMI'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-3ZmSdAROhgQ/Ttib7al1VrI/AAAAAAAAAHQ/7GvEMCUtBRU/s72-c/logo-cert-cmmi.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-2334733242268200290</id><published>2011-09-02T00:29:00.000-07:00</published><updated>2011-11-30T02:49:59.599-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='ágil'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>Procrastinación</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-pwspRZbRiqI/TtYHy-cMN7I/AAAAAAAAAEE/3EsuMWXuspo/s1600/procrastination.jpg" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" dda="true" height="320" src="http://4.bp.blogspot.com/-pwspRZbRiqI/TtYHy-cMN7I/AAAAAAAAAEE/3EsuMWXuspo/s320/procrastination.jpg" width="203" /&gt;&lt;/a&gt;&lt;/div&gt;Interesante palabrita, que últimamente se está oyendo mucho. Una definición que encuentro:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;strong&gt;"Procrastinar: &lt;/strong&gt;dejar para mañana lo que se puede hacer hoy."&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;Básicamente, es no afrontar una tarea que tenemos pendiente, y que vamos retrasando horas, días o incluso semanas. La cuestión es que esa tarea, normalmente:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No nos gusta&lt;/li&gt;&lt;li&gt;No nos vemos preparados para llevarla a cabo&lt;/li&gt;&lt;li&gt;Sentimos temor del resultado de esa tarea&lt;/li&gt;&lt;/ul&gt;Para eso no hacía falta una palabra tan rara, desde luego. Y viendo esta información, hasta parece que todos nos hemos visto alguna que otra vez en esta situación. Sin embargo, si vemos la &lt;a href="http://es.wikipedia.org/wiki/Procrastinaci%C3%B3n"&gt;definición&lt;/a&gt; en wikipedia:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"Se trata de un trastorno del comportamiento que tiene su raíz en la asociación de la acción a realizar con el cambio, el dolor o la incomodidad (&lt;a href="http://es.wikipedia.org/wiki/Estr%C3%A9s" title="Estrés"&gt;estrés&lt;/a&gt;). Éste puede ser psicológico (en la forma de &lt;a class="mw-redirect" href="http://es.wikipedia.org/wiki/Ansiedad" title="Ansiedad"&gt;ansiedad&lt;/a&gt; o &lt;a href="http://es.wikipedia.org/wiki/Frustraci%C3%B3n" title="Frustración"&gt;frustración&lt;/a&gt;), físico (como el que se experimenta durante actos que requieren trabajo fuerte o ejercicio vigoroso) o intelectual."&lt;/blockquote&gt;Ostras, aquí ya es algo serio. ¡Un trastorno del comportamiento! Va a ser que no es algo muy bueno (cosa que ya sospechábamos por otra parte). Lo que ya ha sido la guinda ha sido comprobar por mi parte que existe un portal &lt;a href="http://procrastinacion.org/"&gt;http://procrastinacion.org/&lt;/a&gt;, dedicado exclusivamente a este innoble arte.&lt;br /&gt;&lt;br /&gt;Un punto que no veo mencionado es que este postergamiento de las tareas, está relacionado con el mundo del desarrollo software y especialmente con la calidad. En muchas ocasiones, el personal técnico se ve tentado de no afrontar las tareas asignadas, y en su lugar realizar alguna tarea (asignada o no), pero que es más atractiva, o interesante. Cuántas veces, alguien en un equipo no ha completado un desarrollo a tiempo, pero sin embargo sí ha tenido tiempo de añadir alguna funcionalidad que no estaba planificada, o ha implementado alguna nueva&amp;nbsp;tecnología, etc, etc.&lt;br /&gt;&lt;br /&gt;Por desgracia, en el mundo del software (aunque ocurre también en general), esta "procrastinación" está asociada a la &lt;a href="http://es.wikipedia.org/wiki/Ley_de_parkinson"&gt;Ley de Parkinson&lt;/a&gt;. Básicamente, se trata de que la gente si para una tarea tiene 2 horas, si acaba en 1, se busca algo que hacer para llenar el tiempo que le sobra. Esto tiene una segunda revisión, y es que hay veces que ni siquiera han terminado la tarea en las 2 horas, y sin&amp;nbsp;embargo ese tiempo no se ha dedicado&amp;nbsp;íntegramente a la tarea. Más en detalle, la definición de ley de Parkinson en wikipedia extiende la ley de Parkinson a estos puntos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;"El trabajo se expande hasta llenar el tiempo de que se dispone para su realización".&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;"Los gastos aumentan hasta cubrir todos los ingresos".&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;"El tiempo dedicado a cualquier tema de la agenda es inversamente proporcional a su importancia".&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&amp;nbsp;El tercero, de nuevo, nos recuerda que somos proclives a hacer las cosas que nos gustan, no las que realmente importan.&lt;br /&gt;&lt;br /&gt;En el mundo de la calidad y el desarrollo software, estas afirmaciones son destructivas: no se dedica el tiempo a lo planificado, por lo que la calidad del software resultante no siempre es predecible. Siempre se obtienen respuestas de los equipos de trabajo del estilo: "es que no hemos tenido tiempo de probar", "los plazos son muy agresivos". Estas afirmaciones, por desgracia, son ciertas en muchas ocasiones. Pero también es cierto que no se utiliza el tiempo de forma adecuada (basta ver la relajación de los equipos de desarrollo, que va disminuyendo hasta convertirse en una sobrecarga brutal de trabajo conforme nos acercamos a la fecha de entrega...¿nos suena esto de algo?).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-2334733242268200290?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/2334733242268200290/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/procrastinacion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/2334733242268200290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/2334733242268200290'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/procrastinacion.html' title='Procrastinación'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-pwspRZbRiqI/TtYHy-cMN7I/AAAAAAAAAEE/3EsuMWXuspo/s72-c/procrastination.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-5169352480193139425</id><published>2011-09-01T03:08:00.000-07:00</published><updated>2011-09-04T13:03:07.839-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Requisitos'/><title type='text'>Importancia de los requisitos</title><content type='html'>En el desarrollo software, se suele hacer un énfasis enorme en metodologías, ciclos de vida, técnicas varias, frameworks, etc. Sin embargo, la realidad nos sigue diciendo que uno de los principales motivos del fracaso de los proyectos está en los requisitos (inadecuados, incompletos, etc).&lt;br /&gt;&lt;br /&gt;Recientemente leía el libro "&lt;span id="b24-booktitle-40763"&gt;Optimize Quality for Business Outcomes: A Practical Approach to Software Testing" (Andreas Golze, Mark Sarbiewski, Alain Zahn; (c)2008,&amp;nbsp;John Willey and Sons), que trata todo el tema de pruebas del software. Aquí encontraba un ejemplo de cómo los requisitos y su gestión, influyen en una mala solución. Como puede verse, la falta de habilidad del analista para obtener la información no proporcionada por el cliente, junto con las falsas expectativas que éste se había hecho, hacen que la solución final sea una pérdida de recursos y un cliente insatisfecho.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-DNIVYQ-IwSc/Tl9Y_bBV6-I/AAAAAAAAABE/EcaqmF_0mAc/s1600/ch001_p005_unfig001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://1.bp.blogspot.com/-DNIVYQ-IwSc/Tl9Y_bBV6-I/AAAAAAAAABE/EcaqmF_0mAc/s320/ch001_p005_unfig001.jpg" width="320" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-6PrHxupNjLU/Tl9ZDypk05I/AAAAAAAAABI/G4fbOp9fscM/s1600/ch001_p006_unfig001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="248" src="http://2.bp.blogspot.com/-6PrHxupNjLU/Tl9ZDypk05I/AAAAAAAAABI/G4fbOp9fscM/s320/ch001_p006_unfig001.jpg" width="320" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-gOcm0aQJHTI/Tl9ZF2gCudI/AAAAAAAAABM/79Bj5zO1U3c/s1600/ch001_p007_unfig001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="236" src="http://4.bp.blogspot.com/-gOcm0aQJHTI/Tl9ZF2gCudI/AAAAAAAAABM/79Bj5zO1U3c/s320/ch001_p007_unfig001.jpg" width="320" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ffSb05L8MXc/Tl9ZHa0XLbI/AAAAAAAAABQ/riJJ3loZz2Y/s1600/ch001_p008_unfig001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://1.bp.blogspot.com/-ffSb05L8MXc/Tl9ZHa0XLbI/AAAAAAAAABQ/riJJ3loZz2Y/s320/ch001_p008_unfig001.jpg" width="320" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-5169352480193139425?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/5169352480193139425/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/importancia-de-los-requisitos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5169352480193139425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/5169352480193139425'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/09/importancia-de-los-requisitos.html' title='Importancia de los requisitos'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-DNIVYQ-IwSc/Tl9Y_bBV6-I/AAAAAAAAABE/EcaqmF_0mAc/s72-c/ch001_p005_unfig001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-4662830188556806052</id><published>2011-08-30T03:37:00.000-07:00</published><updated>2011-12-01T10:11:38.576-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>El mito de la mantenibilidad</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-kHx41oq0Vak/TtfDKxeifRI/AAAAAAAAAE8/0b_gWn6WDgc/s1600/mantenibilidad.jpg" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" dda="true" src="http://4.bp.blogspot.com/-kHx41oq0Vak/TtfDKxeifRI/AAAAAAAAAE8/0b_gWn6WDgc/s1600/mantenibilidad.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Parece que seguimos&amp;nbsp;revisando mitos.&lt;br /&gt;&lt;br /&gt;¿Realmente es necesario que un software sea mantenible? Si la respuesta es que sí...¿en qué grado? ¿hasta qué punto? ¿para qué usuarios/clientes? ¿Cuándo lo hacemos y a través de qué actividades?&lt;br /&gt;&lt;br /&gt;El IEEE define mantenibilidad como: “La facilidad con la que un sistema o componente software puede ser modificado para corregir fallos, mejorar su funcionamiento u otros atributos o adaptarse a cambios en el entorno”.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;En la ISO 9126-1 se define que la mantenibilidad está indicada por los siguientes subatributos:&lt;/div&gt;&lt;ul class="bullet"&gt;&lt;li class="item"&gt;Facilidad de análisis &lt;/li&gt;&lt;li class="item"&gt;Facilidad de cambio &lt;/li&gt;&lt;li class="item"&gt;Estabilidad &lt;/li&gt;&lt;li class="item"&gt;Facilidad de prueba&lt;/li&gt;&lt;/ul&gt;&lt;div class="item"&gt;Desde mi punto de vista, el uso de buenas prácticas en el análisis y desarrollo nos conducen a:&lt;/div&gt;&lt;ul class="bullet"&gt;&lt;li class="item"&gt;Facilidad de análisis: la documentación facilita el análisis y entendimiento de la arquitectura, decisiones tomadas, etc. Una arquitectura coherente en todo el producto, facilita el análisis. &lt;/li&gt;&lt;li class="item"&gt;Facilidad de cambio: la documentación facilita la identificación de elementos afectados por un cambio, su trazabilidad, etc. &lt;/li&gt;&lt;li class="item"&gt;Estabilidad: el aislamiento entre componentes y el uso de una arquitectura coherente en sus distintos aspectos, facilita que los cambios no produzcan efectos indeseados.&amp;nbsp; &lt;/li&gt;&lt;li class="item"&gt;Facilidad de prueba: las buenas prácticas en el diseño, desarrollo y ejecución de pruebas, facilitan llevar esta tarea a buen término.&lt;/li&gt;&lt;/ul&gt;&lt;div class="item"&gt;Es decir, vemos que para conseguir la mantenibilidad, podemos hacerlo a través de todas estas vías.&amp;nbsp;&lt;/div&gt;&lt;div class="item"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="item"&gt;En mi opinión, normalmente no es necesario hacer un esfuerzo adicional (extraordinario)&amp;nbsp;para que un software sea mantenible. Lo que sí es necesario, es que se sigan ciertas pautas en todo desarrollo, independientemente de que se nos exija esa mantenibilidad. La mantenibilidad debería estar "de serie" en cualquier desarrollo. De hecho, es de las características del software que deberían ir EN PRIMER LUGAR. El resto, pueden derivarse de ella.&lt;br /&gt;&lt;br /&gt;A continuación, vamos a revisar unas cuantas técnicas específicas enfocadas a mejorar la mantenibilidad, y que por tanto deberían estar presentes en todo desarrollo software (independiente de que la metodología sea tal o cual, ágil o no...):&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="item"&gt;Establecer políticas de diseño, codificación y pruebas enfocadas a este tema. Por ejemplo, el uso de patrones puede ayudar. Sin embargo, no debemos caer en el uso indiscriminado de patrones (la conocida "patronitis").&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Facilitar la configuración del software. &lt;/li&gt;&lt;li&gt;Evitar cambios significativos en la arquitectura del sistema durante el desarrollo.&lt;/li&gt;&lt;li&gt;Coherencia (en arquitectura, en nomenclatura, en comentarios, etc). No podemos trabajar con técnicas heterogéneas, del mismo modo que no podemos ser superexigentes en la arquitectura, y&amp;nbsp;relajados en los comentarios o nomenclatura).&amp;nbsp;&lt;/li&gt;&lt;li&gt;Uso de estándares conocidos. Hacer públicos dichos estándares, manteniendo informado al equipo sobre los mismos, y sobre cualquier cambio en los mismos. Asegurar la formación del equipo en estos estándares. Realizar controles (llamadlos revisiones, auditorías, da igual), y asegurarse de que se cumplen.&lt;/li&gt;&lt;li&gt;Documentación (de los casos de prueba, de resultados de pruebas, de requisitos, de decisiones funcionales y técnicas, etc). &lt;/li&gt;&lt;li&gt;Mejora del código en base a métricas (complejidad, etc). Sin control y seguimiento, no se puede mejorar. No podremos mejorar si no sabemos como estamos.&lt;/li&gt;&lt;li&gt;Planificación del mantenimiento.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-4662830188556806052?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/4662830188556806052/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/08/el-mito-de-la-mantenibilidad.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4662830188556806052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/4662830188556806052'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/08/el-mito-de-la-mantenibilidad.html' title='El mito de la mantenibilidad'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-kHx41oq0Vak/TtfDKxeifRI/AAAAAAAAAE8/0b_gWn6WDgc/s72-c/mantenibilidad.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-200408467798870036</id><published>2011-08-30T01:00:00.000-07:00</published><updated>2011-11-30T02:51:27.849-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Scrum - Chuck Norris</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Zuw3-ir60LA/TtYGkthC9CI/AAAAAAAAAD8/lDxpPmSmPbs/s1600/scrumnorris.jpg" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" dda="true" height="199" src="http://4.bp.blogspot.com/-Zuw3-ir60LA/TtYGkthC9CI/AAAAAAAAAD8/lDxpPmSmPbs/s320/scrumnorris.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Para variar, un poco de humor. Este post resultará especialmente divertido para los que conozcan Scrum, y va en la línea de los chistes de Chuck Norris:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.genbetadev.com/metodologias-de-programacion/scrum-norris-es-scrummaster-sin-haber-sido-certificado"&gt;http://www.genbetadev.com/metodologias-de-programacion/scrum-norris-es-scrummaster-sin-haber-sido-certificado&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-200408467798870036?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/200408467798870036/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/08/scrum-chuck-norris.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/200408467798870036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/200408467798870036'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/08/scrum-chuck-norris.html' title='Scrum - Chuck Norris'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Zuw3-ir60LA/TtYGkthC9CI/AAAAAAAAAD8/lDxpPmSmPbs/s72-c/scrumnorris.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-7851808572317943967</id><published>2011-08-30T00:51:00.000-07:00</published><updated>2011-12-01T10:16:34.268-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CMMI'/><category scheme='http://www.blogger.com/atom/ns#' term='ágil'/><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>El mito de la  burocracia</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-zuONUeIhGWs/TtfEdKz9LFI/AAAAAAAAAFM/Rws_UXuOxH4/s1600/Burocracia.bmp" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" dda="true" src="http://4.bp.blogspot.com/-zuONUeIhGWs/TtfEdKz9LFI/AAAAAAAAAFM/Rws_UXuOxH4/s1600/Burocracia.bmp" /&gt;&lt;/a&gt;&lt;/div&gt;Con frecuencia me encuentro con rechazo a las tareas a realizar durante el proyecto, y en muchas ocasiones la respuesta tiene una raiz común: la gente las llama burocracia.&lt;br /&gt;&lt;br /&gt;Si a un programador le pides que anote las horas que ha dedicado a hacer una tarea, lo tildará de burocracia. Sin embargo, si tiene que probar una nueva tecnología para la que existe la rara posibilidad de que se use en el proyecto, esas horas las considerará una inversión.&lt;br /&gt;&lt;br /&gt;Hay una importante corriente de favor por metodologías y prácticas "ágiles", y es sorprendente la facilidad con que todo el mundo se apunta a "ser ágil" (aunque realmente hay poca gente que te sepa decir exactamente qué supone ser ágil). Muchos contestan que ser ágil, es básicamente, eliminar la burocracia.&lt;br /&gt;&lt;br /&gt;El problema reside en que primero, esa definición de agilidad no es correcta, y además, tampoco existe un acuerdo en qué es la burocracia. En mi empresa nos hemos certificado CMMi nivel 3, y constantemente leo en internet&amp;nbsp;un constante rechazo a CMMI, en muchos casos recibiendo la calificación de "burocrática".&lt;br /&gt;&lt;br /&gt;Sorprendentemente, los equipos de trabajo que usan nuestra metodología raramente se quejan de burocracia. Las tareas que se realizan, hay que realizarlas si o si, ya que proporcionan la única forma de llegar a tener control sobre el proyecto. Además, las tareas que se realizan no se llevan a cabo por CMMI, sino por el valor que aportan al proyecto o a la organización. Las quejas surjen durante las fases de implantación de la metodología, lo que nos lleva a concluir que el problema es de formación y falta de conocimiento.&lt;br /&gt;&lt;br /&gt;Por otro lado, la burocracia, se presenta como principal argumento de metodologías ágiles&amp;nbsp;como SCRUM. Se busca en muchas ocasiones rechazar dos conceptos que en realidad tienen poco que ver entre sí, y mucho menos con SCRUM:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;CMMI&lt;/li&gt;&lt;li&gt;Ciclo de vida en cascada&lt;/li&gt;&lt;/ul&gt;Para empezar, CMMI no es una metodología, como tampoco lo es el ciclo de vida mencionado. CMMI es un modelo de madurez. El ciclo de vida en cascada, como cualquier ciclo de vida, es un modelo más o menos teórico que presenta una forma de realizar las actividades. Normalmente lo que se busca con afirmaciones de este tipo es conseguir crear en el modelo CMMI una imagen de burocracia y antiguedad. Por confrontación, conseguiríamos obtener una imagen (ficticia como vemos), de modernidad y agilidad en SCRUM.&lt;br /&gt;&lt;br /&gt;Vemos entonces que la burocracia, sin terminar de definirse como término (aunque está claro que es negativo), sirve como argumento positivo (por confrontación).&lt;br /&gt;&lt;br /&gt;Mi opinión es que en la mayoría de ocasiones nos gusta escondernos en nuestro pequeño mundo, y llamamos burocracia a las actividades que no nos aportan directamente algo a nosotros mismos. En una escala comparativa, tendríamos tareas cuyo beneficio va a parar:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Al individuo&lt;/li&gt;&lt;li&gt;Al proyecto&lt;/li&gt;&lt;li&gt;A la empresa&lt;/li&gt;&lt;/ul&gt;Las actividades que producen principalmente beneficio al individuo (actividades que producen satisfacción personal, autoformación, investigación, etc), no se consideran nunca burocracia. Los integrantes del equipo se sienten cómodos con ellas.&lt;br /&gt;&lt;br /&gt;Las actividades que aportan al proyecto, son calificadas como burocráticas por las categorías más bajas (programadores principalmente). Las necesidades de la gestión del proyecto no les importan, y la supresión de estas actividades, serían a su modo de ver, síntoma de agilidad.&lt;br /&gt;&lt;br /&gt;Las actividades que aportan a la empresa, amplían el conjunto de individuos que las rechazan, incluyendo a las categorías medias/bajas.&lt;br /&gt;&lt;br /&gt;Como conclusión, vemos que normalmente la definición de burocracia está asociada de forma egoísta o personal a unas actividades u otras, en función de nuestro rol. Se echa en falta pues, una visión más global de las actividades en los proyectos, y de su relación con los distintos roles. Un punto por ejemplo que no se suele tener en cuenta es el coste o beneficio en cada actividad, que suele ser percibido de forma diferente en función del rol en el proyecto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-7851808572317943967?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/7851808572317943967/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/08/el-mito-de-la-burocracia.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7851808572317943967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7851808572317943967'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/08/el-mito-de-la-burocracia.html' title='El mito de la  burocracia'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-zuONUeIhGWs/TtfEdKz9LFI/AAAAAAAAAFM/Rws_UXuOxH4/s72-c/Burocracia.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-7977287744343296401</id><published>2011-07-25T03:29:00.000-07:00</published><updated>2011-07-25T03:29:30.087-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Scrum Guide 2011</title><content type='html'>Se ha publicado recientemente una actualización de la Scrum Guide. Está disponible en la ruta:&lt;br /&gt;&lt;a href="http://www.scrum.org/scrumguides/"&gt;http://www.scrum.org/scrumguides/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-7977287744343296401?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/7977287744343296401/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/07/scrum-guide-2011.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7977287744343296401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/7977287744343296401'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/07/scrum-guide-2011.html' title='Scrum Guide 2011'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-8513792332809702014</id><published>2011-07-12T09:46:00.000-07:00</published><updated>2011-09-04T13:04:09.559-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='liderazgo'/><title type='text'>De ganadores y perdedores</title><content type='html'>Ahí va un texto, sacado del libro sobre liderazgo: "La culpa es de la vaca".&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Cuando un ganador comete un error, dice: "Me equivoqué y aprendí la lección".&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Cuando un perdedor comete une rror, dice: "No fue culpa mi culpa", y se la atribuye a otros.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un ganador sabe que el infortunio es el mejor de los maestros.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un perdedor se siente víctima de la adversidad.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un ganador sabe que el resultado depende de él&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un perdedor cree que la mala suerte existe&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un ganador trabaja muy fuerte y se permite más tiempo para sí mismo.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un perdedor está siempre muy ocupado, y no tiene tiempo ni para los suyos&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un ganador enfrenta los retos uno a uno.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un perdedor les da vueltas y vueltas y no se atreve a intentarlo.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un ganador se compromete, da su palabra y la cumple.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un perdedor hace promesas, no asegura nada y, cuando falla, sólo se justifica.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un ganador dice: "Soy bueno, pero voy a ser mejor".&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un perdedor dice: "No soy tan malo como mucha otra gente".&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un ganador escucha, comprende y responde.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un perdedor sólo espera hasta que le toque su turno para hablar.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un ganador respeta a los que saben más que él y trata de aprender de ellos.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un perdedor se resiste ante los que saben más que él y sólo se fija en sus defectos.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un ganador se siente responsable por algo más que su trabajo.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un perdedor no se compromete y siempre dice: "Yo sólo hago mi trabajo".&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un ganador dice: "Debe haber una mejor forma de hacerlo".&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un perdedor dice: "Esta es la manera en que siempre lo hemos hecho".&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un ganador es parte de la solución.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un perdedor es parte del problema.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un ganador se fija en toda la pared.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un perdedor se fija en el ladrillo que le corresponde poner.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un ganador, como usted, comparte este mensaje con sus amigos.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;Un perdedor, como los otros, se lo guarda para si mismo&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-8513792332809702014?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/8513792332809702014/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/07/de-ganadores-y-perdedores.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8513792332809702014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/8513792332809702014'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/07/de-ganadores-y-perdedores.html' title='De ganadores y perdedores'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-248087273155374490</id><published>2011-06-27T13:44:00.000-07:00</published><updated>2011-12-21T10:49:53.724-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo Software'/><category scheme='http://www.blogger.com/atom/ns#' term='patrones'/><title type='text'>Patronitis</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-11IX3-WevZU/TvIqQaTKSSI/AAAAAAAAAIM/USGpsRgojtU/s1600/patronitis.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="245" src="http://4.bp.blogspot.com/-11IX3-WevZU/TvIqQaTKSSI/AAAAAAAAAIM/USGpsRgojtU/s400/patronitis.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Al final no me he podido resistir. No podía dejarlo para mucho más adelante. Si ayer lo nombraba, hoy me apetecía hablar de una de las enfermedades más comunes de los desarrolladores de software: "la patronitis".&lt;br /&gt;&lt;br /&gt;No os molestéis. Este término no aparece en ningún diccionario oficial. Sin embargo, sí puede encontrarse en diversos blogs y libros editados ya hace algunos años. Pero es estos días cuando parece estar más de moda.&lt;br /&gt;&lt;br /&gt;En algún &lt;a href="http://aparatos.blogspot.com/2006/11/patronitis.html"&gt;blog&lt;/a&gt; podemos ver una&amp;nbsp; definición como:&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;i&gt;&lt;b&gt;Patronitis:&lt;/b&gt; N. fem. Dícese de la enfermedad propia de programadores que consiste en querer aplicar patrones de diseño a todo.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sin embargo, no considero esta definición del todo exacta. He podido observar esta enfermedad también en analistas, arquitectos, y otras categorías supuestamente más experimentadas.&lt;br /&gt;&lt;br /&gt;Normalmente el problema se debe a nuestra naturaleza friki innata, que nos reclama el uso de todo aquello que hemos aprendido, independientemente de su adecuación al caso. ¿Que no aplica? Pues da igual, se mete, aunque sea con calzador. Y así nos van las cosas. ¿Que se pone de moda la arquitectura de 14 capas? Pues se usa. Luego ya iremos eliminando cosas que realmente sobren. Y el problema es que siempre encontramos un uso para algo.&lt;br /&gt;&lt;br /&gt;Una vez me enseñaron una regla de oro, de las que no se deberían olvidar nunca: "&lt;i&gt;Un software no está completo cuando ya no se pueden añadir más funcionalidades, sino cuando no se puede eliminar ni una sola más&lt;/i&gt;".&lt;br /&gt;&lt;br /&gt;Y es que al final, no es la experiencia en el desarrollo de aplicaciones mediante patrones y la aplicación de las diversas tecnologías lo que nos da la experiencia suficiente para saber dónde está el límite en el uso de los patrones. Es al tener que mantener esas aplicaciones, bien desarrolladas por nosotros mismos, o bien por otros, cuando vemos cuán complicadas son las cosas. Un buen artículo (con algunos añitos a sus espaldas ya), está en: &lt;a href="http://www.javahispano.org/contenidos/es/el_peligro_de_los_patrones/"&gt;http://www.javahispano.org/contenidos/es/el_peligro_de_los_patrones/&lt;/a&gt;&lt;br /&gt;Este artículo es bastante conocido por internet, y tiene muchos seguidores y detractores. Allá cada cual.&lt;br /&gt;&lt;br /&gt;Finalmente, para los que os gusta visualizar y ejemplizar las cosas, ahí va una perla: (extraída de: &lt;a href="http://odetocode.com/Blogs/scott/archive/2005/11/22/2499.aspx"&gt;http://odetocode.com/Blogs/scott/archive/2005/11/22/2499.aspx&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;Design Patterns: A Love Story&lt;/i&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;Richard tilted his head to watch the waves push flotsam against the boat hull below. Up and down, the flotsam moved. Up and down. &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;Richard had an idea. &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;“Virginia, my dear”, he said to the blond woman beside him. “We’ve been &lt;/i&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/DesSingleton.asp"&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;singletons&lt;/i&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt; on this ship for a long time”. &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;“I know, Richard”, she replied. “My mean step-mother, the &lt;/i&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/DesInterceptingFilter.asp"&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;intercepting filter&lt;/i&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt; that she is, denies me time with others.” &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;Richard paused for a moment, to contemplate &lt;/i&gt;&lt;/span&gt;&lt;a href="http://www.dofactory.com/Patterns/PatternStrategy.aspx"&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;strategy&lt;/i&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;. Her father, with his &lt;/i&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/despipesandfilters.asp"&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;pipes and filters&lt;/i&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;, would return soon, and force them to communicate over his &lt;/i&gt;&lt;/span&gt;&lt;a href="http://www.enterpriseintegrationpatterns.com/MessageBus.html"&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;message bus&lt;/i&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;. He glanced aft, and saw no one else around. Richard turned his &lt;/i&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/library/en-us/dnpatterns/html/DesFrontController.asp"&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;front controller&lt;/i&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt; to face Virginia, and looked her in the eyes. She was close now, and Richard could feel his &lt;/i&gt;&lt;/span&gt;&lt;a href="http://www.martinfowler.com/eaaCatalog/activeRecord.html"&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;active record&lt;/i&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt; rising. &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;“Virginia”, he whispered. “There is no &lt;/i&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/library/en-us/dnbda/html/observerpattern.asp"&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;observer&lt;/i&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt; in sight. Let us run below deck. I want to peel away your &lt;/i&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Facade_pattern"&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;façade&lt;/i&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;, and tightly couple.” &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;“Oh yes, Richard”, she blushed, and leaned towards him. “I want you to give me a &lt;/i&gt;&lt;/span&gt;&lt;a href="http://codebetter.com/blogs/jeremy.miller/archive/2005/10/06/132825.aspx"&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;dependency injection&lt;/i&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;”. &lt;/i&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-248087273155374490?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/248087273155374490/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/06/patronitis.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/248087273155374490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/248087273155374490'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/06/patronitis.html' title='Patronitis'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-11IX3-WevZU/TvIqQaTKSSI/AAAAAAAAAIM/USGpsRgojtU/s72-c/patronitis.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-9119831498256329561</id><published>2011-06-26T06:29:00.000-07:00</published><updated>2011-06-26T06:47:32.452-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ágil'/><category scheme='http://www.blogger.com/atom/ns#' term='metodología'/><title type='text'>Técnicas ágiles: Principio KISS</title><content type='html'>El principio &lt;strong&gt;KISS&lt;/strong&gt;, es uno de esos acrónimos que quedan bien en cualquier presentación. Es una palabra conocida en inglés, y al mismo tiempo, es una frase simple y útil en el desarrollo de software.&lt;br /&gt;&lt;br /&gt;"&lt;strong&gt;Keep It Simple, Stupid&lt;/strong&gt;"&lt;br /&gt;&lt;br /&gt;Supongo que alguien tuvo que añadir la palabrita final para conseguir doblar la S, y que así tengamos la palabra en inglés.&lt;br /&gt;&lt;br /&gt;Básicamente, esta técnica general, se basa en que en cada una de las actividades del desarrollo software, debemos valorar si estamos realmente adoptando la solución más simple o no. Esta técnica ha sido abanderada por las metodologías ágiles, que rápidamente la han adoptado como suya.&lt;br /&gt;&lt;br /&gt;Al mismo tiempo, es una afirmación correcta en cualquier desarrollo. No siempre se tiene la entereza de mantener la simplicidad. Más cuando&amp;nbsp;uno es&amp;nbsp;novato en alguna tecnología y quiere demostrar que tiene la suficiente destreza, o bien simplemente quiere utilizar el último patrón o framework de moda.&lt;br /&gt;&lt;br /&gt;Hay un término de moda, y es la "&lt;strong&gt;deuda técnica&lt;/strong&gt;". Este término está relacionado con el principio KISS. Si sabemos mantener la simplicidad en cada una de las facetas del desarrollo, estaremos disminuyendo la deuda técnica. Es curioso, pero en Wikipedia encontramos la definición siguiente de deuda técnica: "La &lt;b&gt;deuda técnica&lt;/b&gt; es un &lt;a href="http://es.wikipedia.org/wiki/Eufemismo" title="Eufemismo"&gt;&lt;span style="color: #0645ad;"&gt;eufemismo&lt;/span&gt;&lt;/a&gt; &lt;a class="mw-redirect" href="http://es.wikipedia.org/wiki/Tecnol%C3%B3gico" title="Tecnológico"&gt;&lt;span style="color: #0645ad;"&gt;tecnológico&lt;/span&gt;&lt;/a&gt; que hace referencia a las consecuencias de un desarrollo apresurado de &lt;i&gt;&lt;a href="http://es.wikipedia.org/wiki/Software" title="Software"&gt;&lt;span style="color: #0645ad;"&gt;software&lt;/span&gt;&lt;/a&gt;&lt;/i&gt; o un despliegue descuidado de &lt;i&gt;&lt;a href="http://es.wikipedia.org/wiki/Hardware" title="Hardware"&gt;&lt;span style="color: #0645ad;"&gt;hardware&lt;/span&gt;&lt;/a&gt;&lt;/i&gt;." (&lt;a href="http://es.wikipedia.org/wiki/Deuda_t%C3%A9cnica"&gt;http://es.wikipedia.org/wiki/Deuda_t%C3%A9cnica&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Si ahondamos en la definición, veremos que la deuda técnica no siempre estaría originada por un "desarrollo apresurado". Podemos hacer un exhaustivo análisis, diseño técnico, definición arquitectónica, etc. Y sin embargo, eso no asegura que no vaya a existir una deuda técnica en un futuro inmediato. Puede ser una arquitectura demasiado rimbombante, un complejo diseño técnico que no se vea actualizado...o una implementación desviada del diseño...o un uso indiscriminado de patrones ("patronitis", algún día os hablaré de ello).&lt;br /&gt;&lt;br /&gt;Y para terminar, un ejemplo que me ha gustado y que he leído en más de un sitio (con ligeras variaciones). Éste en concreto, está extraído de un blog (&lt;a href="http://www.gedpro.com/Comunidad/Blogs/tabid/69/EntryId/465/Principio-KISS-en-la-gestion-de-proyectos.aspx"&gt;http://www.gedpro.com/Comunidad/Blogs/tabid/69/EntryId/465/Principio-KISS-en-la-gestion-de-proyectos.aspx&lt;/a&gt;) en el que hablan del término KISS para temas de gestión de proyectos. Pero como el mismo autor reconoce, es un término válido para cualquier faceta del desarrollo:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Cuenta la leyenda que cuando la NASA inició el lanzamiento de astronautas,  se dieron cuenta enseguida de que los bolígrafos no funcionarían con gravedad  cero. Para resolver este problema, la NASA contrató a Accenture (la antigua  Andersen Consulting). Una década y 12 millones de dólares después, la NASA  disponía de un innovador bolígrafo que escribía con gravedad cero, hacia arriba  y hacia abajo, bajo el agua, en prácticamente cualquier superficie, incluido el  cristal y en un rango de temperatura desde -30ºC hasta más de 300ºC. Los Rusos  utilizaron un Lápiz.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050479227006284496-9119831498256329561?l=calidadysoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calidadysoftware.blogspot.com/feeds/9119831498256329561/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calidadysoftware.blogspot.com/2011/06/tecnicas-agiles-principio-kiss.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/9119831498256329561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050479227006284496/posts/default/9119831498256329561'/><link rel='alternate' type='text/html' href='http://calidadysoftware.blogspot.com/2011/06/tecnicas-agiles-principio-kiss.html' title='Técnicas ágiles: Principio KISS'/><author><name>Roberto Miñana</name><uri>http://www.blogger.com/profile/05681748686809841376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/--5wxHwcafn8/Tmd4WEIkzlI/AAAAAAAAABg/kml82zWLyyE/s220/rminana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050479227006284496.post-7088215013090724043</id><published>2011-06-25T12:53:00.000-07:00</published><updated>2011-12-01T10:13:03.191-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CMMI'/><category scheme='http://www.blogger.com/atom/ns#' term='calidad'/><title type='text'>Evaluación de madurez CMMi nivel 3</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-JwdAQHNCa8I/TtfDnxB0JeI/AAAAAAAAAFE/jYuABMRnmgQ/s1600/logo-cert-cmmi.gif" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" dda="true" src="http://2.bp.blogspot.com/-JwdAQHNCa8I/TtfDnxB0JeI/AAAAAAAAAFE/jYuABMRnmgQ/s1600/logo-cert-cmmi.gif" /&gt;&lt;/a
