<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Angel "Java" Lopez : Desarrollo de Software</title><link>http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx</link><description>Tags: Desarrollo de Software</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Curso de Scrum de Tobias Mayer en Buenos Aires</title><link>http://msmvps.com/blogs/lopez/archive/2009/12/14/curso-de-scrum-de-tobias-mayer-en-buenos-aires.aspx</link><pubDate>Mon, 14 Dec 2009 17:49:46 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1745566</guid><dc:creator>lopez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1745566</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/12/14/curso-de-scrum-de-tobias-mayer-en-buenos-aires.aspx#comments</comments><description>&lt;p&gt;El bueno de &lt;a href="http://softwareagil.blogspot.com/" target="_blank"&gt;Juan Gabardini&lt;/a&gt; anuncia en la lista Foro Agiles, un nuevo curso de Scrum de &lt;a href="http://agilethinking.net/aboutme.html" target="_blank"&gt;Tobias Mayer&lt;/a&gt; en Argentina. Copio el mensaje original:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://agilethinking.net/aboutme.html"&gt;Tobias Mayer&lt;/a&gt; facilitará un taller de un día en Buenos Aires, Argentina. Está orientado a Scrum Masters y agile coaches.      &lt;br /&gt;Para los que no lo conocen, Tobias dió el primer curso de CSM en Argentina, allá por el 2006. Luego de eso ha venido varias veces (no se cuantos, pero dió al menos 5 CSM en Bs As). ….&lt;/p&gt;    &lt;p&gt;Se explorarán los principios y valores de Scrum. Este taller no se focaliza en las prácticas (se asume que los participantes tienen familiaridad con ellas) y explora Scrum en un nivel más profundo y humano. A través de una serie de juegos, ejercicios interactivos y conversaciones facilitadas, se adquirirá una comprensión más profunda del nuevo esquema de pensamiento requerido para hacer Scrum. Esto no es sobre metodologías o procesos, es sobre divertirse&lt;/p&gt;    &lt;p&gt;Cuándo: 28 de enero 2010&lt;/p&gt;    &lt;p&gt;Dónde: Perú 375, 1&lt;sup&gt;er&lt;/sup&gt; piso (&lt;a href="http://www.southworks.net/"&gt;Southworks&lt;/a&gt;)&lt;/p&gt;    &lt;p&gt;Costo: usd 220 + IVA&lt;/p&gt;    &lt;p&gt;Registración: &lt;a href="http://tinyurl.com/tobiasBsAsWorkshop"&gt;http://tinyurl.com/tobiasBsAsWorkshop&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Este evento es organizado por &lt;a href="http://www.agiles.org/"&gt;Agiles Argentina&lt;/a&gt; y &lt;a href="http://www.agilar.com.ar/site/"&gt;Agilar Argentina&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Este evento será dado en inglés. Aunque por el tipo de evento no es imprescindible el hablar y entender perfectamente, ya que el resto de los que asistimos podremos dar una mano. Va el detalle en inglés.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Process/Mechanics&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Scrum is quickly being seen as the de facto way of starting out down an Agile pathway. People see it as a quick and easy way in. The problem is that Scrum is very easily misunderstood. There are a multitude of Scrum Facades in place around the world, companies who claim to be doing Scrum because they have people with the titles of “Scrum Master” and “Product Owner”, have daily meetings, maybe even planning meetings, reviews and retrospectives, keep a backlog of work and show some sort of burn down graph each sprint.&lt;/p&gt;    &lt;p&gt;Underneath the facade though, the same old command and control beast lurks, the same old fear and CYA behavior. Nothing has essentially changed. So what is missing? I believe the spirit of Scrum is missing, the essence of change.&lt;/p&gt;    &lt;p&gt;Scrum is not just a framework and a set of roles, meetings and artifacts. Scrum is a way of being that is utterly different from any previous way of working that we have encountered in the software industry. To do Scrum — to really do Scrum — requires an absolute shift in the way we think and act. &lt;/p&gt;    &lt;p&gt;Scrum relies on some core principles:     &lt;br /&gt;— Empiricism      &lt;br /&gt;— Self-Organization      &lt;br /&gt;— Collaboration      &lt;br /&gt;— Prioritization      &lt;br /&gt;— Rhythm &lt;/p&gt;    &lt;p&gt;and some essential values:     &lt;br /&gt;— Courage      &lt;br /&gt;— Trustfulness      &lt;br /&gt;— Transparency &lt;/p&gt;    &lt;p&gt;This session will allow Scrum practitioners to reach the next level of Scrum by exploring some of these underlying foundations in a highly experiential way. The session will consist of a series of interactive exercises and facilitated discussion designed to help participants not just understand, but embody these principles and values at a deep level. &lt;/p&gt;    &lt;p&gt;I create and/or adapt new games frequently, the majority require no props, and usually require the participants to be on their feet. Most have simple formats and can be easily remembered. None of them have pre-determined outcomes: they are all about self-discovery. For more detailed information on the kinds of games and interactive exercises I’ll use for this session please follow one or more of these links to descriptions of sessions I have run previously.&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://agilethinking.net/agile2005/AgileThinkingWorkshop.html"&gt;Agile Thinking&lt;/a&gt; — Agile2005 session &lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;&lt;a href="http://agilethinking.net/greatgameofpower.html"&gt;Great Game of Power&lt;/a&gt; — Scrum Exchange 2006 session &lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;&lt;a href="http://agilethinking.net/blog/2008/08/18/scale-back-small-is-beautiful"&gt;Scale Back: Small is Beautiful&lt;/a&gt; — Agile2008 session &lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;&lt;a href="http://submissions.agile2008.org/files/Operating%20on%20the%20Creative%20Edge.pdf"&gt;Operating on the Creative Edge&lt;/a&gt; — Agile2008 session &lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;This session is intended as a taster and it is hoped participants will be encouraged to explore more deeply the human interaction foundations of Scrum once they leave the conference.&lt;/p&gt;    &lt;p&gt;Learning outcomes&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://agilethinking.net/aboutme.html"&gt;Tobias Mayer&lt;/a&gt; has built a reputation in the Scrum world of offering highly challenging training sessions, pushing people to the edge of their comfort zone and ultimately breaking through to a new way of behaving. This session has that same outcome in mind.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;Ya comenté sobre el bueno de Tobias en:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2009/11/16/tales-from-the-scrum-la-esencia-de-scrum.aspx" target="_blank"&gt;Tales from the Scrum: La esencia de Scrum&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2009/10/13/tales-from-the-scrum-un-d-237-a-en-el-equipo.aspx" target="_blank"&gt;Tales from the Scrum: Un día en el equipo&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2009/08/18/tales-from-the-scrum-el-coraz-243-n-de-scrum.aspx" target="_blank"&gt;Tales from the Scrum: El corazón de Scrum&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1745566" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/Scrum/default.aspx">Scrum</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+Agil/default.aspx">Desarrollo Agil</category></item><item><title>ALT.NET Hispano VAN (reunión virtual): Aplicaciones modulares con Prism</title><link>http://msmvps.com/blogs/lopez/archive/2009/12/10/alt-net-hispano-van-reuni-243-n-virtual-aplicaciones-modulares-con-prism.aspx</link><pubDate>Thu, 10 Dec 2009 10:49:14 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1744625</guid><dc:creator>lopez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1744625</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/12/10/alt-net-hispano-van-reuni-243-n-virtual-aplicaciones-modulares-con-prism.aspx#comments</comments><description>&lt;p&gt;Este sábado 12 de diciembre, 19 GMT (4 de la tarde aquí en Buenos Aires) de nuevo tenemos VAN (Reunión virtual, des-conferencia) organizada por &lt;a href="http://altnet-hispano.pbworks.com/" target="_blank"&gt;la comunidad de ALT.NET Hispano&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;(Más información sobre cómo asistir a la reunión virtual, software necesario, enlaces:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://altnet-hispano.pbworks.com/Descripcion-de-Reuniones" href="http://altnet-hispano.pbworks.com/Descripcion-de-Reuniones"&gt;http://altnet-hispano.pbworks.com/Descripcion-de-Reuniones&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;)&lt;/p&gt;  &lt;p&gt;Esta vez el tema será Prism (&lt;a href="http://www.codeplex.com/CompositeWPF/" target="_blank"&gt;Composite Application Guidance para Windows Presentation Foundation y Silverlight&lt;/a&gt;). La introducción estará a cargo del bueno de &lt;a href="http://twitter.com/juliandominguez" target="_blank"&gt;@juliandominguez&lt;/a&gt;, que nos comenta &lt;a href="http://groups.google.com/group/altnet-hispano/browse_thread/thread/57e0df07accb3792?hl=es" target="_blank"&gt;en la lista de ALT.NET Hispano&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;La idea de este próximo sábado es presentar sobre Prism (o Composite Application Guidance for WPF and Silverlight para los que prefieren el nombre real pero aburrido).&lt;/p&gt;    &lt;p&gt;¿Qué es Prism de patterns &amp;amp; practices y qué desafíos resuelve?&lt;/p&gt;    &lt;p&gt;¿Qué beneficios les brinda a arquitectos, desarrolladores y a la interacción con diseñadores?&lt;/p&gt;    &lt;p&gt;En esta sesión mostraré cómo Prism nos ayuda a trabajar en equipos distribuidos, no distribuidos, grandes o pequeños, con requerimientos cambiantes, aplicando conceptos como TDD y patrones de UI como Model View ViewModel (MVVM). También voy a mostrar cómo nos ayuda a reusar código que funcione en WPF y en Silverlight.&lt;/p&gt;    &lt;p&gt;Vamos a estar viendo los beneficios que nos trae Prism a la hora de construir una aplicación compuesta, como así también en qué (lio?) nos metemos cuando queremos usar Prism en una aplicación que no lo amerita.&lt;/p&gt;    &lt;p&gt;Espero que les resulte muy interesante a quienes no conocen Prism y tienen pensado empezar un proyecto en WPF o Silverlight.&lt;/p&gt;    &lt;p&gt;Sé que normalmente las VAN suelen ser a las 18:00 GMT, pero debido a mi horario (actualmente estoy en Redmond), preferiría que sea las 19:00 GMT. Esto sería el sábado 12/12.&lt;/p&gt;    &lt;p&gt;Así que la reunión será este sábado a las 19GMT (no a las 18GMT como otras veces).&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Mi colección de enlaces sobre Prism:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://delicious.com/ajlopez/prism"&gt;http://delicious.com/ajlopez/prism&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Otros interesantes:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://delicious.com/ajlopez/mef"&gt;http://delicious.com/ajlopez/mef&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/mvvm"&gt;http://delicious.com/ajlopez/mvvm&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/silverlight"&gt;http://delicious.com/ajlopez/silverlight&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/wpf"&gt;http://delicious.com/ajlopez/wpf&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;(especialmente si agregan examples o tutorial, como &lt;a href="http://delicious.com/ajlopez/mef+example"&gt;http://delicious.com/ajlopez/mef+example&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;Si es la primera vez que topan con el término VAN, les recuerdo:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Si no conocen qué es una reunión VAN, pueden consultar &lt;a href="http://www.zachariahyoung.com/zy/post/2009/01/Introduction-to-Virtual-ALTNET.aspx"&gt;VAN meetings&lt;/a&gt;. Para ver cómo se desarrolla una VAN de ALT.NET Hispano, y qué software necesitan para asistir, ver &lt;a href="http://altnet-hispano.pbworks.com/Descripcion-de-Reuniones" target="_blank"&gt;Descripcion-de-Reuniones-VAN&lt;/a&gt;. Pueden ver &lt;a href="http://altnet-hispano.pbworks.com/Historial-de-reuniones"&gt;el historial de anteriores reuniones VAN&lt;/a&gt; (visiten las que dieron, por ejemplo, sobre NHibernate, WPF y demás) (yo participé en &lt;a href="http://msmvps.com/blogs/lopez/archive/2009/09/18/resultado-de-la-van-en-alt-net-hispano-sobre-scrum.aspx"&gt;VAN sobre Scrum&lt;/a&gt; y en otra &lt;a href="http://msmvps.com/blogs/lopez/archive/2009/10/27/resultado-de-la-van-alt-net-hispano-sobre-generaci-243-n-de-c-243-digo.aspx"&gt;sobre generación de código&lt;/a&gt;). También pueden suscribirse para proponer nuevos temas, y colaborar con la comunidad. Si no pueden asistir a ésta VAN, seguramente quedará publicada más adelante, con video incluido.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez    &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1744625" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Tales from the Scrum: Los Rolling Stones y cómo va su proyecto</title><link>http://msmvps.com/blogs/lopez/archive/2009/12/07/tales-from-the-scrum-los-rolling-stones-y-c-243-mo-va-su-proyecto.aspx</link><pubDate>Mon, 07 Dec 2009 09:22:09 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1744060</guid><dc:creator>lopez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1744060</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/12/07/tales-from-the-scrum-los-rolling-stones-y-c-243-mo-va-su-proyecto.aspx#comments</comments><description>&lt;p&gt;Bueno, en realidad, no los Rolling Stones. Solamente Keith Richards, y no el de los Rolling, sino &lt;a href="http://uk.linkedin.com/pub/keith-richards-dsdm-specialist/6/99/65b" target="_blank"&gt;Keith Richards&lt;/a&gt; presidente de&amp;#160; &lt;a href="http://www.keithrichardsconsulting.co.uk/site/home/" target="_blank"&gt;Keith Richards Consulting&lt;/a&gt;. Encuentro en un post de &lt;a href="http://gojko.net/" target="_blank"&gt;Gojko Adzic&lt;/a&gt; un post que comenta una charla de KRC:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://gojko.net/2009/12/04/eight-interesting-techniques-to-test-how-a-project-is-going/" target="_blank"&gt;Eight interesting techniques to test how a project is going&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Es un muy interesante post, déjenme escribir esas técnicas, para saber si el proyecto y el equipo están en buena forma, sea que estén siguiendo Scrum o no. Esta es mi propia traducción de ese texto:&lt;/p&gt;  &lt;p&gt;- 1. ¿Puede cualquier miembro del equipo escribir el objetivo del proyecto en una nota post-it con marcador grueso? Si no pueden, el final del juego no está claramente definido ni entendido por todos&lt;/p&gt;  &lt;p&gt;- 2. Acérquese a un colega en su trabajo, y pídale ayuda para algo cualquiera. Vea cómo reacciona. Si encuentra una respuesta fría, la persona no está muy contento con su trabajo. Richards aconseja armar equipos con “aquellos que respondan ‘puedo’”. Esa gente mejorará la comunicación y el espíritu de equipo en su proyecto.&lt;/p&gt;  &lt;p&gt;- 3. Cuando una fase del proyecto está oficialmente “hecha” (done), pregúntese a sí mismo: “¿Es seguro seguir adelante?”. Si esta pregunta le provoca una mala sensación en las tripas, es que no están listos todavía para avanzar a la siguiente etapa.&lt;/p&gt;  &lt;p&gt;- 4. ¿Cuántos de sus proyectos terminan con una seria revisión del proyecto? Esto es, según Richards, crucial para la mejora de su organización. Permite prevenir errores repetidos y compartir conocimiento entre los equipos (yo agrego que, si trabaja en una organización con varios proyectos y equipos, tendría que haber comunicación entre equipos DURANTE los proyectos, comentando bloqueos, avances, hallazgos, problemas y soluciones; unas buenas reuniones periódicas con presentaciones timeboxed pueden ser un camino a seguir).&lt;/p&gt;  &lt;p&gt;- 5. ¿Cómo reacciona la gente de su equipo cuando el cliente dice “cambié de idea”? Si reaccionan negativamente, el sistema que están construyendo no es tan flexible como debiera.&lt;/p&gt;  &lt;p&gt;- 6. Pregúntele a alguien que le comente el estado actual de una tarea, y luego cállese 10 segundos; no hagan nada para provocar una respuesta. Si la persona se muestra insegura o nerviosa sobre algo, seguramente comenzará a comentarlo. Si se mantiene en silencio, las cosas van bien (este punto lo discutiría: debería haber comunicación y visibilidad sin necesidad de llegar a este tipo de “trick”).&lt;/p&gt;  &lt;p&gt;- 7. ¿Conoce cuánto tiempo se empleó en la última iteración en pruebas? Si no puede estimarlo, no está tomando buenas métricas del proyecto. Tomar métricas de este tipo, dice Richards, es crucial para hacer estimaciones realistas (nota mía: ojalá tuviera un peso por cada vez que alguien en un equipo estimó una tarea SIN tener en cuenta pruebas, verificación, etc.; pongan atención a esto).&lt;/p&gt;  &lt;p&gt;- 8. Tome un documento de su proyecto, usado durante una presentación. Si atrás hay diagramas dibujados a mano, señal que el documento no está claro, y necesitó de esa ayuda para ser explicado.&lt;/p&gt;  &lt;p&gt;Me quedo principalmente con los puntos 1, 2, 3, 5 en primer lugar. Luego 7, 4.&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez    &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1744060" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/Scrum/default.aspx">Scrum</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+Agil/default.aspx">Desarrollo Agil</category></item><item><title>ALT.NET Hispano VAN: Get Things Done con Jeroen Sangers</title><link>http://msmvps.com/blogs/lopez/archive/2009/12/04/alt-net-hispano-van-get-things-done-con-jeroen-sangers.aspx</link><pubDate>Fri, 04 Dec 2009 10:13:20 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1743612</guid><dc:creator>lopez</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1743612</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/12/04/alt-net-hispano-van-get-things-done-con-jeroen-sangers.aspx#comments</comments><description>&lt;p&gt;Este sábado 5 de Diciembre, 18 GMT/UTC (3 de la tarde por aquí en Buenos Aires), habrá otra des-conferencia virtual de la &lt;a href="http://altnet-hispano.pbworks.com/" target="_blank"&gt;comunidad ALT.NET Hispano&lt;/a&gt;. El tema será productividad, más específicamente &lt;a href="http://es.wikipedia.org/wiki/Getting_Things_Done" target="_blank"&gt;Get Things Done (GTD)&lt;/a&gt; (ver también &lt;a href="http://es.wikipedia.org/wiki/Consigue_hacer_el_trabajo" target="_blank"&gt;Consigue hacer el trabajo&lt;/a&gt;). La presentación inicial estará a cargo de Jeroen Sangers:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://jeroensangers.com/" href="http://jeroensangers.com/"&gt;http://jeroensangers.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/JeroenSangers" target="_blank"&gt;@jeroensangers&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Este es el temario de Jeroen:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Mi presentación va más que nada sobre Getting Things Done y consiste     &lt;br /&gt;de tres partes:      &lt;br /&gt;1. Control: un flujo de trabajo para controlar tus acciones      &lt;br /&gt;2. Perspectiva: dar dirección a todo lo que haces      &lt;br /&gt;3. Consejos prácticas para implementar un sistema de productividad&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;GTD se populariza con un libro de &lt;a href="http://www.davidco.com/" target="_blank"&gt;David Allen&lt;/a&gt;. Pueden leer la descripción de GTD en el sitio de Allen:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.davidco.com/what_is_gtd.php" target="_blank"&gt;What is GTD?&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ahí leo:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Sophisticated without being confining, the subtle effectiveness of GTD lies in its radically common sense notion that with a complete and current inventory of all your commitments, organized and reviewed in a systematic way, you can focus clearly, view your world from optimal angles and make trusted choices about what to do (and not do) at any moment. GTD embodies an easy, step-by-step and highly efficient method for achieving this relaxed, productive state. It includes:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Capturing anything and everything that has your attention&lt;/li&gt;      &lt;li&gt;Defining actionable things discretely into outcomes and concrete next steps &lt;/li&gt;      &lt;li&gt;Organizing reminders and information in the most streamlined way, in appropriate categories, based on how and when you need to access them &lt;/li&gt;      &lt;li&gt;Keeping current and &amp;quot;on your game&amp;quot; with appropriately frequent reviews of the six horizons of your commitments (purpose, vision, goals, areas of focus, projects, and actions) &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;Pueden encontrar una buena descripción (con diagrama incluido, como el que aparece en el libro original) de GTD y una relación con los “cuadrantes de Covey” (me gusta recordar al creador de ese concepto, que es &lt;a href="http://blog.lodewijkvdb.com/2007/08/sketchcast-2-using-the-eisenhower-matrix.html" target="_blank"&gt;la matriz de Eisenhower&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;Mis enlaces sobre GTD, y productividad:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://delicious.com/ajlopez/gtd"&gt;http://delicious.com/ajlopez/gtd&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/productivity"&gt;http://delicious.com/ajlopez/productivity&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Bueno, ya envíe varios posts sobre las VAN de ALT.NET Hispano, pero les recuerdo:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Si no conocen qué es una reunión VAN, pueden consultar &lt;a href="http://www.zachariahyoung.com/zy/post/2009/01/Introduction-to-Virtual-ALTNET.aspx"&gt;VAN meetings&lt;/a&gt;. Para ver cómo se desarrolla una VAN de ALT.NET Hispano, y qué software necesitan para asistir, ver &lt;a href="http://altnet-hispano.pbworks.com/Descripcion-de-Reuniones-VAN"&gt;Descripcion-de-Reuniones-VAN&lt;/a&gt;. Pueden ver &lt;a href="http://altnet-hispano.pbworks.com/Historial-de-reuniones"&gt;el historial de anteriores reuniones VAN&lt;/a&gt; (visiten las que dieron, por ejemplo, sobre NHibernate, WPF y demás) (yo participé en &lt;a href="http://msmvps.com/blogs/lopez/archive/2009/09/18/resultado-de-la-van-en-alt-net-hispano-sobre-scrum.aspx"&gt;VAN sobre Scrum&lt;/a&gt; y en otra &lt;a href="http://msmvps.com/blogs/lopez/archive/2009/10/27/resultado-de-la-van-alt-net-hispano-sobre-generaci-243-n-de-c-243-digo.aspx"&gt;sobre generación de código&lt;/a&gt;). También pueden suscribirse para proponer nuevos temas, y colaborar con la comunidad. Si no pueden asistir a ésta VAN, seguramente quedará publicada más adelante, con video incluido.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1743612" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/Scrum/default.aspx">Scrum</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+Agil/default.aspx">Desarrollo Agil</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/ALT.NET/default.aspx">ALT.NET</category></item><item><title>Recursos de Scrum, del curso de Buenos Aires</title><link>http://msmvps.com/blogs/lopez/archive/2009/12/03/recursos-de-scrum-del-curso-de-buenos-aires.aspx</link><pubDate>Thu, 03 Dec 2009 11:50:40 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1743459</guid><dc:creator>lopez</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1743459</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/12/03/recursos-de-scrum-del-curso-de-buenos-aires.aspx#comments</comments><description>&lt;p&gt;Gracias a la gente del Microsoft User Group de Argentina, ayer miércoles 2 de diciembre estuve dando una jornada de Scrum teoría y práctica, de todo un día. Con unos treinta asistentes, estuvimos viendo temas como el manifiesto ágil, y las ideas que sustentan Scrum en particular. Así como también los roles, artefactos, reuniones, que se manejan en este marco de trabajo. Discutimos tópicos como contratos ágiles, relación con el cliente, la importancia del product owner, la auto-organización del equipo, el “ownership” que tienen que ganar, la idea de trabajar a un ritmo razonable, el “entrar en flujo”, Product backlog vs Sprint Backlog, y el clásico Chanchos y Gallinas.&lt;/p&gt;  &lt;p&gt;Para mí, fue una grata experiencia: es uno de los cursos donde veo que más puedo aportar, y donde podemos practicar algo que considero muy importante conocer como es Scrum. Veo que la necesidad de tener equipos ágiles es creciente, no sólo en el desarrollo de software, sino en actividades en general. La labor en equipo permite llegar a objetivos que son más difícil de lograr individualmente o en simple grupo (vean que distingo entre equipo y grupo). Hay que estudiar más en detalle cuáles son los factores que hacen que Scrum funcione (me basé mucho en la idea de No somos vulcanos): hay un bias hacia mostrar los casos de éxito en la comunidad ágil, y no comentar los fracasos. Hay que pasar de la evidencia anecdótica a un fundamento más firme, no porque el marco de trabajo en sí lo necesite, sino para poder aplicarlo mejor, entender mejor en qué circunstancias funciona, y en cuáles se complica. &lt;/p&gt;  &lt;p&gt;La parte teórica ocupó la mañana, pero ya después los asistentes se separaron en cuatro grupos, y comenzaron a trabajar en desarrollar un entregable, en dos sprints de 3 días de 10 minutos cada día. Fue una experiencia interesante: fuimos viendo cómo mejorar las reuniones, la precisión del backlog, los acuerdos con el product owner para los entregables de Sprint Review, el reparto de trabajo, la mejor partición de las tareas en el Product Backlog, y más. &lt;/p&gt;  &lt;p&gt;Prometí publicar un post con los recursos que mencioné en el curso. Acá van los enlaces y bibliografía, que son similares a los que ya publiqué hace unos días para otros cursos dictados, pero para más comodidad, los concentro de nuevo en este post:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://altnet-hispano.pbworks.com/vanhispano-2009-09-06" target="_blank"&gt;Reunión virtual de Scrum&lt;/a&gt;, con video (gran parte de la teoría vista en el curso está en este video) (ahí están los enlaces que presento acá).&lt;/p&gt;  &lt;p&gt;Presentación usada en el curso &lt;a href="http://cid-9f903f3d6db0c176.skydrive.live.com/self.aspx/Presentations/ScrumSpanish.pptx" target="_blank"&gt;ScrumSpanish.pptx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://danube.com/system/files/What+Is+Scrum_blog.pdf"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Pueden usar esta presentación compartida (en varios idiomas):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.mountaingoatsoftware.com/scrum-a-presentation"&gt;A Reusable Scrum Presentation. Introduce Scrum to your team, ScrumMaster and Product Owner.&lt;/a&gt;&lt;/p&gt;  &lt;li&gt;Para leer en inglés y en español &lt;a href="http://scrumtraininginstitute.com/home/stream_download/scrumprimer"&gt;Scrum Primer&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://agilethinking.net/"&gt;http://agilethinking.net/&lt;/a&gt; El sitio de Tobias Meyer, que me inició en el ScrumMastering en el 2006.&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.implementingscrum.com/"&gt;http://www.implementingscrum.com/&lt;/a&gt; Sitio donde encontraran la clásica historia: &lt;a href="http://www.implementingscrum.com/blog/2006/09/11/the-classic-story-of-the-pig-and-chicken"&gt;The classic story of the pig and chicken&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;El &lt;a href="http://agilemanifesto.org/"&gt;Manifiesto Agil&lt;/a&gt; mencionado en la charla &lt;/li&gt;  &lt;li&gt;Artículo corto en inglés (pdf) &lt;a href="http://danube.com/system/files/What+Is+Scrum_blog.pdf"&gt;What is Scrum?&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;Reviews of Agile Product Backlog and User Story Management Tools: &lt;a href="http://www.userstories.com/"&gt;http://www.userstories.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;Presentación en español sobre Contratos Ágiles    &lt;ul&gt;     &lt;li&gt;Slides: &lt;a href="http://www.slideshare.net/proyectalis/090603-contratos-giles"&gt;http://www.slideshare.net/proyectalis/090603-contratos-giles&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Video Parte 1: &lt;a href="http://www.viddler.com/explore/jmbeas/videos/3"&gt;http://www.viddler.com/explore/jmbeas/videos/3/&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Video Parte 2: &lt;a href="http://www.viddler.com/explore/jmbeas/videos/4"&gt;http://www.viddler.com/explore/jmbeas/videos/4/&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://groups.yahoo.com/group/foro-agiles"&gt;Foro Agiles&lt;/a&gt; (Grupo Yahoo en español) &lt;/li&gt;  &lt;li&gt;Blog de Juan Gabardini &lt;a href="http://softwareagil.blogspot.com/"&gt;Software Agil&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;Enlaces y recursos adicionales en &lt;a href="http://msmvps.com/blogs/lopez/archive/2009/08/22/scrum-pr-225-ctico-en-santa-f-233.aspx"&gt;Scrum Práctico&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.agile42.com/cms/pages/cheatsheet/"&gt;Scrum Cheat Sheet&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://es.wikipedia.org/wiki/Archivo:Ficha_scrum.png"&gt;Scrum: Ficha Sinóptica&lt;/a&gt;&lt;/li&gt;  &lt;p&gt;Un libro que para preparar las primeras versiones del curso&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/learning/en/us/book.aspx?ID=6916&amp;amp;locale=en-us"&gt;Agile Project Management with Scrum&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;de Ken Schwaber ISBN:073561993x Microsoft Press © 2004 &lt;/p&gt;  &lt;p&gt;En ese libro, están enumerados estos recursos:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;Agile Software Development with Scrum&lt;/i&gt;, Ken Schwaber and Mike Beedle (Prentice Hall, 2001) &lt;/p&gt;    &lt;p&gt;Teoría y práctica de Scrum. &lt;/p&gt;    &lt;p&gt;&lt;i&gt;&lt;a href="http://www.controlchaos.com/"&gt;www.controlchaos.com/&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;    &lt;p&gt;El sitio de Ken Schwaber sobre Scrum. &lt;/p&gt;    &lt;p&gt;&lt;i&gt;&lt;a href="http://www.jeffsutherland.com/"&gt;http://www.jeffsutherland.com/&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;    &lt;p&gt;Jeff Sutherland tiene contenido relacionado con desarrollo de software, programación, tecnología, objetos, componentes y Scrum. &lt;/p&gt;    &lt;p&gt;&lt;i&gt;&lt;a href="http://www.mountaingoatsoftware.com/scrum/"&gt;www.mountaingoatsoftware.com/scrum/&lt;/a&gt; &lt;/i&gt;&lt;/p&gt;    &lt;p&gt;El sitio de Mike Cohn sobre Scrum. &lt;/p&gt;    &lt;p&gt;&lt;i&gt;&lt;a href="http://www.scrumalliance.org"&gt;www.scrumalliance.org&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;    &lt;p&gt;El hogar de los ScrumMaster certificados. &lt;/p&gt;    &lt;p&gt;&lt;i&gt;&lt;a href="http://www.agilealliance.org"&gt;www.agilealliance.org&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;    &lt;p&gt;El sitio de la AgileAlliance, con recursos sobre Agile y Scrum. &lt;/p&gt;    &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://groups.yahoo.com/group/scrumdevelopment/"&gt;http://groups.yahoo.com/group/scrumdevelopment/&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;El grupo de discusión de Scrum, con años de existencia. &lt;/p&gt;    &lt;p&gt;&lt;i&gt;&lt;a href="http://www.xprogramming.com"&gt;www.xprogramming.com&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;    &lt;p&gt;El sitio de Ron Jeffries acerca de Extreme Programming (XP). XP provee varias de las prácticas que Scrum implementa para asegurar el incremento de funcionalidad potencialmente entregable. &lt;/p&gt; &lt;/blockquote&gt;  &lt;h6&gt;Otras lecturas recomendadas&lt;/h6&gt;  &lt;ul&gt;   &lt;li&gt;Agile and Iterative Development: A Manager’s Guide by Craig Larman &lt;/li&gt;    &lt;li&gt;Agile Estimating and Planning by Mike Cohn &lt;/li&gt;    &lt;li&gt;Agile Retrospectives by Esther Derby and Diana Larsen &lt;/li&gt;    &lt;li&gt;Agile Software Development Ecosystems by Jim Highsmith &lt;/li&gt;    &lt;li&gt;Scrum and The Enterprise by Ken Schwaber &lt;/li&gt;    &lt;li&gt;User Stories Applied for Agile Software Development by Mike Cohn &lt;/li&gt;    &lt;li&gt;Artículos semanales en &lt;a href="http://www.scrumalliance.org"&gt;www.scrumalliance.org&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/tags/Scrum/default.aspx" target="_blank"&gt;Mis posts sobre Scrum&lt;/a&gt; (estoy ahí escribiendo una serie “Tales from the Scrum” donde trato más en detalle algunos puntos que tratamos en el curso).&lt;/p&gt;  &lt;p&gt;Los enlaces que me interesaron los colecciono en:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://delicious.com/ajlopez/scrum"&gt;http://delicious.com/ajlopez/scrum&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/agile"&gt;http://delicious.com/ajlopez/agile&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1743459" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/Scrum/default.aspx">Scrum</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+Agil/default.aspx">Desarrollo Agil</category></item><item><title>Generando un modelo desde la base de datos usando AjGenesis</title><link>http://msmvps.com/blogs/lopez/archive/2009/12/02/generating_2D00_a_2D00_model_2D00_from_2D00_the_2D00_database_2D00_using_2D00_ajgenesis.aspx</link><pubDate>Wed, 02 Dec 2009 11:46:06 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1743328</guid><dc:creator>lopez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1743328</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/12/02/generating_2D00_a_2D00_model_2D00_from_2D00_the_2D00_database_2D00_using_2D00_ajgenesis.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://ajgenesis.codeplex.com" target="_blank"&gt;AjGenesis&lt;/a&gt;, mi proyecto open source de generación de código, usa tareas, templates (plantillas) y un modelo de libre definición, para generar artefactos de texto, en general código fuente, pero también archivos cualesquiera, como configuraciones, definición de proyectos, etc. Muchos de los ejemplos que están en el proyecto y otros que publiqué aparte, usan modelos serializados como archivos XML o de texto. Pero el modelo inicial puede ser cualquier entrada: no sólo esos archivos, sino cualquier fuente de información que nos dé alguna base de modelo. Hasta podemos armar archivos de modelo (recuerden, el modelo lo deciden uds, dónde va, qué tiene, es todo libre) desde otro modelo. Hace unos dos años, escribí &lt;a href="http://msmvps.com/blogs/lopez/archive/2007/11/25/ajgenesis-modelo-desde-la-base-de-datos.aspx" target="_blank"&gt;sobre generar el modelo desde la base de datos&lt;/a&gt;. En mi opinión, la base de datos no es el modelo más expresivo, pero es uno muy ubicuo: puede servir como punto de partida, y desde la base de datos, generar un modelo que podemos refinar posteriormente.&lt;/p&gt;  &lt;p&gt;(sobre el tema de modelos pueden leer &lt;a href="http://msmvps.com/blogs/lopez/archive/2009/06/29/modelos-y-metamodelos-en-ajgenesis.aspx"&gt;Modelos y metamodelos en AjGenesis&lt;/a&gt;: los metamodelos no son necesarios ni obligatorios, pero es un tema que estoy agregando en el proyecto, como opcional).&lt;/p&gt;  &lt;p&gt;(un tipo de modelo a explorar &lt;a href="http://msmvps.com/blogs/lopez/archive/2008/10/03/otro-modelo-para-ajgenesis.aspx"&gt;Otro modelo para AjGenesis&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;Hoy quiero entonces volver sobre el tema de generar un modelo desde otro modelo, esta vez usando el esquema de la base de datos que tengamos entre manos. Es sólo un ejemplo “prueba de concepto”. Pero en el proyecto ágil en que estoy participando, el equipo tomó la base que ya tenían y generó un modelo usando técnicas como las de este ejemplo, usando AjGenesis, y ahora, ya abandonaron la base inicial, y usan directamente el modelo generado alguna vez y refinado desde entonces.&lt;/p&gt;  &lt;p&gt;Pueden bajar el ejemplo actual de mi Skydrive &lt;a href="http://cid-9f903f3d6db0c176.skydrive.live.com/self.aspx/Examples/AjGenesis/DatabaseExample01.zip" target="_blank"&gt;DatabaseExample01.zip&lt;/a&gt;. (el código está en &lt;a href="http://ajgenesis.codeplex.com/SourceControl/ListDownloadableCommits.aspx" target="_blank"&gt;el repositorio de código en Codeplex&lt;/a&gt;, bajo el directorio examples\DatabaseExamples). El .zip de Skydrive tiene todo lo necesario, incluso la versión en desarrollo de AjGenesis ya compilada.&lt;/p&gt;  &lt;p&gt;Despues de bajarlo y expandirlo, tenemos estas carpetas:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.ajlopez.com/images/articles2/ajgenesisdb04.png" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Hay un solo proyecto de ejemplo. EL contenido de Projects\Northwind\Metadata.xml:&lt;/p&gt;  &lt;pre&gt;&lt;pre style="font-size:12px;margin:0px;width:100%;font-family:consolas;background-color:#ffffff;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Metadata&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Project&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Northwind&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Project&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Database&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Northwind&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ConnectionString&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;server=.\SQLEXPRESS;database=Northwind;Integrated Security=true&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ConnectionString&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Database&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Metadata&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Describe el string de conexión a usar para llegar a la base de ejemplo. Estoy usando la Northwind, en SQL Server (pueden usar el full o el express). Si no tienen esa base de datos, los scripts de creación están en el directorio Sql.&lt;/p&gt;

&lt;p&gt;Para generar el proyecto, el modelos con sus entidades, ejecutar:&lt;/p&gt;

&lt;p&gt;&lt;font face="Consolas"&gt;MakeModelFromDatabase.cmd&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;AjGenesis (compilado en el directorio Bin) comienza su trabajo:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://www.ajlopez.com/images/articles2/ajgenesisdb02.png" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;El comando que ejecutamos contiene:&lt;/p&gt;

&lt;p&gt;&lt;font face="Consolas"&gt;Bin\AjGenesis.Console Projects\Northwind\Metadata.xml Tasks\DatabaseProcess.ajg&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;Este comando carga el contenido de Metadata.xml como modelo en memoria, y ejecuta la tarea DatabaseProcess.ajg escrita en el lenguaje dinámico que uso AjBasic. Esta tarea usa las vista de &lt;a href="http://msdn.microsoft.com/en-us/library/ms186778.aspx" target="_blank"&gt;Information Schema&lt;/a&gt; para obtener información acerca de la estructura de la base de datos (usando estas vistas, que están definidas en el estándar SQL, y presentes en varias bases de datos, nos abre la puerta para conseguir trabajar con otras marcas que no sean MS SQL Server; debería probar, por ejemplo, con Oracle).&lt;/p&gt;

&lt;p&gt;La tarea crea el archivo Projects\Northwind\Project.xml:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="font-size:12px;margin:0px;width:100%;font-family:consolas;background-color:#ffffff;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;?&lt;/span&gt;xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;yes&amp;quot;&lt;span style="color:#0000ff;"&gt;?&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Project&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Northwind&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Model&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entities&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;    
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Source&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;Entities/Customer.xml&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;    
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Source&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;Entities/Shipper.xml&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;    
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Source&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;Entities/Supplier.xml&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;    
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Source&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;Entities/Order.xml&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;    
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Source&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;Entities/Product.xml&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;    
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Source&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;Entities/OrderDetail.xml&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;    
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Source&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;Entities/CustomerCustomerDemo.xml&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;    
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Source&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;Entities/CustomerDemographic.xml&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;    
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Source&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;Entities/Region.xml&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;    
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Source&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;Entities/Territory.xml&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;    
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Source&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;Entities/EmployeeTerritory.xml&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;    
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Source&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;Entities/Employee.xml&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;    
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Source&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;Entities/Category.xml&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entities&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Model&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Project&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;El proyecto y las entidades son parecidas a las que usé en &lt;a href="http://msmvps.com/blogs/lopez/archive/2007/06/25/generando-aplicaciones-con-ajgenesis.aspx" target="_blank"&gt;Generando aplicaciones con AjGenesis&lt;/a&gt; (pero no es igual, estoy experimentando con mejoras). Parte del contenido del archivo generado Projects\Northwind\Entities\Customer.xml nos da una idea de lo que se captura de una “Entity”:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="font-size:12px;margin:0px;width:100%;font-family:consolas;background-color:#ffffff;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;?&lt;/span&gt;xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;yes&amp;quot;&lt;span style="color:#0000ff;"&gt;?&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entity&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Customer&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Description&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Customer&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Description&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;SetName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Customers&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Descriptor&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Customer&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Descriptor&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;SetDescriptor&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Customers&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;SetDescriptor&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;SqlCatalog&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Northwind&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;SqlCatalog&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;SqlSchema&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;dbo&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;SqlSchema&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;SqlName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Customers&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;SqlName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Properties&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Property&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;CustomerID&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Description&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;CustomerID&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Description&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;SqlName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;CustomerID&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;SqlName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;SqlLength&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;5&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;SqlLength&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;IsKey&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;True&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;IsKey&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;SqlType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;nchar&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;SqlType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;SystemType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;String&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;SystemType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;IsNullable&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;False&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;IsNullable&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Property&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
....
  &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Properties&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Entity&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;La lógica principal de todo este proceso de generación, reside en la tarea Tasks\DatabaseProcess.ajg, de nuevo escrita en AjBasic (I love this language! :-) un fragmento:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="font-size:12px;margin:0px;width:100%;font-family:consolas;background-color:#ffffff;"&gt;cmd = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; System.Data.SqlClient.SqlCommand()
cmd.Connection = conn
cmd.CommandText = &amp;quot;&lt;span style="color:#8b0000;"&gt;select * from Information_Schema.Tables where Table_Type = &amp;#39;BASE TABLE&amp;#39;&lt;/span&gt;&amp;quot;
conn.Open()
PrintLine &amp;quot;&lt;span style="color:#8b0000;"&gt;Reader&lt;/span&gt;&amp;quot;
dr = cmd.ExecuteReader()
Tables = CreateList()
&lt;span style="color:#0000ff;"&gt;while&lt;/span&gt; dr.Read()
  PrintLine &amp;quot;&lt;span style="color:#8b0000;"&gt;Table &lt;/span&gt;&amp;quot; &amp;amp; dr.Item(&amp;quot;&lt;span style="color:#8b0000;"&gt;Table_Name&lt;/span&gt;&amp;quot;) &amp;amp; &amp;quot;&lt;span style="color:#8b0000;"&gt;: &lt;/span&gt;&amp;quot; &amp;amp; dr.Item(&amp;quot;&lt;span style="color:#8b0000;"&gt;Table_Type&lt;/span&gt;&amp;quot;)
  Table = CreateObject()
  Table.SqlCatalog = dr.Item(&amp;quot;&lt;span style="color:#8b0000;"&gt;Table_Catalog&lt;/span&gt;&amp;quot;)
  Table.SqlSchema = dr.Item(&amp;quot;&lt;span style="color:#8b0000;"&gt;Table_Schema&lt;/span&gt;&amp;quot;)
  Table.SqlName = dr.Item(&amp;quot;&lt;span style="color:#8b0000;"&gt;Table_Name&lt;/span&gt;&amp;quot;)
  Table.Name = Table.SqlName.Replace(&amp;quot;&lt;span style="color:#8b0000;"&gt; &lt;/span&gt;&amp;quot;,&amp;quot;&lt;span style="color:#8b0000;"&gt;&lt;/span&gt;&amp;quot;)
  
  &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; IsPlural(Table.Name) &lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;
    Table.SetName = Table.Name
    Table.Name = ToSingular(Table.Name)
  &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;
    Table.SetName = ToPlural(Table.Name)
  &lt;span style="color:#0000ff;"&gt;end&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;
  
  Table.Descriptor = Table.Name
  Table.SetDescriptor = Table.SetName
  
  Table.Description = Table.Name
  
  Tables.Add(Table)
&lt;span style="color:#0000ff;"&gt;end&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;while&lt;/span&gt;
dr.Close()&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;Posibles mejoras&lt;/h3&gt;

&lt;p&gt;Como escribí más arriba, este ejemplo es una “prueba de concepto”; una versión anterior la usamos en un proyecto real. Pero hay varios puntos a mejorar:&lt;/p&gt;

&lt;p&gt;- Usar el modelo generado para generar una aplicación que funcione, con scaffolding o no.&lt;/p&gt;

&lt;p&gt;- Soportar más metadata que obtengamos via Information Schema&lt;/p&gt;

&lt;p&gt;- Probar con otras marcas de bases de datos, y con bases de datos reales&lt;/p&gt;

&lt;p&gt;- Tratamiento de relaciones: detectar borrados en cascadas, soportar claves primarias compuestas, otras acciones.&lt;/p&gt;

&lt;p&gt;Otros posts relacionados (aparte de los ya mencionados):&lt;/p&gt;

&lt;h6&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2006/11/19/generando-c-digo-hello-world-con-ajgenesis.aspx"&gt;Generando Código: Hello World con AjGenesis&lt;/a&gt;&lt;/h6&gt;

&lt;h6&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2007/11/27/ajgenesis-modelo-generado-desde-los-assemblies.aspx"&gt;AjGenesis: Modelo generado desde los assemblies&lt;/a&gt;&lt;/h6&gt;

&lt;h6&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2008/09/29/modelo-textual-para-generaci-243-n-de-c-243-digo-con-ajgenesis.aspx"&gt;Modelo textual para generación de código con AjGenesis&lt;/a&gt;&lt;/h6&gt;

&lt;p&gt;Si es la primera vez que se topan con generación de código con AjGenesis, &lt;a href="http://msmvps.com/blogs/lopez/archive/tags/AjGenesis/default.aspx" target="_blank"&gt;tengo varios posts escritos&lt;/a&gt;. Recomiendo un video, producido gracias a la comunidad ALT.NET Hispano: &lt;a href="http://msmvps.com/blogs/lopez/archive/2009/10/27/resultado-de-la-van-alt-net-hispano-sobre-generaci-243-n-de-c-243-digo.aspx"&gt;Resultado de la VAN ALT.NET Hispano sobre Generación de Código&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nos leemos!&lt;/p&gt;

&lt;p&gt;Angel “Java” Lopez 
  &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;

  &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1743328" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/Generaci_26002300_243_3B00_n+de+C_26002300_243_3B00_digo/default.aspx">Generaci&amp;#243;n de C&amp;#243;digo</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/AjGenesis/default.aspx">AjGenesis</category></item><item><title>ALT.NET Hispano VAN: Mocking, Rhino Mocks, Moq con Hadi Hariri</title><link>http://msmvps.com/blogs/lopez/archive/2009/11/27/alt-net-hispano-van-mocking-rhino-mocks-moq-con-hari-hariri.aspx</link><pubDate>Fri, 27 Nov 2009 11:29:34 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1742471</guid><dc:creator>lopez</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1742471</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/11/27/alt-net-hispano-van-mocking-rhino-mocks-moq-con-hari-hariri.aspx#comments</comments><description>&lt;p&gt;Este sábado 28 de noviembre, la &lt;a href="http://altnet-hispano.pbworks.com" target="_blank"&gt;comunidad ALT.NET Hispano&lt;/a&gt; organiza una nueva VAN (Reunión virtual). Esta vez el horario (tomen nota) será 19:00 GMT/UTC (4 de la tarde por aquí en Buenos Aires, Argentina). El tema será el uso de Mocks, en nuestras pruebas automatizadas. La presentación del tema estará a cargo del bueno de Hadi Hariri (que pueden seguir en Twitter en &lt;a href="http://twitter.com/hhariri" target="_blank"&gt;@hhariri&lt;/a&gt;). Hadi vive en España, se presenta en su sitio:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://hadihariri.com" href="http://hadihariri.com"&gt;http://hadihariri.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;de esta manera:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;I&amp;#39;m a software developer and work as Tech Lead for &lt;/em&gt;&lt;a href="http://www.imeta.com"&gt;&lt;em&gt;iMeta Technologies&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. I also give talks and presentations. I love to travel and luckily get to do so when speaking at conferences. My main passions are Software Architecture, Web and TCP/IP development. I live in Málaga, with my wife Katya and my two wonderful sons, Maxim and Sasha. I run the local .NET User group for Málaga and the province. If you live in Málaga or are visiting, drop me a line.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Pueden leer sobre sus conferencias e intereses en:   &lt;br /&gt;&lt;a title="http://hadihariri.com/blogengine/page/Conferences.aspx" href="http://hadihariri.com/blogengine/page/Conferences.aspx"&gt;http://hadihariri.com/blogengine/page/Conferences.aspx&lt;/a&gt;    &lt;br /&gt;&lt;a title="http://hadihariri.com/blogengine/archive.aspx" href="http://hadihariri.com/blogengine/archive.aspx"&gt;http://hadihariri.com/blogengine/archive.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;El enlace a usar es &lt;a href="http://snipr.com/virtualaltnet"&gt;http://snipr.com/virtualaltnet&lt;/a&gt;. La información sobre las VAN que vienen, están en la página del &lt;a href="http://altnet-hispano.pbworks.com/Calendario" target="_blank"&gt;Calendario de ALT.NET Hispano&lt;/a&gt;. Ahí leo más detalles sobre esta reunión de mañana sábado:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;La comunidad ALT.NET Hispano (&lt;/em&gt;&lt;a href="http://altnethispano.org)"&gt;&lt;em&gt;http://altnethispano.org)&lt;/em&gt;&lt;/a&gt;&lt;em&gt; realizará un evento virtual con el tema &amp;quot;Mocking&amp;quot; (e &amp;quot;Inyección de Dependencias&amp;quot;), a cargo de Hadi Hariri. Fecha: Sábado 28 de Noviembre a las 19:00 hrs. Hora Internacional (GMT/UTC), con una duración aproximada de 2 horas.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Lugar: Para atender la reunión deben usar el enlace: &lt;/em&gt;&lt;a href="http://snipr.com/virtualaltnet"&gt;&lt;em&gt;http://snipr.com/virtualaltnet&lt;/em&gt;&lt;/a&gt;&lt;em&gt; el cual les demandará el uso del programa Microsoft Office Live Meeting 2007 Client. En esta ocasión la desconferencia estará a cargo de Hadi Hariri, Visual C# MVP, quien es consultor y desarrollador ante todo, así como apasionado de la arquitectura de software y el desarrollo de aplicaciones web. Es ponente habitual en conferencias sobre .NET y Win32, y ha escrito numerosas publicaciones. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Descripción: En esta charla primero repasaremos la inyección de dependencias e Inversión de Control y profundizaremos en los frameworks de Mocks. Veremos cómo funcionan, éstos últimos, así como también cómo sacarle el máximo de partida a ellos para hacer tests sostenibles. Examinaremos las diferencias entre Mocks y Stubs así como diferencias entre pruebas de estado e interacción. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Algunas páginas a revisar:&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://martinfowler.com/articles/injection.html" target="_blank"&gt;&lt;em&gt;Inversion of Control Containers and the Dependency Injection pattern&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://hadihariri.com/blogengine/post/2008/09/11/Mocks-can-be-your-friend-or-your-worst-nightmare.aspx" target="_blank"&gt;&lt;em&gt;Mocks can be your friend, or your worst nightmare&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://martinfowler.com/articles/mocksArentStubs.html" target="_blank"&gt;&lt;em&gt;Mocks Aren&amp;#39;t Stubs&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://ayende.com/projects/rhino-mocks.aspx" target="_blank"&gt;&lt;em&gt;Rhino Mocks&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://code.google.com/p/moq" target="_blank"&gt;&lt;em&gt;Moq&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.typemock.com/" target="_blank"&gt;&lt;em&gt;TypeMock&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.nmock.org/" target="_blank"&gt;&lt;em&gt;NMock&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Pueden plantear sus comentarios e inquietudes sobre el tema de la reunión en: &lt;/em&gt;&lt;a href="http://groups.google.com/group/altnet-hispano/t/57766b68494fe859"&gt;&lt;em&gt;http://groups.google.com/group/altnet-hispano/t/57766b68494fe859&lt;/em&gt;&lt;/a&gt;&lt;em&gt; Para mayor información sobre cómo atender la reunión consulten: &lt;/em&gt;&lt;a href="http://tinyurl.com/van-hispano"&gt;&lt;em&gt;http://tinyurl.com/van-hispano&lt;/em&gt;&lt;/a&gt;&lt;em&gt; Pueden vincular el Google Calendar al suyo (&lt;/em&gt;&lt;a href="http://screenr.com/nr7)"&gt;&lt;em&gt;http://screenr.com/nr7)&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, o bien descargar el iCal de este evento en particular: &lt;/em&gt;&lt;a href="http://altnet-hispano.pbworks.com/f/VAN20091128.ics"&gt;&lt;em&gt;http://altnet-hispano.pbworks.com/f/VAN20091128.ics&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Si no conocen qué es una reunión VAN, pueden consultar &lt;a href="http://www.zachariahyoung.com/zy/post/2009/01/Introduction-to-Virtual-ALTNET.aspx"&gt;VAN meetings&lt;/a&gt;. Para ver cómo se desarrolla una VAN de ALT.NET Hispano, y qué software necesitan para asistir, ver &lt;a href="http://altnet-hispano.pbworks.com/Descripcion-de-Reuniones-VAN"&gt;Descripcion-de-Reuniones-VAN&lt;/a&gt;. Pueden ver &lt;a href="http://altnet-hispano.pbworks.com/Historial-de-reuniones"&gt;el historial de anteriores reuniones VAN&lt;/a&gt; (visiten las que dieron, por ejemplo, sobre NHibernate, WPF y demás) (yo participé en &lt;a href="http://msmvps.com/blogs/lopez/archive/2009/09/18/resultado-de-la-van-en-alt-net-hispano-sobre-scrum.aspx"&gt;VAN sobre Scrum&lt;/a&gt; y en otra &lt;a href="http://msmvps.com/blogs/lopez/archive/2009/10/27/resultado-de-la-van-alt-net-hispano-sobre-generaci-243-n-de-c-243-digo.aspx"&gt;sobre generación de código&lt;/a&gt;). También pueden suscribirse para proponer nuevos temas, y colaborar con la comunidad. Si no pueden asistir a ésta VAN, seguramente quedará publicada más adelante, con video incluido.&lt;/p&gt;  &lt;p&gt;Con respecto a Mocks, y librerías de mocking, he dejado enlaces en:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://delicious.com/ajlopez/mocks" href="http://delicious.com/ajlopez/mocks"&gt;http://delicious.com/ajlopez/mocks&lt;/a&gt;    &lt;br /&gt;&lt;a title="http://delicious.com/ajlopez/rhino" href="http://delicious.com/ajlopez/rhino"&gt;http://delicious.com/ajlopez/rhino&lt;/a&gt;    &lt;br /&gt;&lt;a title="http://delicious.com/ajlopez/moq" href="http://delicious.com/ajlopez/moq"&gt;http://delicious.com/ajlopez/moq&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1742471" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Patrones/default.aspx">Patrones</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/ALT.NET/default.aspx">ALT.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/TDD/default.aspx">TDD</category></item><item><title>Lo bello de Twitter: Ejemplo 1</title><link>http://msmvps.com/blogs/lopez/archive/2009/11/22/the_2D00_beauty_2D00_of_2D00_twitter_2D00_example_2D00_1.aspx</link><pubDate>Sun, 22 Nov 2009 09:31:11 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1741510</guid><dc:creator>lopez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1741510</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/11/22/the_2D00_beauty_2D00_of_2D00_twitter_2D00_example_2D00_1.aspx#comments</comments><description>&lt;p&gt;Soy un gran usuario de Twitter. Generalmente, uso TweetDeck como cliente, aunque a veces voy por la interfaz web. Twitter es la implementación de un idea simple (mensajes cortos, podemos seguir a quien querramos que tenga perfil público, nos pueden seguir y dejar de seguir en cualquier momento (noten los cambios de Facebook a tener perfiles públicos, veo que motivados por la facilidad que se da en Twitter)) Todo eso ha cambiado la forma en que interactuamos. En especial, en el ambiente del desarrollo del software, Twitter es un gran complemente (podría ser un reemplazo) a los lectores de feeds. Veamos un ejemplo de lo efectivo que puede ser.&lt;/p&gt;  &lt;p&gt;Todo comenzó ayer sábado, con un mensaje de &lt;a href="mailto:de@jfroma" target="_blank"&gt;@jfroma&lt;/a&gt;, desarrollador de software argentino, como yo, que escribía:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.todocontenidos.com/images/articles/twitterexample05.png" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Yo no había leído todos sus mensajes del viernes, así, que curioso sobre ese comentario, fuí y los leí. El mensaje original aludía al patró Model View View Model. Sé que José (&lt;a href="http://twitter.com/jfroma" target="_blank"&gt;@jfroma&lt;/a&gt;) ha estado trabajando en ejemplos de &lt;a href="http://jfromaniello.blogspot.com/search/label/WPF" target="_blank"&gt;data binding en WPF&lt;/a&gt; usando modelos recuperados con NHibernate, así que seguí el link que apuntaba al usuario &lt;a href="http://twitter.com/michaellperry" target="_blank"&gt;@michaellperry&lt;/a&gt;, para leer sus mensajes. Era mi primer contacto con Michael:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.todocontenidos.com/images/articles/twitterexample08.png" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Encontré, entre sus mensajes del viernes, esta presentació:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.notatpdc.com/Schedule/Detail/50" target="_blank"&gt;Session Detail: Data binding without INotifyPropertyChanged&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;preguntando para confirmar a &lt;a href="http://twitter.com/jfroma" target="_blank"&gt;@jfroma&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.todocontenidos.com/images/articles/twitterexample06.png" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Ahora, tenía más contexto (una frase que repito muchas veces: con contexto, uno se puede manejar más entre la información que recibe). Con todo esto, descubro los intereses de Michael en su blog (noten cómo Michael usa su estado Twitter a la izquierda):&lt;/p&gt;  &lt;p&gt;&lt;a title="http://adventuresinsoftware.com/blog" href="http://adventuresinsoftware.com/blog"&gt;http://adventuresinsoftware.com/blog&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.todocontenidos.com/images/articles/twitterexample09.png" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Descubrí la librería de código abierto de la presentación de Michael:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://updatecontrols.net" href="http://updatecontrols.net"&gt;http://updatecontrols.net&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.todocontenidos.com/images/articles/twitterexample10.png" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Como siempre que encuentro algo interesante, ya sea para mí, o que pienso que puede ser interesante para alguien, comencé a tweetear sobre el tema. Al rato, veo que &lt;a href="http://twitter.com/jyinglee" target="_blank"&gt;@jyinglee&lt;/a&gt; desde China, también tomó nota, haciendo RT de mi mensaje:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.todocontenidos.com/images/articles/twitterexample07.png" alt="" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Todo comenzó con un simple mensaje. Este es el poder de Twitter, es“serendipity with help” (descubrimiento accidental con ayuda), con la ayuda de gente interesante que nos sigue y a la que seguimos.&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez    &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1741510" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Twitter/default.aspx">Twitter</category></item><item><title>Alt.Net Hispano VAN, ASP.NET MVC 2 con estilo, de Oxite a CodeCamp</title><link>http://msmvps.com/blogs/lopez/archive/2009/11/19/alt-net-hispano-van-asp-net-mvc-2-con-estilo-de-oxite-a-codecamp.aspx</link><pubDate>Thu, 19 Nov 2009 12:08:52 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1740732</guid><dc:creator>lopez</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1740732</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/11/19/alt-net-hispano-van-asp-net-mvc-2-con-estilo-de-oxite-a-codecamp.aspx#comments</comments><description>&lt;p&gt;Este sábado 21 de Noviembre, tendremos VAN (reunión virtual) organizada por la comunidad ALT.NET Hispano. El tema será ASP.NET MVC, en particular, la versión 2. Como siempre, la reunión no será sólo una exposición, sino también discusión, preguntas, ejemplos, recursos, opiniones. Hasta donde sé, el horario es el de siempre 5:00pm GMT (2 de la tarde acá en Buenos Aires). Y en enlace a usar es &lt;a title="http://snipr.com/virtualaltnet" href="http://snipr.com/virtualaltnet"&gt;http://snipr.com/virtualaltnet&lt;/a&gt; (más detalle sobre software y qué es una VAN al final de este post).&lt;/p&gt;  &lt;p&gt;La presentación inicial estará a cargo de Cristian Prieto, Microsoft ASP.NET MVP, MCPD ASP.NET Web Development Applications 3.5, MCTS Workflow Foundation 3.5:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.cprieto.com/" href="http://www.cprieto.com/"&gt;http://www.cprieto.com/&lt;/a&gt; (me gusta el título “IDisposable Thoughts” :-)&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.todocontenidos.com/images/articles/cprieto01.png" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Hi, My name is Cristian Prieto, I&amp;#39;m a Senior Software Developer living in Guatemala, Central America. I mainly &amp;quot;speak&amp;quot; in .Net languages (like C#, F# and _even_ VB.NET) but I really love programming in Python/Ruby/Erlang. When I&amp;#39;m not programming (or speaking at a .net user group) I enjoy reading and spend my life with my beautiful wife (Emy) and my three cats: Cocco, Motto and Chester&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Pueden seguirlo en Twitter como &lt;a href="http://twitter.com/cprieto" target="_blank"&gt;@cprieto&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.todocontenidos.com/images/articles/cprieto02.png" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;y en LinkedIn como &lt;a title="http://www.linkedin.com/in/cprieto" href="http://www.linkedin.com/in/cprieto"&gt;http://www.linkedin.com/in/cprieto&lt;/a&gt;. Ahí leemos su experiencia:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;- Experienced Web Developer with more than 9 years in technologies like ASP.NET, PHP, Python, JavaScript and distributed programming.     &lt;br /&gt;- Agile software developer proficient with patterns and best practices like Test Driven Development, Behavior Driven Development and Continuous Integration.      &lt;br /&gt;- Lover of agile process based development like Lean Development, Kanban and Scrum.      &lt;br /&gt;- Technical Community Leader, mentor of new development trends and best practices. Awarded Microsoft ASP.NET MVP 2009      &lt;br /&gt;- Accustomed to work with many languages and tools.      &lt;br /&gt;- Self-thought and early adopter &lt;/em&gt;&lt;/p&gt;  &lt;h5&gt;&lt;em&gt;Cristian Prieto’s Specialties:&lt;/em&gt;&lt;/h5&gt;  &lt;p&gt;&lt;em&gt;ASP.NET, SQL Server, Web Development in general     &lt;br /&gt;Python, Best practices, Multi tier application development, Agile development (lean, kanban, scrum) &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Escribe el bueno de Cristian &lt;a href="http://groups.google.com/group/altnet-hispano/t/6cd63a245ee45d60?hl=es" target="_blank"&gt;en la lista de ALT.NET Hispano&lt;/a&gt;, cuál va a ser el tema de la charla:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Como ustedes recordaran, este sábado 21 de noviembre tendremos la VAN acerca de &lt;/em&gt;&lt;a href="http://ASP.NET"&gt;&lt;em&gt;ASP.NET&lt;/em&gt;&lt;/a&gt;&lt;em&gt; MVC 2, quería comentar un poco de que esperar para esta VAN (bueno, quizás también por parte del nerviosismo de ser mi primera VAN :P)     &lt;br /&gt;&lt;/em&gt;&lt;a href="http://ASP.NET"&gt;&lt;em&gt;ASP.NET&lt;/em&gt;&lt;/a&gt;&lt;em&gt; MVC fue &amp;quot;cocinado&amp;quot; durante 1 año y mientras tanto nos mantubieron pegados a la silla con 5 CTP&amp;#39;s y un par de betas... después de varios meses hemos visto aplicaciones en producción con la plataforma, 5 libros acerca del tema, muchos y muchos webcasts (hay 2 en &lt;/em&gt;&lt;a href="http://alt.net"&gt;&lt;em&gt;alt.net&lt;/em&gt;&lt;/a&gt;&lt;em&gt; hispano :D) y conferencias de &amp;quot;cómo explotarla&amp;quot;, multiples proyectos de ejemplo.... y, obviamente, muchas preguntas luego de hacer el &amp;quot;hola mundo&amp;quot;.     &lt;br /&gt;¿Qué pasa cuando necesitamos algo más que el típico proyecto de NerdDinner? ¿Qué pasa cuando mi aplicación realmente no es un típico ejemplo? ¿Dónde pongo la lógica? ¿Cómo divido y saco provecho de la framework? ¿Qué otras cosas podemos tener bajo la manga para hacernos la vida más sencilla?      &lt;br /&gt;Para aclarar estas dudas, examinaremos desde el punto de vista histórico y práctico con qué solemos comenzar y hasta dónde lo podemos llevar, mencionando cosas como MvcContrib y MvcTurbine y dónde encajan cosas como SharpArchitecture en todo esto...      &lt;br /&gt;¿Porqué menciono todo esto si la charla es de &lt;/em&gt;&lt;a href="http://ASP.NET"&gt;&lt;em&gt;ASP.NET&lt;/em&gt;&lt;/a&gt;&lt;em&gt; MVC 2?, simple, porque gran parte de los &amp;quot;problemas&amp;quot; que solemos encontrarnos con &lt;/em&gt;&lt;a href="http://ASP.NET"&gt;&lt;em&gt;ASP.NET&lt;/em&gt;&lt;/a&gt;&lt;em&gt; MVC vienen o prometen venir solucionados en la &amp;quot;cajita&amp;quot; de la versión 2...     &lt;br /&gt;Espero verlos en la VAN, y espero que les guste lo que he preparado :)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Todo indica que va a ser una VAN muy interesante: el título del mensaje (y de este post) alude a un proyecto “fracaso” Oxite, con código disponibl, que fue critica por la comunidad por los “bad smell” que presentaba en la implementación, y a &lt;a href="http://code.google.com/p/codecampserver/" target="_blank"&gt;CodeCamp&lt;/a&gt;, un nuevo proyecto de código abierto, que sirve de muestra de mejores prácticas con &lt;a href="http://www.asp.net/mvc" target="_blank"&gt;ASP.NET MVC&lt;/a&gt; (&lt;a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller" target="_blank"&gt;Model View Controller&lt;/a&gt;). Cristian menciona también a proyectos como &lt;a href="http://code.google.com/p/sharp-architecture/" target="_blank"&gt;SharpArchitecture&lt;/a&gt;, &lt;a href="http://www.codeplex.com/MVCContrib" target="_blank"&gt;MvcContrib&lt;/a&gt; y &lt;a href="http://mvcturbine.codeplex.com/" target="_blank"&gt;MvcTurbine&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Si no conocen qué es una reunión VAN, pueden consultar &lt;a href="http://www.zachariahyoung.com/zy/post/2009/01/Introduction-to-Virtual-ALTNET.aspx"&gt;VAN meetings&lt;/a&gt;. Para ver cómo se desarrolla una VAN de ALT.NET Hispano, y qué software necesitan para asistir, ver &lt;a href="http://altnet-hispano.pbworks.com/Descripcion-de-Reuniones-VAN"&gt;Descripcion-de-Reuniones-VAN&lt;/a&gt;. Pueden ver &lt;a href="http://altnet-hispano.pbworks.com/Historial-de-reuniones"&gt;el historial de anteriores reuniones VAN&lt;/a&gt; (visiten las que dieron, por ejemplo, sobre NHibernate, WPF y demás) (yo participé en &lt;a href="http://msmvps.com/blogs/lopez/archive/2009/09/18/resultado-de-la-van-en-alt-net-hispano-sobre-scrum.aspx"&gt;VAN sobre Scrum&lt;/a&gt; y en otra &lt;a href="http://msmvps.com/blogs/lopez/archive/2009/10/27/resultado-de-la-van-alt-net-hispano-sobre-generaci-243-n-de-c-243-digo.aspx" target="_blank"&gt;sobre generación de código&lt;/a&gt;). Supongo (pero confirmen) que la URL de entrada de esta VAN será &lt;a href="http://snipr.com/virtualaltnet"&gt;http://snipr.com/virtualaltnet&lt;/a&gt;. Cualquier cosa, pueden consultar &lt;a href="http://groups.google.com/group/altnet-hispano/"&gt;la lista de correo de ALT.NET Hispano&lt;/a&gt;. También pueden suscribirse para proponer nuevos temas, y colaborar con la comunidad. Si no pueden asistir a ésta VAN, seguramente quedará publicada más adelante, con video incluido.&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1740732" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+Web/default.aspx">Desarrollo Web</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/ALT.NET/default.aspx">ALT.NET</category></item><item><title>Curso de Scrum práctico en Buenos Aires</title><link>http://msmvps.com/blogs/lopez/archive/2009/11/17/curso-de-scrum-pr-225-ctico-en-buenos-aires.aspx</link><pubDate>Tue, 17 Nov 2009 13:39:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1740238</guid><dc:creator>lopez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1740238</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/11/17/curso-de-scrum-pr-225-ctico-en-buenos-aires.aspx#comments</comments><description>&lt;p&gt;En general no anuncio los cursos que estoy por dar (la difusión queda a cargo de cada institución), pero este es un curso que quiero destacar, porque trata de un tema que pienso que todo grupo de desarrolladores por lo menos tendría que conocer y practicar en algún momento. Es un curso que hace unos meses que no estoy dando por Buenos Aires, y siempre he tenido buenas experiencias dándolo.&lt;/p&gt;  &lt;p&gt;Gracias a la gente del Microsoft User Group de Argentina, daré un curso de Scrum con una explicación inicial, y luego todo práctica, el miércoles 2 de diciembre de 2009. Pueden ver más datos, costos, y forma de inscribirse en:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.mug.org.ar/Eventos/3400.aspx" target="_blank"&gt;Jornada de Scrum, teoría y práctica&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;El contenido (lo copio de ahí):&lt;/p&gt;  &lt;p&gt;&lt;em&gt;- El Equipo de trabajo. Los Roles: ScrumMaster. Product Owner. Daily Scrum. Chickens y Pigs. ScrumMaster vs Project Manager.      &lt;br /&gt;- Objetivos: Control empírico del proceso de desarrollo. Dar visibilidad de lo que se está haciendo. Generar una relación de confianza y comunicación constante entre el cliente y el equipo.       &lt;br /&gt;- Los Conceptos: Iteraciones. Autoorganización. Descripción del método.      &lt;br /&gt;- La Documentación: Qué es, cómo se arman y cómo se utilizan el Product Backlog, el Sprint Backlog y Burndown Chart.       &lt;br /&gt;- La Práctica: Se formarán equipos de trabajo, que resolverán un caso práctico. Se asignarán los roles y se discutirá cada caso en particular, buscando arribar a la solución al final de la jornada.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Lo importante es el trabajo práctico. Iremos descubriendo juntos algunas características, prácticas, y el por qué de cada cosa, en el marco de trabajo Scrum.&lt;/p&gt;  &lt;p&gt;Para los que no puedan asistir, recuerden que siempre escribo por acá sobre el tema en &lt;a href="http://msmvps.com/blogs/lopez/archive/tags/Scrum/default.aspx" target="_blank"&gt;posts sobre Scrum&lt;/a&gt;. Ahí encontraran un varios posts, con enlaces, referencias, presentaciones, sobre el tema Scrum y ágil en general. Los posts primeros a revisar, con material relacionado, incluso un video de una charla y discusión sobre el tema, en:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2009/09/18/resultado-de-la-van-en-alt-net-hispano-sobre-scrum.aspx" target="_blank"&gt;Resultado de la VAN en ALT.NET Hispano sobre Scrum&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2008/09/04/scrum-pr-225-ctico.aspx" target="_blank"&gt;Scrum Práctico&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2009/08/22/scrum-pr-225-ctico-en-santa-f-233.aspx" target="_blank"&gt;Scrum Práctico en Santa Fe&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2008/07/03/explicando-scrum.aspx" target="_blank"&gt;Explicando Scrum&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1740238" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/Scrum/default.aspx">Scrum</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+Agil/default.aspx">Desarrollo Agil</category></item><item><title>Tales from the Scrum: La esencia de Scrum</title><link>http://msmvps.com/blogs/lopez/archive/2009/11/16/tales-from-the-scrum-la-esencia-de-scrum.aspx</link><pubDate>Mon, 16 Nov 2009 09:14:45 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1739964</guid><dc:creator>lopez</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1739964</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/11/16/tales-from-the-scrum-la-esencia-de-scrum.aspx#comments</comments><description>&lt;p&gt;En esta serie de post, aún falta que escriba describiendo de principio a fin lo que es Scrum. Para llegar a ese punto, primero quiero compartir con Uds. esta traducción de un post de &lt;a href="http://agilethinking.net/aboutme.html" target="_blank"&gt;Tobias Mayer&lt;/a&gt;, quien fue mi instructor de Scrum Mastering en 2006. El post original, en inglés, lo encuentran en:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://agilethinking.net/essence-of-scrum.html" target="_blank"&gt;Essence of Scrum&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Acá va mi traducción:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Scrum comenzó su vida como uno de las nuevas formas Agiles para construir software. En estos días, se lo considera una forma que puede ser usada para mejorar el mundo del trabajo, en un sentido más general, y así, cambiar la forma en que los individuos piensan e interactúan con otros en situaciones de trabajo. El potencial completo de Scrum está por explorar.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;En resumen, Scrum es una manera simple de manejar problemas complejos, proveyendo un marco de trabajo para soportar la innovación y permitir que equipos auto-organizados entreguen resultados de alta calidad en tiempos cortos. Scrum es un estado de la mente; en una manera de pensar que libera el espíritu creativo mientras se mantiene firmemente apoyado en principio sólidos y largamente respetados, incluyendo el empirismo, la emergencia y la auto-organización.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Empirismo&lt;/strong&gt; se refiere al proceso continuo de inspeccionar/adaptar que permite que tanto trabajadores como gerentes tomen decisiones en tiempo real, basado en datos actuales, y como resultado, puedan responder rápidamente a&amp;#160; condiciones siempre cambiantes que se presentan en el ambiente, como por ejemplo, el mercado donde el software a construir es vendido o distribuido.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;La &lt;strong&gt;Emergencia&lt;/strong&gt; surge de una aproximación empírica. Implica que todas las soluciones a todos los problemas se volverán claros a medida que trabajamos. No se volverán claros si simplemente hablamos de ellos. El “Big Up Front Design” (gran diseño de antemano) sólo producirá un “Big Wrong Design” (gran diseño erróneo) o a lo sumo un “Big Working But Totally Inflexible Design” (gran diseño que funciona pero totalmente inflexible). Cuando permitimos que las soluciones emerjan es siempre la solución más simple y apropiada, para el contexto actual, la que sube a la superficie. La emergencia junto con el empirismos nos guiaran a la solución más apropiada y flexible (es decir, que podemos cambiar).&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Auto-organización&lt;/strong&gt; se refiere a la estructura de los equipos que crean el producto. Se les da poder a pequeños equipos multidisciplinarios para que puedan tomar decisiones importantes, necesarias para 1) crear un producto de alta calidad, y 2) manejar su propio proceso. Acá la idea es que aquellos que hacen el trabajo conocen mejor que nadie cómo hacer el trabajo. Estos equipos trabajan de una manera altamente interactiva y generativa, donde el producto emerge del diálogo continuo, de la exploración e iteración. La auto-organización funciona cuando hay objetivos y límites claros.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Además de estos principios, Scrum se apoya en dos mecanismos principales: priorización y “timeboxing” (poner límites de tiempo a una tarea).&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Priorización&lt;/strong&gt; simplemente significa que hay cosas que son más importantes que otras. Esto es tan obvio que se olvida muchas veces cuando pensamos “necesitamos esto AHORA”. Scrum nos ayuda a poner el foco de vuelta en seleccionar cuáles son las cosas más importantes a hacer primero, y entonces, a hacerlas! Tomándose el tiempo para priorizar, y siendo rigurosos sobre eso, es esencial para el éxito de Scrum.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Timeboxing es un mecanismo simple para manejar la complejidad. No podemos imaginar el slistema completo de una vez, todo junto, entonces, tomamos un pequeño problema y en un corto espacio de tiempo, digamos una semana o un mes, trabajamos en solucionar ese problema. Los resultados de esa acción nos guiaran entonces a una solución para el próximo problema, más grande, y nos dará más conocimiento sobre las necesidades del sistema en conjunto.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Cambio organizacional&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Con Scrum, las jerarquías de gerencia de las organizaciones tienden a ser niveladas y los equipos de desarrollo tienen más contacto directo e inmediato con los clientes. El ambiente de trabajo se vuelve menos “comandar-y-controlar” hacia un estilo más colaborativo. Se promueve el diálogo regular y abierto sobre la documentación extensiva, y el acuerdo negociado es preferido a los contratos de trabajo formales e impersonales.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Las cualidades de apertura, honestidad y coraje son fomentadas en todos los niveles, y la ganancia individual se vuelve secundaria ante el avance colectivo. Un ambiente Scrum es uno que soporta a la gente, donde las personas de todos los niveles muestran respeto y confianza entre ellos. Las decisiones se toman por consenso, más que por imposición de alguien de más arriba, y todo el conocimiento es compartido, de una manera transparente y sin recelos.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Scrum va en contra de lo que hacen muchas compañías de la industria del software, donde una forma en fases acoplada con un alto grado de micro-gerenciamiento, y una insistencia en procesos definidos y documentación extensiva, se han hecho la norma por treinta años. Muchas compañías se basan en el miedo y el dinero como motivaciones claves para sus trabajadores. Esta forma de trabajo ha mostrado éxitos a corto plazo, pero más y más compañías están comenzando a entender que no es una buena estrategia para el largo palzo. Sin embargo, el concepto de cambiar a algo tan radical como Scrum aterroriza a muchos corazones de ejecutivos y gerentes de nivel medio.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Scrum está aún en la etapa de los “early-adopter” (los que abrazan tempranamente las nuevas ideas). Tomará muchos años para que la mayoría de las compañías reconozcan los beneficios de crear más lugares de trabajo, llenos de confianza. Sin ese cambio, muchas compañías de software se irán hundiendo bajo el peso de sus procesos pesados, y fuerzas de trabajo sobrecargadas. Otros, aquellos que abracen el método liviano, ágil, de Scrum, tendrán la gran oportunidad de sobrevivir y prosperar. Para aquellos que pasen a Scrum, y lo abracen completamente, la vuelta atrás a a los viejos días de trabajo será impensable. Un cambio de paradigma está ocurriendo en el lugar de trabajo, y Scrum es una parte importante de ese cambio.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Nota: el término Scrum proviene de un “paper” titulado &lt;/em&gt;&lt;a href="http://harvardbusinessonline.hbsp.harvard.edu/b02/en/common/item_detail.jhtml?id=86116" target="_blank"&gt;&lt;em&gt;The New New Product Development game&lt;/em&gt;&lt;/a&gt;&lt;em&gt; de Hirotaka Takeuchi y Ikujiro Nonaka. En rugby, un scrum es una forma de recomenzar el juego, luego de una infracción accidental o después que la pelota salió de juego. La práctica de Scrum en el mundo del software incluye reuniones regulares diarias y cortas donde los miembros del equipo se juntan para comunicar su progreso. Debido a la similitud entre la pausa del juego (trabajo), y habiendo los jugadores (miembros del equipo) armado la reunión, ésta se conoce comúnmente como el Daily Scrum. Jeff Sutherland, John Scumniotales y Jeff McKenna son los responsables de haber introducido el término Scrum en el mundo del desarrollo del software en 1993, mientras trabajaban en la Easel Corporation, una compañía de herrmientas de software de Massachusetts. Ken Schwaber escribió el “paper” original sobre Scrum, &lt;/em&gt;&lt;a href="http://jeffsutherland.com/oopsla/schwapub.pdf" target="_blank"&gt;&lt;em&gt;SCRUM Development Process&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, que fue presentado en la conferencia OOPSLA en 1995.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Otras referencias:      &lt;br /&gt;&lt;/em&gt;&lt;a href="http://agilethinking.net/blog/2008/09/26/scrum-its-place-in-the-world/" target="_blank"&gt;&lt;em&gt;Scrum: its place in the world&lt;/em&gt;&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://mountaingoatsoftware.com/scrum" target="_blank"&gt;&lt;em&gt;Scrum for Software Development&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Gracias a Tobias por tan buena descripción de Scrum.&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez    &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1739964" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/Scrum/default.aspx">Scrum</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+Agil/default.aspx">Desarrollo Agil</category></item><item><title>Smalltalks 2009 en Buenos Aires: Una conferencia pensada para vos</title><link>http://msmvps.com/blogs/lopez/archive/2009/11/12/smalltalks-2009-en-buenos-aires-una-conferencia-pensada-para-vos.aspx</link><pubDate>Thu, 12 Nov 2009 11:02:43 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1739209</guid><dc:creator>lopez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1739209</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/11/12/smalltalks-2009-en-buenos-aires-una-conferencia-pensada-para-vos.aspx#comments</comments><description>&lt;p&gt;Ya había publicado el anuncio de este evento en:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2009/11/01/smalltalks-2009-en-buenos-aires.aspx" target="_blank"&gt;Smalltalks 2009 en Buenos Aires&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Puede ver más detalle en el sitio del evento:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.fast.org.ar/smalltalks2009"&gt;Smalltalks 2009&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Y en mi post, encontrarán enlaces y detalles de algunos de los participantes de esta tercera edición de estas conferencias y reuniones, armadas por la comunidad smalltalkera de Argentina.&lt;/p&gt;  &lt;p&gt;Me pareció interesante publicar este email que recibí en una lista, donde la gente organizadora explica más en detalle los eventos, y el interés que tienen para los desarrolladores de software, sean o no del ambiente Smalltalk:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;¿Querés conocer cómo se gestó la programación orientada a Objetos? ¿Te gustaría conocer en persona a uno de aquellos locos que revolucionaron la computación en la década del 70 en Xerox Parc junto al Turing Award Alan Kay?, entonces tenés que venir a Smalltalks 2009 a ver la charla de Dan Ingalls sobre &amp;quot;40 Years of Fun with Computers&amp;quot; y la sesión de preguntas y respuestas denominada &amp;quot;A fireside chat with Dan Ingalls&amp;quot;&lt;/p&gt;    &lt;p&gt;¿Querés conocer qué es lo último que se está haciendo de investigación en objetos, realmente distinto y novedoso?, entonces tenés que venir a Smalltalks 2009 y ver la presentación de Stephane Ducasse &amp;quot;I have a dream... let&amp;#39;s make it came true&amp;quot; y la presentación de Alex Warth&amp;#160; &amp;quot;&lt;a name="124de675c5e9d19d_124dd8549b88a0f0_124dd8270abdaf63_13644"&gt;Implementing programming languages for fun and profit with OMeta&amp;quot;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;¿Estas interesado en entender un poco más que es la meta-programación y para que sirve? ¿Querés entender qué significa que un ambiente sea Meta-Circular? ¿No te cierra la herencia múltiple, te parece que las interfaces de Java o .Net se quedan cortas, tenés dudas sobre los mix-ins y sentís que debe haber una mejor manera para compartir código?, entonces tenés que venir a&amp;#160; Smalltalks 2009 y ver las charlas de &amp;quot;Glamour&amp;quot;&amp;#160; y &amp;quot;Helvetia&amp;quot; de Jorge Ressia, &amp;quot;Mejorando las herramientas de desarrollo de Smalltalk&amp;quot; de Diego Geffner y &amp;quot;Traits at Work&amp;quot; de Stephane Ducasse.&lt;/p&gt;    &lt;p&gt;¿Alguna vez te preguntaste cómo funciona una base de objetos, qué diferencias tienen con una base de datos relacional, son más rápidas, son más lentas?... no quiero sonar repetitivo pero no puedo evitarlo, ¡¡¡tenés que venir a Smalltalks 2009!!! hay una charla dada por James Foster denominada &amp;quot;Introduction to GemStone&amp;quot; y un tutorial de un día enteramente dedicado a este tópico, ¡no te lo podés perder!&lt;/p&gt;    &lt;p&gt;¿Alguna vez te preguntaste si es posible manejar hardware en tiempo real con objetos y con un lenguaje dinámico? ... hmmm... entonces no te queda otra que venir a Smalltalks 2009 y ver la charla de Gonzalo Zabala sobre &amp;quot;Physical EToys&amp;quot; y la de Andrés Otaduy sobre &amp;quot;Sistema Rul@&amp;quot;&lt;/p&gt;    &lt;p&gt;¿Tenés dudas sobre si es posible diseñar y escribir con objetos buenos algoritmos genéticos o modelos matemáticos?, si lo tuyo va por ese lado, entonces tenés que venir a Smalltalks 2009 y ver la chala de Maximiliano Tabacman sobre &amp;quot;Genetic Algorithm Framework&amp;quot; y la de Leandro Caniglia sobre &amp;quot;Homological Algebra in Smalltalks&amp;quot;&lt;/p&gt;    &lt;p&gt;¿Estás interesado en conocer los detalles de implementación de una Virtual Machine de objetos o saber qué tan seguras o inseguras son? jeje, ¡¡también tenemos dos charlas para vos!!. &amp;quot;Virtual Machine, Invisible Machine&amp;quot; de Andrés Valloud (programador de la VM más rápida de Smalltalk) y &amp;quot;Security on JIT VMs&amp;quot; de Gerardo Richarte (un experto en seguridad... ¿o inseguridad?)&lt;/p&gt;    &lt;p&gt;¿Lo tuyo va por asegurar la calidad de los sistemas? ¿Te pega todo lo ágil, TDD, etc?... no quiero sonar repetitivo pero me es imposible... ¡tenés que venir a Smalltalks 2009! y ver las charlas de Tim Mackinnon sobre &amp;quot;Agile Planning&amp;quot; y &amp;quot;Expressive Testing&amp;quot; y la de Nicolas Chillo y Gabriel Burnstein sobre &amp;quot;Mutation Testing&amp;quot;.&lt;/p&gt;    &lt;p&gt;¿Estás cansado de tener que subir y bajar el server cada vez que modificas tu aplicación web, pensás que deben haber maneras más sencillas de hacerlo? ¿Estás cansado de recompilar tu aplicación Java u ObjectiveC para poder ver un pequeño cambio que hiciste en tu aplicación de iPhone?, no queda otra que vengas a Smalltalks 2009 y veas las charlas de Germán Arduino sobre &amp;quot;SWT&amp;quot;, la de Santiago Robles y Lautaro Fernandez sobre &amp;quot;Meteorid: Un MVC real para la Web&amp;quot; y la de Esteban Lorenzano sobre &amp;quot;Smalltalk in the pocket: Building applications for the iPhone&amp;quot;&lt;/p&gt;    &lt;p&gt;O por el contrario, ¿no te gustan la charlas, te aburre esto de escuchar hablar gente todo el día, lo tuyo va por la acción, por construir cosas en serio que aporten a la comunidad, por codear, y no me refiero a pegar codazos :-)? o por ahí siempre escuchaste de Smalltalk pero nunca tuviste el tiempo o la ayuda para meter las manos en la masa? hmm, que se yo, podés darte una vuelta el sábado por Smalltalks 2009 y participar del Pharo Sprint!, una sesión de programación de todo un día que sirve para mejorar y ampliar Pharo, un Smalltalk open-source.&lt;/p&gt;    &lt;p&gt;¿Siempre escuchaste o creíste que los lenguajes dinámicos no sirven para desarrollar aplicaciones grandes, o que Smalltalk sólo se usa en la universidad para enseñar? Entonces te conviene venir a Smalltalks 2009 y ver &amp;quot;XTrade - Risk and Yield Analisis&amp;quot; de Maximiliano Tabacman, &amp;quot;Expecco&amp;quot; de Felix Madrir e &amp;quot;iBizLog&amp;quot; de Jose Bretti. &lt;/p&gt;    &lt;p&gt;¿Tu especialidad es el User Interface, gráficos 3D, etc.?... también tenemos algo para vos como &amp;quot;Un ambiente visual para desarrollar software&amp;quot; de Adian Soma, &amp;quot;Cuis and Morphic 3&amp;quot; de Juan Vuletich, &amp;quot;Desarrollo de un engine 3D: Experiencias de un neófito&amp;quot; de Andrés Fortier y &amp;quot;#{Open.Source.Graphics} bindTo: {Cincom.Smalltalk}&amp;quot; de Travis Griggs&lt;/p&gt;    &lt;p&gt;¿Te hace falta un iPod? ¿Querés regalarle una cámara digital a tu novia/o, o a tu vieja?... es fácil, anotate en el concurso de programación de Smalltalks, te vas a divertir haciéndolo... y si no lograste ganar nada, no llegaste a hacerlo, podés escuchar a Carlos Ferro, creador del concurso explicando cómo fue desarrollado el mismo en la charla de &amp;quot;Smalltalks 2009 Coding Contest&amp;quot;&lt;/p&gt;    &lt;p&gt;Y si sos profesor de programación orientada a objetos y querés obtener información, material de enseñanza y compartir tu dudas y experiencias con otros profesores, tenés que venir a Smalltalks 2009 y ver la charla &amp;quot;Enseñanza de programación orientada a objetos con Smalltalk y prácticas ágiles&amp;quot; de Nicolás Paez o pasar unos minutos con Stephane Ducasse quién compartirá con nosotros todo el material que usan en Suiza y Francia para enseñar objetos.&lt;/p&gt;    &lt;p&gt;¿Te cansaste de leer este mail tan largo? ¿te divertiste leyéndolo? ¿querés formar parte de un congreso hecho por programadores para programadores que ya lleva más de 300 inscriptos, divirtiéndote y aprendiendo en el camino? jeje, ¡¡tenés que venir a Smalltalks 2009!!&lt;/p&gt;    &lt;p&gt;No dejes de anotarte gratis en &lt;a href="http://www.fast.org.ar/"&gt;www.fast.org.ar&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Es del jueves 19 al sábado 21 de Noviembre de este año. Podes ver el detalle de las charlas en la sección &amp;quot;Charlas&amp;quot; o &amp;quot;Talks&amp;quot; de la página web, seguro la vas a pasar bien.&lt;/p&gt;    &lt;p&gt;Comite Organizador de Smalltalks 2009&lt;/p&gt;    &lt;p&gt;Cualquier duda manda un mail a &lt;a href="mailto:info@fast.org.ar"&gt;info@fast.org.ar&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1739209" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/Smalltalk/default.aspx">Smalltalk</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category></item><item><title>Smalltalks 2009 en Buenos Aires</title><link>http://msmvps.com/blogs/lopez/archive/2009/11/01/smalltalks-2009-en-buenos-aires.aspx</link><pubDate>Sun, 01 Nov 2009 14:41:03 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1736768</guid><dc:creator>lopez</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1736768</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/11/01/smalltalks-2009-en-buenos-aires.aspx#comments</comments><description>&lt;p&gt;La comunidad Smalltalk de Argentina ha vuelto a tener actividad en estos últimos años. Ejemplo reciente fue su activa participación en el &lt;a href="http://www.esug.org/Conferences/2009" target="_blank"&gt;ESUG: 2009 International Smalltalk Conference&lt;/a&gt;. Y como prueba están las dos ediciones de las conferencias Smalltalks. Se viene la tercera edición:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.fast.org.ar/smalltalks2009" target="_blank"&gt;Smalltalks 2009&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.todocontenidos.com/images/articles/smalltalks200902.png" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;Se realizará del jueves 19 al sábado 21 de Noviembre, en la Facultad de Ciencias Exactas y Naturales de la Universidad de Buenos Aires. Tienen que visitar el enlace e inscribirse. Hay invitados especiales, a destacar (copiado “sin vergüenza” :-) desde esa página):&lt;/p&gt;  &lt;h5&gt;&lt;em&gt;Dan Ingalls&lt;/em&gt;&lt;/h5&gt;  &lt;p&gt;&lt;em&gt;&lt;img alt="" src="http://slice.caesarsystems.com/smalltalks2009/img/speakers/Dan_Ingalls.jpg" width="147" /&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Is a pioneer of object-oriented computer programming and the principal architect, designer and implementor of five generations of Smalltalk environments. He designed the bytecoded virtual machine that made Smalltalk practical in 1976. He also invented Bit blit, the general-purpose graphical operation that underlies most bitmap graphics systems today, and pop-up menus. He designed the generalizations of BitBlt to arbitrary color depth, with built-in scaling, rotation, and anti-aliasing. His major contributions to the Squeak system include the original concept of a Smalltalk written in itself and made portable and efficient by a Smalltalk-to-C translator.&amp;#160; &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/Daniel_Henry_Holmes_Ingalls,_Jr."&gt;&lt;em&gt;Read more&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;¿Qué podría agregar a Dan Ingalls? Vean &lt;a href="http://research.sun.com/people/mybio.php?c=394" target="_blank"&gt;su trabajo de investigación reciente en Sun&lt;/a&gt;, por ejemplo, el &lt;a href="http://research.sun.com/techrep/2008/abstract-175.html" target="_blank"&gt;Web Browser as an Application Platform: The Lively Kernel Experience&lt;/a&gt;. Pueden seguirlo en Twitter como &lt;a href="http://twitter.com/daningalls" target="_blank"&gt;@daningalls&lt;/a&gt; pero no escribe mucho. Aunque no relacionado tanto con Smalltalks, no puedo dejar pasar el video sobre Lively Kernel:&lt;/p&gt;  &lt;p&gt;(Please visit the site to view this media)&lt;/p&gt;  &lt;h5&gt;&lt;em&gt;Stephane Ducasse&lt;/em&gt;&lt;/h5&gt;  &lt;p&gt;&lt;em&gt;&lt;img alt="" src="http://slice.caesarsystems.com/smalltalks2009/img/speakers/stefSmiling.jpg" width="147" /&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Since September 2007, He is research director at INRIA Lille leading the RMoD Team. He was the leader of the RECAST Project. He was co-responsible of the version 3.9 of Squeak the open-source Smalltalk developed by the team of A. Kay (Turing award 2003). He is the president of ESUG. He is developing Moose an open-source reengineering platform. He is co-responsible of Pharo an open-source Smalltalk. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://stephane.ducasse.free.fr/"&gt;&lt;em&gt;Read more&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h5&gt;&lt;em&gt;Alex Warth&lt;/em&gt;&lt;/h5&gt;  &lt;p&gt;&lt;em&gt;&lt;img alt="" src="http://slice.caesarsystems.com/smalltalks2009/img/speakers/alex.jpg" width="147" /&gt;Alessandro Warth is a computer scientist at the Viewpoints Research Institute, where he is working on the &amp;quot;Steps Toward the Reinvention of Programming&amp;quot; project. His current research interests include tools for rapid language prototyping, and improving the modularity of dynamic languages.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Pueden visitar &lt;a href="http://www.tinlizzie.org/~awarth/" target="_blank"&gt;la página del bueno de Alessandro&lt;/a&gt; y seguirlo en Twitter como &lt;a href="http://twitter.com/alexwarth" target="_blank"&gt;@alexwarth&lt;/a&gt;.&lt;/p&gt;  &lt;h5&gt;&lt;em&gt;Tim Mackinnon&lt;/em&gt;&lt;/h5&gt;  &lt;p&gt;&lt;em&gt;&lt;img alt="" src="http://slice.caesarsystems.com/smalltalks2009/img/speakers/TimMackinnon.jpg" width="147" /&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Tim has been programming with objects for 15 years, however it was when he heard Kent Beck describe Extreme Programming at OOPSLA 98 and again at OT99 that he found a process that balances quality, delivery and happiness. Tim was a member of the team that created UML Modeler for VisualAge Smalltalk, he has also worked at Dashboards Software where he pioneered their use of Extreme Programming. He then built up the XP team at Connextra and was responsible for techniques such as Mock Objects and Heartbeat retrospectives. He is now a senior developer at ThoughtWorks where he is mentoring teams on XP and Retrospectives.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;No escribe mucho, pero puede leer su blog &lt;a href="http://pintside.blogspot.com/" target="_blank"&gt;Pintside Thoughts&lt;/a&gt;.&lt;/p&gt;  &lt;h5&gt;&lt;em&gt;James Foster&lt;/em&gt;&lt;/h5&gt;  &lt;p&gt;&lt;em&gt;&lt;img alt="" src="http://slice.caesarsystems.com/smalltalks2009/img/speakers/James.jpeg" width="147" /&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;As a junior-high student in 1971, James discovered the local university&amp;#39;s computer lab and learned Basic, Fortran, and assembly. After trying other careers (commercial aviation and law), he returned to computer programming and was introduced to OOP on the Macintosh in the 1980s. Since then James has worked on large systems (primarily in healthcare) and introduced agile practices to the teams he has lead. James Foster is on the Smalltalk Engineering Team at GemStone Systems, Inc. and is an evangelist for the Seaside web framework.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Pueden seguir su blog &lt;a href="http://programminggems.wordpress.com/" target="_blank"&gt;Programming Gems (on Gem Stone) James’s comments on programming GemStone/S, Seaside and Smalltalk&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Y por supuesto, gran parte de los smalltalkers de Argentina (algunos esparcidos por el mundo, otros trabajando en empresas locales, otros en emprendimientos personales) asistirán al evento. Hace dos años escribí sobre la actividad de desarrollo y empresas: &lt;a href="http://msmvps.com/blogs/lopez/archive/2007/03/14/creando-con-smalltalk-en-argentina.aspx" target="_blank"&gt;Creando con Smalltalk en Argentina&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Más información sobre el evento en &lt;a href="http://news.squeak.org/2009/09/23/smalltalks-2009/" target="_blank"&gt;Smalltalks 2009 Squeak News&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Para los interesados en la actividad Smalltalk en español, y en especial en Argentina, ver:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.fast.org.ar/" target="_blank"&gt;Fundación Argentina de Smalltalk&lt;/a&gt; (Sitio soportado por plataforma GLASS (Gemstone/Linux/Apache/Squeak/Seaside)).    &lt;br /&gt;&lt;a href="http://www.clubsmalltalk.org/web/" target="_blank"&gt;Club Smalltalk&lt;/a&gt; (vean ahí la participación argentina en la ESUG 2009)&lt;/p&gt;  &lt;p&gt;y participen de la lista:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://groups.google.com/group/clubsmalltalk" href="http://groups.google.com/group/clubsmalltalk"&gt;http://groups.google.com/group/clubsmalltalk&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.todocontenidos.com/images/articles/smalltalks200901.png" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;Mi colección de enlaces:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://delicious.com/ajlopez/smalltalk"&gt;http://delicious.com/ajlopez/smalltalk&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/squeak"&gt;http://delicious.com/ajlopez/squeak&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/seaside"&gt;http://delicious.com/ajlopez/seaside&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Me hubiera gustado participar (por ejemplo, presentando lo &lt;a href="http://msmvps.com/blogs/lopez/archive/2008/07/15/ajtalk-un-int-233-rprete-tipo-smalltalk.aspx" target="_blank"&gt;que estoy haciendo como máquina virtual en .NET&lt;/a&gt;, o revivir algo de lo que hice &lt;a href="http://msmvps.com/blogs/lopez/archive/2009/01/26/presentando-ajsoda.aspx" target="_blank"&gt;tratando de emular a Piumarta&lt;/a&gt;), pero en estos días estoy bastante concentrado, en muchos cursos, poca programación, luchando con el &lt;a href="http://ajlopez.zoomblog.com/archivo/2008/10/17/el-Efecto-Coto.html" target="_blank"&gt;“Efecto Coto”&lt;/a&gt; (si ni siquiera tendré &lt;a href="http://msmvps.com/blogs/lopez/archive/2009/03/30/primera-semana-sab-225-tica-del-a-241-o.aspx" target="_blank"&gt;Semana Sabática&lt;/a&gt; este semestre… snif… :-).&lt;/p&gt;  &lt;p&gt;(Nota adicional: &lt;a href="http://ajlopez.zoomblog.com/archivo/2009/10/25/apologia-del-enlace.html" target="_blank"&gt;el por qué de tantos enlaces en cada post mío&lt;/a&gt; ;-)&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1736768" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/Smalltalk/default.aspx">Smalltalk</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Argentina/default.aspx">Argentina</category></item><item><title>Segunda Nerddinner en Buenos Aires</title><link>http://msmvps.com/blogs/lopez/archive/2009/10/28/segunda-nerddinner-en-buenos-aires.aspx</link><pubDate>Wed, 28 Oct 2009 15:44:44 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1735866</guid><dc:creator>lopez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1735866</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/10/28/segunda-nerddinner-en-buenos-aires.aspx#comments</comments><description>&lt;p&gt;Hace un par de meses ya tuvimos la primer nerddinner de Buenos Aires, ahora se viene la segunda!&lt;/p&gt;  &lt;p&gt;Pueden ver los detalles en:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.nerddinner.com/1236" href="http://www.nerddinner.com/1236"&gt;http://www.nerddinner.com/1236&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.ajlopez.com/images/articles/nerddinner02.png" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Pueden inscribirse ahí, o contactar a los organizadores &lt;a href="http://twitter.com/PabloZaiden" target="_blank"&gt;@PabloZaiden&lt;/a&gt; &lt;a href="http://twitter.com/rodolfof" target="_blank"&gt;@Rodolfof&lt;/a&gt; por Twitter. Es el jueves 5 de Noviembre, 21 horas, se espera cerveza y pizza, y conversaciones nerd a full!&lt;/p&gt;  &lt;p&gt;La anterior (y primera en Buenos Aires) se desarrolló en &lt;a href="http://www.lamaie.com.ar"&gt;http://www.lamaie.com.ar&lt;/a&gt; (donde suelo &lt;a href="http://ajlopez.zoomblog.com/archivo/2009/02/16/en-defensa-de-cortar-la-empanada.html" target="_blank"&gt;comer empanadas que corto con cuchillo&lt;/a&gt;), buen lugar, cervezas, y pizzas. Asistieron una veintena de nerds locales, y hubo interesantes discusiones, de todo tipo, desde multitouch hasta “mi mac enciende más rapido que tu Windows 7”. Nerd a full… :-)… Por ejemplo, el bueno de &lt;a href="http://twitter.com/rodolfof" target="_blank"&gt;@Rodolfof&lt;/a&gt; me explicó su trabajo en el “metadata framework” que estuvieron implementando en Lagash, &lt;/p&gt;  &lt;p&gt;La segunda será en la pizzería San Carlos, en Rivadavia 4548:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.ajlopez.com/images/articles/nerddinner03.png" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;Según el bueno de @Rodolfof ahí se reunía la gente de FidoNet en los 90. Yo no iba a esas reuniones. Pero recuerdo la pizzería (y café) de la época de principios de los 80. Iba a desayunar ahí, cuando llegaba de Quilmes, a trabajar en un cliente que vendía máquinas y sistemas (en aquel entonces, se vendía todo junto). Tenía que programar con Ohio Scientific, computadoras Ontel, alguna Cromenco, bueno… éramos tan pobres… :-)&lt;/p&gt;  &lt;p&gt;Siempre pueden organizar una nerddinner en su ciudad, Uds. mismos, visitar la portada del sitio:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.nerddinner.com"&gt;http://www.nerddinner.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ven ahí las que están siendo planeadas para los próximos días, en todo el mundo:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.ajlopez.com/images/articles/nerddinner01.png" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;La aplicación que soporta al sitio está hecha con ASP.NET MVC, y está publicado el código en:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://nerddinner.codeplex.com/" href="http://nerddinner.codeplex.com/"&gt;http://nerddinner.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Para entender cómo lo fueron haciendo en ASP.NET MVC, se pueden bajar un .pdf desde &lt;a title="http://tinyurl.com/aspnetmvc" href="http://tinyurl.com/aspnetmvc"&gt;http://tinyurl.com/aspnetmvc&lt;/a&gt;. Pueden probar de ejecutarlo en Mono, leer: &lt;a title="http://www.jprl.com/Blog/archive/development/mono/2009/May-14.html" href="http://www.jprl.com/Blog/archive/development/mono/2009/May-14.html"&gt;http://www.jprl.com/Blog/archive/development/mono/2009/May-14.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1735866" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Lenguajes+de+Programaci_26002300_243_3B00_n/default.aspx">Lenguajes de Programaci&amp;#243;n</category></item><item><title>Resultado de la VAN ALT.NET Hispano sobre Generación de Código</title><link>http://msmvps.com/blogs/lopez/archive/2009/10/27/resultado-de-la-van-alt-net-hispano-sobre-generaci-243-n-de-c-243-digo.aspx</link><pubDate>Tue, 27 Oct 2009 16:15:40 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1735639</guid><dc:creator>lopez</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1735639</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/10/27/resultado-de-la-van-alt-net-hispano-sobre-generaci-243-n-de-c-243-digo.aspx#comments</comments><description>&lt;p&gt;&lt;img style="display:inline;margin:0px 20px 20px 0px;" src="http://www.todocontenidos.com/images/articles/gencodvan01.png" align="left" alt="" /&gt; Gracias a la comunidad ALT.NET Hispano, quedó publicado el video de la VAN (des-conferencia virtual) sobre Generación de Código, al que fui invitado. Ahí presenté mi proyecto personal preferido, &lt;a href="http://ajgenesis.codeplex.com/" target="_blank"&gt;AjGenesis&lt;/a&gt;, generador de código, escrito en .NET, y publicado en código abierto. Pueden ver el resultado en:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://altnet-hispano.pbworks.com/van-2009-09-26-generacion-codigo" target="_blank"&gt;VAN – Septiembre 26 de 2009 – Generación de Código&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ahí encontraran el video, enlaces, lecturas, y la presentación que utilicé, para descargar.&lt;/p&gt;  &lt;p&gt;Al final de mi presentación, hubo discusión y preguntas. Uno de los puntos mencionados, fue cuales serán los próximos pasos de AjGenesis. Algo comenté ahí, pero me gustaría contestar algo más en detalle por acá:&lt;/p&gt;  &lt;p&gt;- En principio, es un proyecto que me gusta, y que me ha resultado muy flexible. Y al que voy a seguir incorporando características.&lt;/p&gt;  &lt;p&gt;- Hay desarrolladores que lo usan, pero son pocos, o por lo menos, no publican resultados, o escriben posts (en estos últimos 5 años, debe haber 4 post sobre AjGenesis NO escritos por mí, solamente; tampoco es mencionado mucho en las listas de correo, sobre desarrollo de software en general, que frecuento (debe haber dos o tres menciones en los últimos 3 años)). Entonces, como digo en la des-conferencia, “lo uso yo y mi tía Carlota”… :-)&lt;/p&gt;  &lt;p&gt;- Hay que mejorar la documentación. Por ahora, estoy escribiendo &lt;a href="http://msmvps.com/blogs/lopez/archive/tags/AjGenesis/default.aspx" target="_blank"&gt;posts casi todos los meses sobre el tema&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;- Lo que me gustaría encarar, es poner en línea el tema de &lt;a href="http://msmvps.com/blogs/lopez/archive/2008/04/03/code-generation-as-a-service.aspx" target="_blank"&gt;Code Generation as a Service&lt;/a&gt;, que menciono en la charla.&lt;/p&gt;  &lt;p&gt;Como comento hacia el final de la presentación, cuando expongo sobre generación de código, lo hago mostrando ideas e implementaciones con AjGenesis, porque me siento más cómodo. Pero, por supuesto, hay multitud de otras herramientas, más documentadas, con más soporte, con más comunidad, que pueden usar. La idea de la presentación es que tengan contacto con lo pragmático de generar código, y que vaya quedando en claro por qué estamos hoy generando código: ante la multitud de tecnologías, frameworks y librerías, es un poco difícil zafar de escribir y escribir código. Y como las tecnologías, frameworks y librerías son buenas, en general, es difícil también, hoy por hoy, prescindir de ellas. He dejado enlaces a otras herramientas en la página de la VAN.&lt;/p&gt;  &lt;p&gt;Otro camino a explorar sería abandonar todo eso, y buscar la simplicidad. Algo expongo en &lt;a href="http://msmvps.com/blogs/lopez/archive/2009/10/16/191-es-tiempo-de-volver-a-la-simplicidad.aspx" target="_blank"&gt;¿Es tiempo de volver a la simplicidad?&lt;/a&gt;. Pero, yendo a la realidad, de todos los días, eso todavía no está, y quien sabe cuándo volveremos o conseguiremos eso. Así, que caemos de nuevo en tecnología, frameworks y librerías.&lt;/p&gt;  &lt;p&gt;Como expongo en el post citado, otro camino, que algunos&amp;#160; de Uds. habrán recorrido, habrá sido armarse su propio framework y librerías. Ante la calidad y cantidad de librerías disponibles, y todas las necesidades a cubrir, es un camino algo difícil de recorrer actualmente. Y aún recorrido ese camino, muchas veces nuestro framework necesita que trabajemos incorporando código o archivos de configuración, que bien podemos generar automáticamente desde un modelo.&lt;/p&gt;  &lt;p&gt;Si es la primera vez que visitan este blog, y quieren conocer por qué le dedico tanto tiempo a la generación de código, y encontrar una explicación más detallada de lo que planteo en la charla y en los párrafos de arriba, les recomiendo leer primero mi post &lt;a href="http://msmvps.com/blogs/lopez/archive/2007/08/02/sobre-la-generaci-243-n-de-c-243-digo.aspx" target="_blank"&gt;Sobre la generación de código&lt;/a&gt;. Más enlaces, más relacionados con AjGenesis, en &lt;a href="http://msmvps.com/blogs/lopez/archive/2008/06/10/quot-ver-la-luz-quot-con-generaci-243-n-de-c-243-digo-y-ajgenesis.aspx" target="_blank"&gt;Ver la luz con generación de código y AjGenesis&lt;/a&gt; :-)&lt;/p&gt;  &lt;p&gt;Como verán en el video, y en algunos enlaces que están en la página de la VAN, y leen &lt;a href="http://msmvps.com/blogs/lopez/archive/tags/AjGenesis/default.aspx" target="_blank"&gt;los posts anteriores sobre generación de código y AjGenesis&lt;/a&gt; que ya he escrito, la idea no es solamente generar código, sino generar código desde un modelo: llevamos años eludiendo modelos, solamente dibujándolos (en UML, por ejemplo), pero sin utilizarlos como instrumentos para implementar efectivamente un sistema. La conversión de un modelo a código concreto, ha quedado en nuestras manos. Y ante la cantidad del trabajo, es hora de “elevar el nivel de abstracción”, y comenzar a basarnos en modelos. De alguna forma, eso es lo que hicimos cuando pasamos de programar en lenguaje de máquina, a ensamblador, y luego, a lenguajes de programación: nos olvidamos de los detalles, y le dejamos ese trabajo a la propia máquina. Estamos generando código cada día: ya no armamos el .exe a mano (como en los tiempos de la ENIAC), sino que hay herramientas (compilador ¿recuerdan?) que pasa nuestro modelo (el programa escrito en un lenguaje de modelado de instrucciones, llamado lenguaje de programación) a código ejecutable (instrucciones para nuestros procesadores).&lt;/p&gt;  &lt;p&gt;El tema es que desde hace años, nos hemos quedado en ese nivel de abstracción. Menciono en la charla, que hubo excepciones: hubo algunos avances y adoptamos modelos para olvidarnos de los detalles, en algunos casos. Un caso que menciono: Visual Basic (el clásico, de los noventa). Cuando apareció Visual Basic, ya no hubo que programar ventanas, botones y eventos de Windows, en C, ocupando decenas de líneas para hacer un simple “Hola, mundo” (era lo que yo llamo la “Era Petzoldiana”). Ahora, con un modelo gráfico, arrastramos botones, cajas de textos, y voilá: tenemos el código de un formulario (vean que en .NET, tanto en VB.NET como en C#, todavía es más evidente que generamos código: el diseñador genera el código correspondiente a crear los controles, ponerles las propiedades, por nuestra cuenta y orden).&lt;/p&gt;  &lt;p&gt;Bueno, basta por ahora. Pasen y vean el video, vean las discusiones, y participen de la comunidad ALT.NET Hispano.&lt;/p&gt;  &lt;p&gt;Si les interesa el tema de la generación de código, hay una lista de correo, sobre el tema, en español. Pueden ver los mensajes y suscribirse, en:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://groups.google.com/group/codegeneration"&gt;http://groups.google.com/group/codegeneration&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1735639" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/Generaci_26002300_243_3B00_n+de+C_26002300_243_3B00_digo/default.aspx">Generaci&amp;#243;n de C&amp;#243;digo</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/AjGenesis/default.aspx">AjGenesis</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Video/default.aspx">Video</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/ALT.NET/default.aspx">ALT.NET</category></item><item><title>Tales from the Scrum: No esperemos a Superman</title><link>http://msmvps.com/blogs/lopez/archive/2009/10/24/tales-from-the-scrum-no-esperemos-a-superman.aspx</link><pubDate>Sat, 24 Oct 2009 14:18:29 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1734776</guid><dc:creator>lopez</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1734776</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/10/24/tales-from-the-scrum-no-esperemos-a-superman.aspx#comments</comments><description>&lt;p&gt;&lt;img style="display:inline;margin:0px 20px 20px 0px;" src="http://www.todocontenidos.com/images/articles/superman01.png" align="left" alt="" /&gt; En estos días, buscando ejemplos de antipatrones de Scrum, me encuentro con el “&lt;a href="http://scrumisscrum.wordpress.com/2009/04/02/hero-driven-development/" target="_blank"&gt;Hero-Driven Development&lt;/a&gt;” (visiten todo el blog &lt;a href="http://scrumisscrum.wordpress.com/" target="_blank"&gt;Scrum is Scrum&lt;/a&gt;). Hace poco comentaba sobre las “prima donnas” en desarrollo en &lt;a title="Tales from the Scrum- No somos Q" href="http://msmvps.com/blogs/lopez/archive/2009/10/22/tales-from-the-scrum-no-somos-q.aspx"&gt;Tales from the Scrum- No somos Q&lt;/a&gt;. El caso que quiero comentar ahora, es distinto. El desarrollador super héroe de nuestra historia, puede ser un tipo apreciado, querido por el equipo, reconocido en su campo. Es uno de esos desarrolladores que puede programar mucho más que los demás. Steve Mc Connell los llama &lt;a title="10X Developers" href="http://go2.wordpress.com/?id=725X1342&amp;amp;site=scrumisscrum.wordpress.com&amp;amp;url=http%3A%2F%2Fforums.construx.com%2Fblogs%2Fstevemcc%2Farchive%2F2008%2F03%2F27%2Fproductivity-variations-among-software-developers-and-teams-the-origin-of-quot-10x-quot.aspx"&gt;10X Developers&lt;/a&gt;. Pero puede causar problemas. Veamos (basado en el blog que mencioné):&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Problema&lt;/strong&gt;: En el medio del desarrollo, surge un problema. Puede ser una configuración de Windows Communication Foundation, un tema de mapeo de Hibernate, una instalación en JBoss. No importa. El problema es complejo, y bastante técnico. De pronto, se abre la ventana, y entra nuestro “programador héroe”, reluciente en su traje. Se sienta, mira el código, entiende el problema, y lo va solucionando. El equipo, arrobado, se queda atrás, mirando, cómo nuestro Superman del código, va resolviendo el más intricado nudo de desarrollo. El héroe, concentrado, no habla ni explica. Parece relajado, lo que hace es “pan comido” para él. Entonces, en un momento, para, el problema está solucionado, levanta la vista, mira al equipo, y sale volando por la ventana, directo hacia el atardecer. Gran música de fondo.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Contexto&lt;/strong&gt;: El equipo no sabe cómo solucionar el problema técnico que surgió. Es algo en lo que tienen poca experiencia. Trataron de solucionarlo, pero no pudieron, y están entrando en pánico. Pasan las horas, y no avanzan. Todo está empantanado. Entonces, encienden la señal, para llamar al super héroe.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Fuerzas&lt;/strong&gt;: Vivimos en tiempos de cumplir los compromisos que asumimos para la iteración. Queda poco tiempo para la entrega. Todo indica que necesitamos una solución rápida.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Solución&lt;/strong&gt;: No hay que buscar solución rápida. Primero, habría que haber previsto el riesgo tecnológico, desde el propio equipo. Los miembros deberían haber anotado que en algún momento se toparían con una tecnología que no conocen, y tendrían que haber tomado la tarea asignándole más tiempo. Pero bueno, supongamos que no se pudo hacer eso. El problema de arriba, es que el equipo delega la solución FUERA del equipo. El equipo, de alguna forma, “se lava las manos”. La actitud del superhéroe también conspira para eso. No es ése el camino. El equipo no debería perder “ownership”, propiedad y responsabilidad del producto, y de cada pequeño o gran problema. El desarrollador super héroe, que los hay, debería haberse integrado al equipo, compartiendo su conocimiento. Debería actuar como consultor del resto del equipo, pero trabajando con él. Y cada cosa que haga, con el equipo, será considerada como cualquier otra tarea de otro miembro: deberá cumplir con los estilos pactados, las métricas adoptadas, la definición de “hecho”. No debe ser un miembro “distinguido”. Lo que haga, debe estar público y lo más entendible posible para el resto del equipo. Tal vez no consigamos una solución tan rápida como la de arriba. Pero seguramente, a largo plazo, estaremos construyendo un equipo más responsable.&lt;/p&gt;  &lt;p&gt;Recuerden: uno de los grandes entregables, en Scrum, es el equipo.&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1734776" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Scrum/default.aspx">Scrum</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+Agil/default.aspx">Desarrollo Agil</category></item><item><title>VAN sobre Boo con Rodolfo Finochietti</title><link>http://msmvps.com/blogs/lopez/archive/2009/10/23/van-sobre-boo-con-rodolfo-finochietti.aspx</link><pubDate>Fri, 23 Oct 2009 09:22:26 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1734501</guid><dc:creator>lopez</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1734501</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/10/23/van-sobre-boo-con-rodolfo-finochietti.aspx#comments</comments><description>&lt;p&gt;&lt;img style="display:inline;margin:0px 20px 20px 0px;" src="http://www.todocontenidos.com/images/articles/boo01.png" align="left" alt="" /&gt; Vuelven las VAN (Reuniones Virtuales) de ALT.NET Hispano. La próxima, es este sábado 24 de Octubre, a las 18:00 GMT/UTC (Greenwich) (En Buenos Aires, con GMT-3, serían las 3 de la tarde). El tema será, principalmente, &lt;a href="http://boo.codehaus.org/" target="_blank"&gt;el lenguaje Boo&lt;/a&gt;, a cargo del bueno de &lt;a href="http://weblogs.shockbyte.com.ar/" target="_blank"&gt;Rodolfo Finochietti&lt;/a&gt; (&lt;a href="http://twitter.com/rodolfof"&gt;@rodofof&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;Pueden ver detalles en&lt;/p&gt;  &lt;p&gt;&lt;a href="http://groups.google.com/group/altnet-hispano/browse_thread/thread/dab63bbb407c3822?hl=es" target="_blank"&gt;VAN sobre Boo con Rodolfo Finochietti, Sábado 24 de Octubre&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Será en parte, continuación de la anterior&lt;/p&gt;  &lt;p&gt;&lt;a title="Alt.NET Hispano- VAN con Martín Salías y lenguajes en .NET" href="http://msmvps.com/blogs/lopez/archive/2009/10/01/alt-net-hispano-van-con-mart-237-n-sal-237-as-y-lenguajes-en-net.aspx"&gt;Alt.NET Hispano- VAN con Martín Salías y lenguajes en .NET&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Pueden ver el video resultado de esa anterior reunión en:&lt;/p&gt;  &lt;p&gt;&lt;a title="Virtual ALT.NET sobre Lenguajes" href="http://blog.salias.com.ar/2009/10/virtual-altnet-sobre-lenguajes.html"&gt;Virtual ALT.NET sobre Lenguajes&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Son todos temas como los que tratamos en algún TechNight de Buenos Aires, el año pasado: &lt;a title="lenguajes de programación e implementaciones en .NET" href="http://msmvps.com/blogs/lopez/archive/2008/10/16/babel-de-lenguajes-en-net.aspx"&gt;lenguajes de programación e implementaciones en .NET&lt;/a&gt; (ahí dejé bastantes enlaces sobre los temas que ahora están siendo actualizados en esta serie de VANs).&lt;/p&gt;  &lt;p&gt;Según adelanta Rodolfo, el tema será:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Básicamente mi exposición se va a centrar en porque me gusta Boo. Todos los lenguajes estáticos en .NET son bastante similares (con el DLR esto cambio un poco), y esto creo yo tiene una razón que voy a explicar en el charla. En cambio Boo no se parece un lenguaje .NET. Su diseñador (Rodrigo De Oliveira) lo creo como un herramientas que le facilita la construcción de aplicaciones. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Resumiendo: Voy a hacer una intro al diseño de lenguajes estáticos en .NET y después me voy a centrar en Boo y sus características. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Recuerden:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Si no conocen qué es una reunión VAN, pueden consultar &lt;/em&gt;&lt;a href="http://www.zachariahyoung.com/zy/post/2009/01/Introduction-to-Virtual-ALTNET.aspx"&gt;&lt;em&gt;VAN meetings&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. Para ver cómo se desarrolla una VAN de ALT.NET Hispano, y qué software necesitan para asistir, ver &lt;/em&gt;&lt;a href="http://altnet-hispano.pbworks.com/Descripcion-de-Reuniones-VAN"&gt;&lt;em&gt;Descripcion-de-Reuniones-VAN&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. Pueden ver &lt;/em&gt;&lt;a href="http://altnet-hispano.pbworks.com/Historial-de-reuniones"&gt;&lt;em&gt;el historial de anteriores reuniones VAN&lt;/em&gt;&lt;/a&gt;&lt;em&gt; (visiten las que dieron, por ejemplo, sobre NHibernate, WPF y demás) (yo ya participé en &lt;/em&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2009/09/18/resultado-de-la-van-en-alt-net-hispano-sobre-scrum.aspx"&gt;&lt;em&gt;VAN sobre Scrum&lt;/em&gt;&lt;/a&gt;&lt;em&gt; y en otra &lt;/em&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2009/09/25/van-reuni-243-n-virtual-en-alt-net-hispano-sobre-generaci-243-n-de-c-243-digo.aspx"&gt;&lt;em&gt;sobre generación de código&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, que quedará publicada en estos días). Supongo (pero confirmen) que la URL de entrada de la VAN de Martín será &lt;/em&gt;&lt;a href="http://snipr.com/virtualaltnet"&gt;&lt;em&gt;http://snipr.com/virtualaltnet&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. Cualquier cosa, pueden consultar &lt;/em&gt;&lt;a href="http://groups.google.com/group/altnet-hispano/"&gt;&lt;em&gt;la lista de correo de ALT.NET Hispano&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. También pueden suscribirse para proponer nuevos temas, y colaborar con la comunidad.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Visiten &lt;a href="http://boo.codehaus.org/" target="_blank"&gt;el sitio de Boo&lt;/a&gt; si quieren averiguar más sobre el lenguaje, y lean &lt;a href="http://www.google.com/url?q=http://boo.codehaus.org/BooManifesto.pdf&amp;amp;ei=n9rgSpPkKNOh8AbEqc2eDQ&amp;amp;sa=X&amp;amp;oi=nshc&amp;amp;resnum=1&amp;amp;ct=result&amp;amp;cd=1&amp;amp;ved=0CAsQzgQoAA&amp;amp;usg=AFQjCNFakzlVrlPRdxPt-ENYggy1Y8Af4g" target="_blank"&gt;el Boo Manifesto&lt;/a&gt;. Tomé la imagen del blog &lt;a title="http://blogs.codehaus.org/people/bamboo/archives/boo.html" href="http://blogs.codehaus.org/people/bamboo/archives/boo.html"&gt;http://blogs.codehaus.org/people/bamboo/archives/boo.html&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1734501" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Lenguajes+de+Programaci_26002300_243_3B00_n/default.aspx">Lenguajes de Programaci&amp;#243;n</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/ALT.NET/default.aspx">ALT.NET</category></item><item><title>Tales from the Scrum: No somos Q</title><link>http://msmvps.com/blogs/lopez/archive/2009/10/22/tales-from-the-scrum-no-somos-q.aspx</link><pubDate>Thu, 22 Oct 2009 10:22:39 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1734228</guid><dc:creator>lopez</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1734228</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/10/22/tales-from-the-scrum-no-somos-q.aspx#comments</comments><description>&lt;p&gt;&lt;img style="display:inline;margin:0px 20px 20px 0px;" src="http://www.todocontenidos.com/images/articles/qstartrek00.png" align="left" alt="" /&gt; No se si conocen o recuerdan al &lt;a href="http://en.wikipedia.org/wiki/Q_%28Star_Trek%29" target="_blank"&gt;personaje de Q&lt;/a&gt;, que apareció en el capítulo presentación de &lt;a href="http://en.wikipedia.org/wiki/Star_Trek:_The_Next_Generation" target="_blank"&gt;Star Trek: Next Generation&lt;/a&gt;. Dotado de poderes sin límites, el personaje interpretado por &lt;a href="http://en.wikipedia.org/wiki/John_de_Lancie" target="_blank"&gt;John de Lancie&lt;/a&gt; ha aparecido en varios episodios, siendo uno de los favoritos de la audiencia trekkie. En la tercer temporada de Next Generation, en el capítulo &lt;a href="http://en.wikipedia.org/wiki/D%C3%A9j%C3%A0_Q" target="_blank"&gt;Déjà Q&lt;/a&gt; le quitan los poderes, y pasa a ser un simple mortal, que tiene hasta que comer para sobrevivir. Se le sugiere integrarse a la tripulación de la Enterprise, pero él responde que no está acostumbrado: “Es difícil trabajar en grupo cuando se es omnipotente”.&lt;/p&gt;  &lt;p&gt;Q nunca podría ser un buen miembro de equipo Scrum. Recuerden: Scrum es un marco de trabajo para producir software EN EQUIPO (se puede extender para otras actividades, pero siempre en equipo). La idea de equipo en Scrum es fuerte: miembros con distintas habilidades y competencias, que trabajan coordinados para ir armando, iterativamente, el producto que el cliente necesita. En general, se usa la figura del Scrum Master para mantener el equipo dentro de las buenas prácticas, como mantener la reunión diaria, evaluar correctamente el Sprint (iteración), actualizar el backlog de sprint, ver que se arma y priorice lo mejor posible el product backlog, etc.&lt;/p&gt;  &lt;p&gt;Pero, en el día a día, lo que cuenta es el trabajo en equipo. No hay lugar para “prima donnas” o “Qs” en un equipo Scrum. Claro que puede haber miembros con más “seniority” en un tema técnico, o en alguna habilidad (como diseño gráfico, o base de datos). Pero lo importante es que toda tarea, y su resultado, queda a cargo del equipo. No hay “me corto solo” en Scrum. No hay actitudes de “yo lo hago mejor, y hago esto, y nada más”. No hay “yo me encargo de la base de datos, lo demás no”. No hay “esto lo hago yo, porque lo hago mejor que Uds.”. Debe haber “esta tarea la tomo yo, si quieren, hago pair programming con X, y dejo claro cómo lo hice, para que mañana otro pueda seguir con esta tarea”. Si no se puede llegar a esa actitud, por lo menos, debemos luchar para conseguirla, y marcar nuestra falta en las retrospectivas (recuerden que para eso están las reuniones de retrospectivas: no para marcar errores, sino para detectar malas prácticas, o formas de trabajo no efectivas, y mejorarlas).&lt;/p&gt;  &lt;p&gt;Cada tarea es del equipo.&lt;/p&gt;  &lt;p&gt;Tomemos un ejemplo en concreto. Puede que haya en el equipo alguien ideal para escribir el manual de usuario de una parte del sistema que estamos armando y entregando (ciertamente, hay manuales de usuario, y es muy probable que se algo que para el cliente tiene valor de entrega y nos lo pida; sino, es, en general, un buen “over-delivery” que hace que el producto entregado tenga mejor recepción y uso). Supongamos que esa persona, llamémosla Juan, se recibió de “Technical Writer”, o que es el que mejor conoce esa parte del sistema. ¿Será él el que tome esa tarea? Un día, al comienzo, en la reunión diaria, Juan tome la tarea. Pero bien puede ser que sea una tarea que insuma varios días: hay que escribir una tabla de contenido, un glosario de los términos, una introducción, un paso a paso, sacar “screenshots” y ponerlos en el documento, escribir sobre el proceso A, el B, el C… En definitiva: la tarea puede partirse en varios pasos. Y entonces, seguramente otros miembros del equipo podrán colaborar con alguna de las subtareas. El miércoles, Juan está enfermo, y falta. Pedro, que estuvo colaborando con él, bien puede seguir con la tarea: aprendió cómo se organiza el material, cuál es el ejemplo que se estaba desarrollando en el manual, y puede seguir con el tema. Mientras tanto, el documento va quedando publicado en el repositorio de código del equipo. José “odia” hacer documentación. Pero igual revisa el documento parcial producido, y descubre que un “screenshot” no corresponde con lo el ejemplo que se explica. María detecta que se está usando mal el tiempo verbal. Francisco, que está desarrollando otra parte del sistema, y es el menos familiarizado con el tema del manual, apunta que no se entienden algunos términos, que el creador original del documento toma por sabidos por todo el mundo.&lt;/p&gt;  &lt;p&gt;Cuando al final del Sprint, el documento es entregado, casi todos los miembros del equipo pasaron por la producción del mismo: escribiendo, revisando, juntando material, mejorando una parte, sugiriendo cambios. Y ese entregable, es responsabilidad del equipo. Si luego se detecta que hay un error tipográfico o de concepto, es el equipo el que se hace cargo de ese defecto.&lt;/p&gt;  &lt;p&gt;Trabajando en equipo, hasta capaz le ganamos a Q y todo… :-)&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1734228" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/Scrum/default.aspx">Scrum</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+Agil/default.aspx">Desarrollo Agil</category></item><item><title>Enseñando a programar (Parte 1)</title><link>http://msmvps.com/blogs/lopez/archive/2009/10/19/ense-241-ando-a-programar-parte-1.aspx</link><pubDate>Mon, 19 Oct 2009 09:47:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1733324</guid><dc:creator>lopez</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1733324</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/10/19/ense-241-ando-a-programar-parte-1.aspx#comments</comments><description>&lt;p&gt;El tema que se&amp;ntilde;ala el t&amp;iacute;tulo de este post es un tema ampl&amp;iacute;simo, del que habr&amp;iacute;a tanto para decir y discutir. Veamos de tratar algunos puntos, que surgen de experiencia personal, e ideas sin probar que van rondando mi cabeza desde hace unos a&amp;ntilde;os.&lt;/p&gt;
&lt;p&gt;Primero, una aclaraci&amp;oacute;n: si bien gran parte de mi actividad semanal (en estos tiempos, m&amp;aacute;s del 60% del tiempo que empleo), est&amp;aacute; dedicado al dictado de cursos&amp;nbsp;(en empresas e institutos ac&amp;aacute; en Argentina, o en charlas en distintas ciudades) me considero no un instructor de programaci&amp;oacute;n, sino un desarrollador de software que por esos accidentes de la vida termin&amp;oacute; dedicando tanta cantidad de sus horas al dictado de clases. Pero no soy una persona pedag&amp;oacute;gica, o que haya estudiado para ense&amp;ntilde;ar sino, como muchos otros instructores, soy alguien que programa y que muestra algunos temas de programaci&amp;oacute;n, desde mi propio &amp;oacute;ptica personal (hace a&amp;ntilde;os que no doy un curso oficial o de Sun o de Microsoft, prefiero dar mis temas a mi forma y con mis temarios).&lt;/p&gt;
&lt;p&gt;Segundo: prefiero programar que ense&amp;ntilde;ar. Contrariamente a lo que algunos de Uds. podr&amp;iacute;an pensar, para m&amp;iacute; ense&amp;ntilde;ar no es la mejor forma que imagina de pasar mi tiempo profesional, por lo menos en cursos presenciales de la forma en que me toca ahora dictar. Prefiero escribir, leer, programar ejemplos, pruebas de conceptos, aplicaciones completas, describir temas en posts, antes&amp;nbsp;que estar dictando una clase presencial (una charla es otra cosa: es m&amp;aacute;s interesante, es para presentar un tema, y llamar a la acci&amp;oacute;n a los asistentes, sin tener que seguir por semanas hablando de lo mismo). Cuando tengo, digamos, un curso para las 18:30, ya s&amp;eacute; que ese d&amp;iacute;a no puedo trabajar hasta las 18hs en un proyecto, o no puedo irme a almorzar tarde, o no puedo salir de viaje a otra ciudad, o no puedo&amp;hellip;&amp;nbsp; o voy a salir demasiado tarde para ir a cenar tranquilo, o pasar por tal lado, o &amp;hellip; y mil cosas m&amp;aacute;s. Un curso es un clavo en el medio de cualquier agenda a armar. Tambi&amp;eacute;n pasa que un curso que no es nocturno, parte al medio cualquier d&amp;iacute;a de trabajo, especialmente cuando trabajo en un equipo Scrum. Como los cursos tienen d&amp;iacute;as ocupados durante varias semanas, tambi&amp;eacute;n se me complica organizar cualquier visita al interior de mi pa&amp;iacute;s, para dar una charla sobre un tema. En definitiva, curso presencial con muchas clases, es un incordio para cualquier agenda.&lt;/p&gt;
&lt;p&gt;Y una de las cosas que m&amp;aacute;s me cansan, a esta altura de mi vida, es hablar, hablar y hablar durante horas en un curso. Vuelvo a mi cubil, a veces, bastante cansado y congestionado, nada m&amp;aacute;s de hablar. Imagino que en cualquier momento comienzo a dar una clase mostrando cosas en el proyecto y explicando lo que hago escribiendo en el Notepad&amp;hellip; :-)&lt;/p&gt;
&lt;p&gt;Hechas esas confesiones personales, respiro hondo,&amp;nbsp;y paso a comentar algunos problemas que detecto&amp;nbsp;en los cursos que conozco, los m&amp;iacute;os.&lt;/p&gt;
&lt;p&gt;Muchos de mis cursos se pueden circunscribir a estos tipos:&lt;/p&gt;
&lt;p&gt;- Grupo de gente que conoce algo de programaci&amp;oacute;n, que pueden estar en distintos niveles, y quieren aprender un tema de tecnolog&amp;iacute;a, ejemplo: ASP.NET o JSP.&lt;/p&gt;
&lt;p&gt;- Curso con m&amp;aacute;quina o sin m&amp;aacute;quina y proyector&lt;/p&gt;
&lt;p&gt;Bien, comienzo por los temas que veo que no est&amp;aacute;n del todo bien y se pueden mejorar, o cambiar completamente por otro &amp;ldquo;approach&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Notemos que los cursos presenciales tienen un gran problema: son, justamente presenciales. Hay que combinar los horarios de todos los que quieren participar, reservar tal tiempo a tal hora y lugar; tambi&amp;eacute;n&amp;nbsp;tienen que estar todos presentes. Esto es un resabio de como se ense&amp;ntilde;aba en las universidades que comenzaron a aparecer en la Edad Media: como no hab&amp;iacute;a libros, el papel no exist&amp;iacute;a o era caro y los profesores escasos, la &amp;uacute;nica forma de ense&amp;ntilde;ar era presencial: juntar un grupo que ten&amp;iacute;a que escuchar a un profesor mientras daba un tema. En aquellos a&amp;ntilde;os incluso&amp;nbsp;se estudiaba para&amp;nbsp;ejercitar la memoria ante la escasez de elementos para tomar apuntes.&lt;/p&gt;
&lt;p&gt;Pasaron los siglos y veo seguimos con el mismo esquema. Algunos problemas derivados de esto:&lt;/p&gt;
&lt;p&gt;- Cada asistente tiene que venir, a cada clase. Si llueve, si est&amp;aacute; complicado en el trabajo, si se enferma, por lo que fuera se pierde una clase que en generle al es irrecuperable presencialmente. Tiene que estar disponible cada d&amp;iacute;a al horario en que se dicta el curso, por varias semanas a veces. Y si un d&amp;iacute;a se le complica asistir lo m&amp;aacute;s probable es que falte o que llegue tarde y no pueda aprovechar bien la clase.&lt;/p&gt;
&lt;p&gt;- Cada asistente mismo tiene que estar con el &amp;aacute;nimo m&amp;aacute;s despierto, durante varias horas, para captar todo lo que se dicta en el curso.&lt;/p&gt;
&lt;p&gt;- Como un curso presencial implica asignar recursos escasos, como lugar, proyector o m&amp;aacute;quinas, sala, etc., entonces cada clase dura por lo menos 3 horas durante las cuales o se dan demasiados temas, de tal forma que no hay tiempo de asimilar, o se dan pocos y el curso se encarece por durar m&amp;aacute;s tiempo.&lt;/p&gt;
&lt;p&gt;- El instructor tiene que explicar algo que ya explic&amp;oacute;, probablemente, cuarenta veces.&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;Como los asistentes, el instructor tambi&amp;eacute;n tiene que estar con todas las luces, explicar de forma clara y tener todas las neuronas prendidas en cada clase, que se repite y repite a lo largo del a&amp;ntilde;o.&lt;/p&gt;
&lt;p&gt;- No siempre el lugar de dictado es el adecuado: o no est&amp;aacute; cerca o no tiene todos los elementos en condiciones.&lt;/p&gt;
&lt;p&gt;- No todos los asistentes tienen el mismo nivel de conocimientos inicial con lo que no todos van aprovechando el contenido de la misma forma.&lt;/p&gt;
&lt;p&gt;- Si trabajan con m&amp;aacute;quina, el curso se alarga. Se necesita&amp;nbsp;m&amp;aacute;s tiempo para corregir ejemplos en cada m&amp;aacute;quina. Tambi&amp;eacute;n pasa que&amp;nbsp;algunos asistentes terminan antes y otros quedan trabados. Coordinar las distintas velocidades es dif&amp;iacute;cil de manejar. Muchas veces sugiero trabajar de a grupos, con poco &amp;eacute;xito. Pasa cuando los asistentes son particulares que no se conocen entre s&amp;iacute; y hay una m&amp;aacute;quina por persona: la gente prefiere encarar por su cuenta, en solitario, cada ejercicio. Esto trae como consecuencia que&amp;nbsp;la clase se alarga. O hay que alargar&amp;nbsp;el curso completo, con el consiguiente aumento del costo final.&lt;/p&gt;
&lt;p&gt;- Aun teniendo pr&amp;aacute;ctica para captar un tema, un asistente puede necesitar su tiempo para entenderlo. Necesita practicar y jugar con un ejercicio un tiempo. No siempre es posible disponer de ese tiempo: muchas veces porque hay que seguir con otro tema. &lt;/p&gt;
&lt;p&gt;- Si no trabajan con m&amp;aacute;quina, muchas veces los asistentes no se toman el tiempo para practicar. Hay varias razones: est&amp;aacute;n tomando el curso en el trabajo pero no tienen m&amp;aacute;quina adecuada para practicar. O est&amp;aacute;n tapados de trabajo y no tienen tiempo. O sus jefes no les asignan tiempo para practicar. O podr&amp;iacute;an practicar en una m&amp;aacute;quina personal, al volver a casa, pero ah&amp;iacute; tambi&amp;eacute;n: hay otros temas de que ocuparse. Me ha pasado dejar ejercicio a un curso y que de los veinte integrantes s&amp;oacute;lo uno o dos practic&amp;oacute; algo entre dos clases. Cuando esto se repite, a lo largo de las clases, llega un momento que el contenido que se trata no se asimila porque no se practic&amp;oacute; lo anterior. Llegados a ese punto, sin pr&amp;aacute;ctica de lo ya tratado&amp;nbsp;es dif&amp;iacute;cil captar todas las facetas del contenido nuevo. Tambi&amp;eacute;n a algunos asistentes se les complica instalar todo lo que necesitan para practicar. Una vez, recuerdo, puse un ejercicio entre clases en un curso de cuarenta personas. Lo&amp;nbsp;escrib&amp;iacute;&amp;nbsp;mal planteado a prop&amp;oacute;sito. A la siguiente clase, solo uno de los asistentes se dio cuenta del problema: era el &amp;uacute;nico que lo hab&amp;iacute;a encarado.&lt;/p&gt;
&lt;p&gt;- El lugar de dictado puede estar a varios kil&amp;oacute;metros de donde un asistente vive y trabaja.&lt;/p&gt;
&lt;p&gt;- Si el curso es en el propio trabajo,&amp;nbsp;un asistente puede sufrir interrupciones, o por tener un tema &amp;quot;urgente&amp;quot; para solucionar, debe abandonar&amp;nbsp;la clase.&lt;/p&gt;
&lt;p&gt;- Si el curso es en el trabajo, pero despu&amp;eacute;s o antes de hora de oficina, a muchos no les es f&amp;aacute;cil participar por tener otras actividades o no poder llegar m&amp;aacute;s temprano.&lt;/p&gt;
&lt;p&gt;- De vez en cuando me pasa que algunos asistentes no tienen mucha motivaci&amp;oacute;n para hacer el curso: los &amp;ldquo;mandaron&amp;rdquo; al curso y no tienen un soporte, un apoyo, de parte de sus empleadores, para sacar provecho del mismo (especulo, pero eso puede ser tambi&amp;eacute;n un &amp;ldquo;test de proactividad&amp;rdquo; de su empleador o contratante).&lt;/p&gt;
&lt;p&gt;- Otras veces, el asistente est&amp;aacute; motivado porque necesita trabajar pero hace tiempo que no toma un curso. Las tecnolog&amp;iacute;as nuevas lo sobrepasan y termina&amp;nbsp;necesitando de m&amp;aacute;s tiempo para aprovechar el contenido.&lt;/p&gt;
&lt;p&gt;- Si el curso es por cuenta de cada integrante, no lo paga una empresa, entonces&amp;nbsp;probablemente tenga que asistir despu&amp;eacute;s de hora un d&amp;iacute;a de semana&amp;nbsp;o un s&amp;aacute;bado. En esos horarios tambi&amp;eacute;n tendr&amp;aacute; que pelear su tiempo con otras actividades, familiares, o de estudio formal.&lt;/p&gt;
&lt;p&gt;- El temario es introductorio para un lenguaje de programaci&amp;oacute;n, pero no se ense&amp;ntilde;a a programa. Se pide expl&amp;iacute;citamente que se conozca de programar y de base de datos. Y algunos asistentes no tienen esos conocimientos en firme.&lt;/p&gt;
&lt;p&gt;- Otro caso es cuando el temario es intermedio o avanzado.&amp;nbsp; Puede pasar que de los que asisten, algunos ya saben varios puntos del temario y se aburren. Mientras, otros necesitan repasar o incluso aprender un tema, porque no llegan al nivel que se necesita para el curso. Esto pasa cuando los cursos son para asistentes de distintas empresas o que se inscriben por su cuenta.&lt;/p&gt;
&lt;p&gt;- Cuando el temario lo arma una empresa, el que arma el temario pide todos los temas habidos y por haber, pero luego no se asigna tiempo para que los asistentes practiquen en el medio del trabajo de cada d&amp;iacute;a.&lt;/p&gt;
&lt;p&gt;- Pr&amp;aacute;cticamente todo el material que doy queda disponible en mi sitio personal. A la quinta o sexta clase del curso, alguien se acerca y me pregunta: &amp;iquest;d&amp;oacute;nde puedo bajar los ejemplos? Yo me pregunto entonces: &amp;iquest;c&amp;oacute;mo hizo para seguir las anteriores clases, si nunca repas&amp;oacute; los ejemplos que YA se dieron? Detecto ac&amp;aacute; que no han tenido tiempo para practicar entre clases.&lt;/p&gt;
&lt;p&gt;Y en mi caso en particular, muchas veces los cursos no se abren por falta de inscriptos: se necesita un n&amp;uacute;mero m&amp;iacute;nimo para costear los activos inmovilizados (proyector, m&amp;aacute;quinas si es con pr&amp;aacute;ctica, lugar, instructor) que no siempre se cubre. Tambi&amp;eacute;n me pasa armar una lista de correo para los asistentes del&amp;nbsp;curso (por ejemplo, en los m&amp;iacute;os de Java) . Luego de dos a&amp;ntilde;os, les cuento que solo cuatro personas, entre decenas que asistieron,&amp;nbsp;se inscribieron para hacer m&amp;aacute;s preguntas.&lt;/p&gt;
&lt;p&gt;No quisiera afirmar que siempre es as&amp;iacute; como describo arriba. Pero me asombra la cantidad de veces que algunos de esos &amp;ldquo;anti-patrones&amp;rdquo; aparecen, por lo menos, en muchos de los cursos que me ha tocado dictar. As&amp;iacute; que pienso, desde hace alg&amp;uacute;n tiempo, que debo mejorar en algunos temas. O motivar m&amp;aacute;s, o hacer algo para que estos anti-patrones no aparezcan tan frecuentemente. Una sorpresa agradable: los cursos de Scrum son los m&amp;aacute;s participativos de todos: son casos&amp;nbsp;donde pr&amp;aacute;cticamente no pr&amp;aacute;cticamente no aparecen estos &amp;ldquo;issues&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Y un tema, disculpen, m&amp;aacute;s personal: otra &amp;ldquo;constante&amp;rdquo; que detecto. Ante un curso de cuarenta personas, pregunto cu&amp;aacute;ntos conocen mi blog.&amp;nbsp;S&amp;oacute;lo uno levanta la mano. Pasan las semanas, y al final del curso, despu&amp;eacute;s de dos meses, pregunto de nuevo. Y ahora, son 1 o 2 las manos levantadas. As&amp;iacute; que algo tengo que hacer: o mejorar los contenidos o escribir m&amp;aacute;s claro o de temas que les interesen m&amp;aacute;s. Muchas veces escribo para que lo explicado quede m&amp;aacute;s claro. Si algo no se entiende en una clase presencial, quisiera que&amp;nbsp;se pueda leer y releer por ac&amp;aacute;. Pero veo que he tenido poca llegada en ese tema, por lo menos en los asistentes a mis cursos presenciales.&lt;/p&gt;
&lt;p&gt;Pero tambi&amp;eacute;n detecto y especulo un patr&amp;oacute;n: los que programan y no leen blogs (m&amp;iacute;o o de cualquiera), en general,&amp;nbsp;no se mantienen actualizados y necesitan cursos presenciales. Los que programan y leen blogs son otro grupo: se mantienen actualizados y no necesitan cursos presenciales, apenas algunas charlas introductorias como primeros pasos en un tema. Luego, ellos mismos aprenden de una nueva tecnolog&amp;iacute;a, patr&amp;oacute;n, estilo arquitect&amp;oacute;nico o herramienta.&lt;/p&gt;
&lt;p&gt;Habiendo repasado estos puntos, &amp;iquest;c&amp;oacute;mo se podr&amp;iacute;a mejorar? Tengo algunas ideas al respecto, tomadas de otros &amp;aacute;mbitos, y de lo que veo que puede funcionar, pero son temas para seguir en la segunda parte de este post. Mientras tanto: &amp;iquest;tienen alguna sugerencia?&lt;/p&gt;
&lt;p&gt;Nos leemos!&lt;/p&gt;
&lt;p&gt;Angel &amp;ldquo;Java&amp;rdquo; Lopez &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt; &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1733324" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Java/default.aspx">Java</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/PHP/default.aspx">PHP</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category></item><item><title>¿Es tiempo de volver a la simplicidad?</title><link>http://msmvps.com/blogs/lopez/archive/2009/10/16/191-es-tiempo-de-volver-a-la-simplicidad.aspx</link><pubDate>Fri, 16 Oct 2009 16:16:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1732753</guid><dc:creator>lopez</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1732753</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/10/16/191-es-tiempo-de-volver-a-la-simplicidad.aspx#comments</comments><description>&lt;p&gt;&lt;img align="left" src="http://www.todocontenidos.com/images/articles/compsimp.png" style="display:inline;margin:0px 20px 20px 0px;" alt="" /&gt; En estos d&amp;iacute;as Ted Neward escribi&amp;oacute; un interesante post &lt;a target="_blank" href="http://blogs.tedneward.com/2009/10/12/quotAgile+Is+Treating+The+Symptoms+Not+The+Diseasequot.aspx"&gt;&amp;ldquo;Agile is treating the symptons, not the disease&amp;rdquo;&lt;/a&gt; donde citaba una frase pronunciada por Billy Hollis en el Patterns and Practice Submit de esta semana, en Redmond. Leo ah&amp;iacute;:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;ldquo;A lot of software written back in the 90&amp;#39;s was written by 1 or 2 guys working for just a few months to slam something out and see if it was useful&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;ldquo;The problem is the complexity of the tools we have available to us today preclude that kind of software development.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Yo veo el problema m&amp;aacute;s asociado con tecnolog&amp;iacute;as que con las herramientas. Puedo tomar como ejemplo los servicios web. Para m&amp;iacute;, los servicios web no son una herramienta como lo son una librer&amp;iacute;a, un compilador o una IDE. Los servicios web son tecnolog&amp;iacute;a. Muchas de las herramientas que usamos (Eclipse, Visual Studio, &amp;hellip;) luchan contra la complejidad de las tecnolog&amp;iacute;as. Uno o dos programadores todav&amp;iacute;a pueden crear una maravillosa librer&amp;iacute;a de c&amp;oacute;digo abierto. Pero traten de escribir con el mismo equipo una aplicaci&amp;oacute;n empresarial que involucre base de datos, comunicaciones, seguridad, administraci&amp;oacute;n, instrumentaci&amp;oacute;n, y m&amp;aacute;s. Hay tantos detalles en las tecnolog&amp;iacute;as que usamos para implementarlo, que la complejidad de cualquier aplicaci&amp;oacute;n no trivial puede (y frecuentemente es) abrumadora.&lt;/p&gt;
&lt;p&gt;Volvamos a los servicios web. &amp;iquest;Visitaron la &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Web_service"&gt;p&amp;aacute;gina de la Wikipedia&lt;/a&gt; sobre el tema, recientemente? Encontrar&amp;aacute;n docenas de especificaciones. Podr&amp;iacute;an pasar semanas o meses, tratando de entender y comprender todas los detalles t&amp;eacute;cnicos que se encuentran en WS-Trust, WS-Addressing, WS-Transaction, WS-PutYourWordHere. Pienso que la adopci&amp;oacute;n de estilos REST es una reacci&amp;oacute;n contra esa locura (estilo a la REST, no veo tan adoptado los principios REST, o lo que se llama RESTFul). De vez en cuando, hay librer&amp;iacute;as que acuden a nuestra ayuda, y otras veces a&amp;uacute;n esas librer&amp;iacute;as fallan. Mi ejemplo preferido de un intento fallido de ocultar la complejidad de los servicios web, es Windows Communication Foundation (WCF). Escrib&amp;iacute; sobre el tema en &lt;a href="http://ajlopez.wordpress.com/2009/03/04/windows-communication-foundation-configuration-madness/"&gt;Windows Communication Foundation configuration madness&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;La complejidad en software no es mala por s&amp;iacute; misma. Puede llegar a ser buena. El software influye en casi toda actividad humana. La popularidad de Internet, alimentada por una &amp;ldquo;killer application&amp;rdquo; como la World Wide Web, influye en las actividades nuestras de todos los d&amp;iacute;as. Como desarrolladores de software, estamos contribuyendo a ese progreso. No perseguimos estar en nuestra zona de confort sino que buscamos agregar valor a nuestro software. Y si eso implica mayor complejidad, no debemos evitarla.&lt;/p&gt;
&lt;p&gt;En la actualidad, los requerimientos de los clientes son m&amp;aacute;s desafiantes: acceso de m&amp;uacute;ltiples usuarios, en cantidad masivas, escalabilidad, procesamiento distribuido para cumplir con la carga, disponibilidad en l&amp;iacute;nea 24 horas, 7 d&amp;iacute;as a la semana. Todos son requisitos que usualmente se incluyen en las aplicaciones empresariales modernas.&amp;nbsp;Y no hay soluciones simples para cubrir todos esos temas.&lt;/p&gt;
&lt;p&gt;Dicho todo esto, veamos que la complejidad est&amp;aacute; con nosotros pero puede ser combatida. Yo paso gran parte de mis horas de trabajo ense&amp;ntilde;ando programaci&amp;oacute;n, y el resto del tiempo, lo paso desarrollando sistemas. He sufrido la complejidad del estado actual de cosas tanto en la ense&amp;ntilde;anza como&amp;nbsp;en el desarrollo de software. La cantidad de detalle a tener en cuenta (seteo de ORMs, configuraci&amp;oacute;n por inyecci&amp;oacute;n de dependencias, preparaci&amp;oacute;n de los tests, librer&amp;iacute;as de mocks, configuraci&amp;oacute;n de WCF o JBoss o EJBs&amp;hellip;.) es tan grande que nuestras mentes est&amp;aacute;n perdidas en el medio de tal jungla de detalles.&lt;/p&gt;
&lt;p&gt;&amp;iquest;Recuerdan la &amp;ldquo;Era Petzoldiana&amp;rdquo; (en honor a Charles Petzold, autor de libros de programaci&amp;oacute;n para Windows)? Cantidad de l&amp;iacute;neas de c&amp;oacute;digo a escribir para producir un simple programa &amp;ldquo;Hello world&amp;rdquo; que corriera en Windows. Entonces, en esos a&amp;ntilde;os, apareci&amp;oacute; Visual Basic. Fue un modo efectivo de esconder la complejidad de la API de Windows, salvando a toda una generaci&amp;oacute;n de desarrolladores de pelearse con handles y valores LONG donde las coordinadas del mouse ven&amp;iacute;an en mensajes de Windows. Esa API de Windows, as&amp;iacute; desnuda,&amp;nbsp;era (y es) un infierno, un verdadero infierno.&lt;/p&gt;
&lt;p&gt;&amp;iquest;Recuerdan cuando era necesario leer VTOCs en discos de IBM? &amp;iquest;Escribir Job Control Language? &amp;iquest;Escribir macros en ensambladores? Para cada una de esas herramientas, aparecieron otras nuevas que contribuyeron a ocultar la complejidad usando un &amp;ldquo;viejo truco&amp;rdquo;: elevar el nivel de abstracci&amp;oacute;n. En vez de pensar en registros y sectores, comenzamos a manejar variables y comandos SQL.&lt;/p&gt;
&lt;p&gt;Yo pienso que fue al final de los ochenta, principios de los noventas, cuando el desarrollo de software en el &amp;aacute;mbito de las PC alcanz&amp;oacute; el tope en la raz&amp;oacute;n poder/complejidad. Ejemplos que se me ocurren: Turbo Pascal, Visual Basic, Access. Con ellos, ten&amp;iacute;amos&amp;nbsp;gran cantidad de poder de programaci&amp;oacute;n acompa&amp;ntilde;ado de baja complejidad. Desde entonces, veo que&amp;nbsp;estamos en ca&amp;iacute;da libre. El &amp;ldquo;viejo truco&amp;rdquo; de &amp;ldquo;elevar el nivel de abstracci&amp;oacute;n&amp;rdquo; no fue adoptado de nuevo: todav&amp;iacute;a estamos construyendo software usando lenguajes de tercera generaci&amp;oacute;n, lo que podr&amp;iacute;amos considerar los macro ensambladores de los sesenta.&lt;/p&gt;
&lt;p&gt;Como dec&amp;iacute;a, una forma de escapar de este estado de cosas es ir al siguiente nivel de abstracci&amp;oacute;n. Ya alguna vez hemos olvidado manejar registros e instrucciones Branch and Link Register, y hemos adoptado lenguajes de programaci&amp;oacute;n generales. Ahora, necesitamos escribir software en un nivel m&amp;aacute;s alto. Mi apuesta: Domain Specific Models y Domain Specific Languages. Pero es s&amp;oacute;lo una apuesta. Usando DSLs, DSMs, generaci&amp;oacute;n de c&amp;oacute;digo (&amp;iquest;se dan cuenta que cada d&amp;iacute;a que usan un compilador C# o Java, est&amp;aacute;n &amp;ldquo;generando c&amp;oacute;digo&amp;rdquo; AHORA MISMO?) podremos apalancar la tecnolog&amp;iacute;a existente, ocultando la complejidad subyacente.&lt;/p&gt;
&lt;p&gt;Con tantos lenguajes, librer&amp;iacute;as, tecnolog&amp;iacute;as a usar, no hay&amp;nbsp;una simple soluci&amp;oacute;n para ocultar todo este l&amp;iacute;o. Noten que hay varias tipos de complejidad. Una es la complejidad en los requerimientos de los clientes: l&amp;oacute;gica de negocios, requerimientos functionales y no funcionales. Eso est&amp;aacute; bien, es parte de nuestro trabajo. Pienso que las metodolog&amp;iacute;as &amp;aacute;giles est&amp;aacute;n atacando ese tipo de complejidad. Pero tambi&amp;eacute;n existe la complejidad tecnol&amp;oacute;gica. Y ese tipo de complejidad, deber&amp;iacute;a ser m&amp;aacute;s atacada. Debemos parar esta vuelta a la era Petzoldiana (recientemente, encontr&amp;eacute; el concepto de Complejidad Accidental, en una charla de &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Rich_Hickey"&gt;Rich Hickey&lt;/a&gt; talk (hmmm&amp;hellip; creo que &amp;eacute;l la llamaba complejidad incidental). Leo en la p&amp;aacute;gina de Wikipedia &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Accidental_complexity"&gt;accidental complexity&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;b&gt;Accidental complexity&lt;/b&gt; is complexity that arises in &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/Computer_program"&gt;&lt;em&gt;computer programs&lt;/em&gt;&lt;/a&gt;&lt;em&gt; or their development process (&lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/Computer_programming"&gt;&lt;em&gt;computer programming&lt;/em&gt;&lt;/a&gt;&lt;em&gt;) which is non-essential to the problem to be solved. While &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/Essential_complexity"&gt;&lt;em&gt;essential complexity&lt;/em&gt;&lt;/a&gt;&lt;em&gt; is inherent and unavoidable, accidental complexity is caused by the approach chosen to solve the problem&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;)&lt;/p&gt;
&lt;p&gt;Otros posts interesantes, disparados por el inicial de Neward:&lt;/p&gt;
&lt;p&gt;El de Jeffrey Palermos &lt;a target="_blank" href="http://jeffreypalermo.com/blog/response-quot-agile-is-treating-the-symptoms-not-the-disease-quot-by-ted-neward/"&gt;Response: &amp;ldquo;Agile is treating the symptoms, not the disease&amp;rdquo; by Ted Neward&lt;/a&gt;&amp;ccedil; &lt;br /&gt;Uno de Phil Haack &lt;a target="_blank" href="http://haacked.com/archive/2009/10/13/software-externalities.aspx"&gt;Software Externalities&lt;/a&gt; &lt;br /&gt;La respuesta de Ted Neward a Haack &lt;a target="_blank" href="http://blogs.tedneward.com/2009/10/13/Haacked+But+Not+Content+Agile+Still+Treats+The+Disease.aspx"&gt;Haacked, but not content; agile still treats the disease&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Tengo tanto para comentar de estos posts. Pero por ahora, sigo con el tema inicial.&lt;/p&gt;
&lt;p&gt;Me gustar&amp;iacute;a recordar un punto m&amp;aacute;s: la complejidad no es el &amp;uacute;nico desaf&amp;iacute;o en el desarrollo del software. Todo proyecto exitoso tiene dos desaf&amp;iacute;os: enfrentar la complejidad y manejar el cambio. Son esos los problemas que las metodolog&amp;iacute;as &amp;aacute;giles nos ayudan a enfrentar: combatir la complejidad con &amp;ldquo;baby steps&amp;rdquo;, pasos de beb&amp;eacute;. Hay que recordar c&amp;oacute;mo se come un elefante: pedacito a pedacito. Y nos ayudan a no temerle al cambio, al contrario: tenemos que abrazarlo, adoptando disciplinas &amp;aacute;giles que disminuyan el costo de cambiar en el medio del desarrollo.&lt;/p&gt;
&lt;p&gt;Otro punto: con la adopci&amp;oacute;n de Internet, nuestra actual cultura de desarrollo de software est&amp;aacute; floreciendo, poblada de ideas, implementaciones de referencia, librer&amp;iacute;as y herramientas de c&amp;oacute;digo abierto, patrones y estilos de arquitectura, mejores pr&amp;aacute;cticas, frameworks, paradigmas de programaci&amp;oacute;n, y lenguajes. Por ejemplo, hay una nueva camada de lenguajes din&amp;aacute;micos, montados sobre Java y .NET. Todo indica que la caja de Pandora ya fue abierta: no veo una forma f&amp;aacute;cil de cerrarla.&lt;/p&gt;
&lt;p&gt;En el post de Ted Newerd que citaba al principio, &amp;eacute;l escribi&amp;oacute;:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Let me rephrase Billy&amp;#39;s talk this way: &lt;/em&gt;&lt;em&gt;Where is this decade&amp;#39;s Access?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Tengo algunas ideas al respecto, sobre c&amp;oacute;mo podr&amp;iacute;a ser el pr&amp;oacute;ximo Access. Pero quedar&amp;aacute; eso planteado para otra clase.&lt;/p&gt;
&lt;p&gt;Nos leemos!&lt;/p&gt;
&lt;p&gt;Angel &amp;ldquo;Java&amp;rdquo; Lopez &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt; &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1732753" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category></item></channel></rss>