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

<channel>
	<title>Gabriel Rodriguez Plancarte &#187; .NET</title>
	<atom:link href="http://gabrielrodriguez.net/category/net/feed/" rel="self" type="application/rss+xml" />
	<link>http://gabrielrodriguez.net</link>
	<description>Tecnologia, Diseño, Negocios y Desarrollo</description>
	<lastBuildDate>Mon, 23 Jan 2012 16:29:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Como ayudar a mejorar el .NET Framework</title>
		<link>http://gabrielrodriguez.net/como-ayudar-a-mejorar-el-net-framework/</link>
		<comments>http://gabrielrodriguez.net/como-ayudar-a-mejorar-el-net-framework/#comments</comments>
		<pubDate>Sun, 24 Apr 2011 05:01:59 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://gabrielrodriguez.net/?p=951</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/como-ayudar-a-mejorar-el-net-framework/' addthis:title='Como ayudar a mejorar el .NET Framework '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Últimamente, Microsoft ha dado mucho peso a las opiniones y sugerencias de los desarrolladores que usan el .NET Framework. Varios líderes de equipo de los diferentes bloques que componen el framework (ASP.NET, Entity Framework, WCF, WPF, etc) han utilizado redes sociales, blog posts y varios otros medios para solicitar retroalimentación de los usuarios de .NET [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/como-ayudar-a-mejorar-el-net-framework/' addthis:title='Como ayudar a mejorar el .NET Framework ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/como-ayudar-a-mejorar-el-net-framework/' addthis:title='Como ayudar a mejorar el .NET Framework '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p><a href="http://gabrielrodriguez.net/wp-content/uploads/2009/07/net-logo.png"><img class="size-full wp-image-381 alignnone" title=".NET" src="http://gabrielrodriguez.net/wp-content/uploads/2009/07/net-logo.png" alt="" width="240" height="74" /></a></p>
<p>Últimamente, <strong>Microsoft ha dado mucho peso a las opiniones y sugerencias de los desarrolladores que usan el .NET Framework</strong>. Varios líderes de equipo de los diferentes bloques que componen el framework (<strong>ASP.NET, Entity Framework, WCF, WPF</strong>, etc) han <strong>utilizado redes sociales, blog posts y varios otros medios para solicitar retroalimentación de los usuarios de .NET </strong>sobre las nuevas funcionalidades del framework que han liberado, o sobre ideas y solicitudes para futuras funcionalidades.</p>
<p>Aquí les dejo las ligas a las <strong>páginas donde pueden votar por ideas o solicitudes de funcionalidades nuevas</strong> hechas por otros usuarios, o donde hasta ustedes mismos pueden crear una nueva solicitud. Esto ayuda a Microsoft a enterarse de cuales funcionalidades o cualidades nuevas los programadores desean que estén incluidas en el framework.</p>
<ul>
<li><a title="Votar sobre funcionalidades o bug fixes para WCF" href="https://connect.microsoft.com/wcf/feedback">Votar sobre funcionalidades o bug fixes para WCF</a></li>
<li><a title="Votar sobre funcionalidades o bug fixes para Windows Workflow Foundation" href="https://connect.microsoft.com/wf/feedback">Votar sobre funcionalidades o bug fixes para Windows Workflow Foundation (WF)</a></li>
<li><a title="Votar sobre funcionalidades o bug fixes para Windows Phone Platform" href="http://wpdev.uservoice.com/forums/110705-app-platform">Votar sobre funcionalidades o bug fixes para Windows Phone Platform</a></li>
<li><a title="Votar sobre funcionalidades o bug fixes para Windows Phone 7" href="https://windowsphone7community.uservoice.com/forums/84435-feature-feedback">Votar sobre funcionalidades o bug fixes para Windows Phone 7</a></li>
<li><a title="Votar sobre funcionalidades o bug fixes para ADO.NET Entity Framework" href="http://data.uservoice.com/forums/72025-ado-net-entity-framework-ef-feature-suggestions">Votar sobre funcionalidades o bug fixes para ADO.NET Entity Framework</a></li>
<li><a title="Votar sobre funcionalidades o bug fixes para Silverlight" href="http://dotnet.uservoice.com/forums/4325-silverlight-feature-suggestions">Votar sobre funcionalidades o bug fixes para Silverlight</a></li>
<li><a title="Votar sobre funcionalidades o bug fixes para ASP.NET en general" href="http://aspnet.uservoice.com/forums/41199-general">Votar sobre funcionalidades o bug fixes para ASP.NET en general</a></li>
<li><a title="Votar sobre funcionalidades o bug fixes para ASP.NET MVC" href="http://aspnet.uservoice.com/forums/41201-asp-net-mvc">Votar sobre funcionalidades o bug fixes para ASP.NET MVC</a></li>
<li><a title="Votar sobre funcionalidades o bug fixes para ASP.NET WebForms" href="http://aspnet.uservoice.com/forums/41202-asp-net-webforms">Votar sobre funcionalidades o bug fixes para ASP.NET WebForms</a></li>
<li><a title="Votar sobre funcionalidades o bug fixes para WCF Data Services" href="http://data.uservoice.com/forums/72027-wcf-data-services-feature-suggestions">Votar sobre funcionalidades o bug fixes para WCF Data Services</a></li>
<li><a title="Votar sobre funcionalidades o bug fixes para WPF" href="http://dotnet.uservoice.com/forums/40583-wpf-feature-suggestions">Votar sobre funcionalidades o bug fixes para WPF</a></li>
<li><a title="Votar sobre funcionalidades o bug fixes para WCF RIA Services" href="http://dotnet.uservoice.com/forums/57026-wcf-ria-services">Votar sobre funcionalidades o bug fixes para WCF RIA Services</a></li>
<li><a title="Votar sobre funcionalidades o bug fixes para Windows Azure" href="http://www.mygreatwindowsazureidea.com/pages/34192-windows-azure-feature-voting">Votar sobre funcionalidades o bug fixes para Windows Azure</a></li>
<li><a title="Votar sobre funcionalidades o bug fixes para SQL Azure" href="http://www.mygreatwindowsazureidea.com/forums/34685-sql-azure-feature-voting">Votar sobre funcionalidades o bug fixes para SQL Azure</a></li>
<li><a title="Votar sobre funcionalidades o bug fixes para ASP.NET and Web Stack Performance" href="http://aspnet.uservoice.com/forums/100405-performance">Votar sobre funcionalidades o bug fixes para ASP.NET and Web Stack Performance</a></li>
<li><a title="Votar sobre funcionalidades o bug fixes para Visual Studio Performance" href="http://aspnet.uservoice.com/forums/41233-visual-studio-performance-feedback">Votar sobre funcionalidades o bug fixes para Visual Studio Performance</a></li>
</ul>
<p>A votar!</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/como-ayudar-a-mejorar-el-net-framework/' addthis:title='Como ayudar a mejorar el .NET Framework ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://gabrielrodriguez.net/como-ayudar-a-mejorar-el-net-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Curso de ASP.NET MVC 3 de Pluralsight gratis gracias a Microsoft</title>
		<link>http://gabrielrodriguez.net/curso-de-asp-net-mvc-3-de-pluralsight-gratis-gracias-a-microsoft/</link>
		<comments>http://gabrielrodriguez.net/curso-de-asp-net-mvc-3-de-pluralsight-gratis-gracias-a-microsoft/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 03:37:55 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Recursos Gratis]]></category>
		<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Recursos]]></category>

		<guid isPermaLink="false">http://gabrielrodriguez.net/?p=899</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/curso-de-asp-net-mvc-3-de-pluralsight-gratis-gracias-a-microsoft/' addthis:title='Curso de ASP.NET MVC 3 de Pluralsight gratis gracias a Microsoft '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Scott Guthrie simplemente sigue produciendo cosas geniales&#8230; Hace unos días, Scott anunció que Microsoft logró un acuerdo con Pluralsight para que abrieran de forma gratuita su curso en linea de ASP.NET MVC 3, pero solo hasta Marzo 18. El curso sobre los siguientes temas principalmente: Introducción a ASP.NET MVC 3 Razor View Engine (ya no [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/curso-de-asp-net-mvc-3-de-pluralsight-gratis-gracias-a-microsoft/' addthis:title='Curso de ASP.NET MVC 3 de Pluralsight gratis gracias a Microsoft ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/curso-de-asp-net-mvc-3-de-pluralsight-gratis-gracias-a-microsoft/' addthis:title='Curso de ASP.NET MVC 3 de Pluralsight gratis gracias a Microsoft '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p><a href="http://gabrielrodriguez.net/wp-content/uploads/2009/07/net-logo-bigger.png"><img class="size-full wp-image-379 alignnone" title=".NET Logo" src="http://gabrielrodriguez.net/wp-content/uploads/2009/07/net-logo-bigger.png" alt="" width="328" height="81" /></a></p>
<p><strong>Scott Guthrie</strong> simplemente sigue produciendo cosas geniales&#8230;</p>
<p>Hace unos días, Scott<a title="Pluralsight acuerda con Microsoft abrir gratuitamente su curso de ASP.NET MVC 3 hasta Marzo 18" href="http://weblogs.asp.net/scottgu/archive/2011/03/09/free-video-training-asp-net-mvc-3-features.aspx"> anunció que Microsoft logró un </a><strong><a title="Pluralsight acuerda con Microsoft abrir gratuitamente su curso de ASP.NET MVC 3 hasta Marzo 18" href="http://weblogs.asp.net/scottgu/archive/2011/03/09/free-video-training-asp-net-mvc-3-features.aspx">acuerdo con Pluralsight</a> para que abrieran de forma gratuita su <a title="curso en linea de ASP.NET MVC 3 de Pluralsight" href="http://www.pluralsight-training.net/microsoft/players/PSODPlayer.aspx?author=scott-allen&amp;name=mvc3-introduction&amp;mode=live&amp;clip=0&amp;course=aspdotnet-mvc3">curso en linea de ASP.NET MVC 3</a></strong>, pero <strong>solo hasta Marzo 18</strong>.</p>
<p>El curso sobre los siguientes <strong>temas </strong>principalmente:</p>
<ul>
<li>Introducción a ASP.NET MVC 3</li>
<li>Razor View Engine (ya no se siente mas el spaguetti-code feeling)</li>
<li>Controllers</li>
<li>Models</li>
<li>NuGet (so cool)</li>
<li>Dependency Resolucion</li>
</ul>
<p>Aprovechen y vean el curso. Llevo poco aprendiendo <strong>ASP.NET MVC</strong> pero ya me gusta suficiente como para dejar WebForms&#8230;</p>
<p>Espero les sirva.</p>
<p>Liga: <a title="Curso de AS.NET MVC 3 gratis" href="http://www.pluralsight-training.net/microsoft/players/PSODPlayer.aspx?author=scott-allen&amp;name=mvc3-introduction&amp;mode=live&amp;clip=0&amp;course=aspdotnet-mvc3">Curso de ASP.NET MVC 3 gratis</a></p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/curso-de-asp-net-mvc-3-de-pluralsight-gratis-gracias-a-microsoft/' addthis:title='Curso de ASP.NET MVC 3 de Pluralsight gratis gracias a Microsoft ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://gabrielrodriguez.net/curso-de-asp-net-mvc-3-de-pluralsight-gratis-gracias-a-microsoft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extensiones de Visual Studio para funcionalidad agregada</title>
		<link>http://gabrielrodriguez.net/extensiones-de-visual-studio-para-funcionalidad-agregada/</link>
		<comments>http://gabrielrodriguez.net/extensiones-de-visual-studio-para-funcionalidad-agregada/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 13:09:40 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Extension Manager]]></category>
		<category><![CDATA[Extensions]]></category>
		<category><![CDATA[MEF]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>

		<guid isPermaLink="false">http://gabrielrodriguez.net/?p=857</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/extensiones-de-visual-studio-para-funcionalidad-agregada/' addthis:title='Extensiones de Visual Studio para funcionalidad agregada '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>A pesar de estar utilizando Visual Studio 2010 por ya casi un año, fue hasta apenas este fin de semana pasado que descubrí el sistema de Extensiones de Visual Studio 2010. El &#8220;Extension Manager&#8221; es la manera en que Microsoft permite extender y mejorar Visual Studio, a través de plugins, add-ins, macros, templates y más [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/extensiones-de-visual-studio-para-funcionalidad-agregada/' addthis:title='Extensiones de Visual Studio para funcionalidad agregada ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/extensiones-de-visual-studio-para-funcionalidad-agregada/' addthis:title='Extensiones de Visual Studio para funcionalidad agregada '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p><a href="http://gabrielrodriguez.net/wp-content/uploads/2009/10/visual-studio-2010-logo.PNG"><img class="alignnone size-full wp-image-580" title="Visual Studio 2010 Logo" src="http://gabrielrodriguez.net/wp-content/uploads/2009/10/visual-studio-2010-logo.PNG" alt="Visual Studio 2010 Logo" width="233" height="178" /></a></p>
<p>A pesar de estar utilizando Visual Studio 2010 por ya casi un año, fue hasta apenas este fin de semana pasado que descubrí el <strong>sistema de Extensiones de Visual Studio 2010</strong>.</p>
<p>El &#8220;<strong>Extension Manager</strong>&#8221; es la manera en que Microsoft permite<strong> extender y mejorar Visual Studio</strong>, a través de plugins, add-ins, macros, templates y más (a las que ahora se refieren solamente como &#8220;<strong>extensiones</strong>&#8220;), pero de una manera <strong>centralizada y estandarizada</strong>.</p>
<p><a href="http://gabrielrodriguez.net/wp-content/uploads/2011/02/visual-studio-2010-extension-manager.png"><img class="alignnone size-full wp-image-859" title="Visual Studio Extension Manager Tool Menu" src="http://gabrielrodriguez.net/wp-content/uploads/2011/02/visual-studio-2010-extension-manager.png" alt="Visual Studio Extension Manager Tool Menu" width="427" height="308" /></a></p>
<p>Antes, si alguien aprovechaba algún plugin para Visual Studio, era porque se lo había topado en alguna página, blog, revista o recomendado por alguien más, y ya no es así. Microsoft creó la <a title="Visual Studio Gallery" href="http://visualstudiogallery.msdn.microsoft.com/"><strong>Visual Studio Gallery</strong></a>, que es un <strong>repositorio centralizado de Extensiones de Visual Studio</strong>, y que <strong>podemos navegar</strong> tanto con un <strong>browser</strong>, como <strong>directamente dentro del Extension Manager</strong> de Visual Studio. El Extension Manager se ve así:</p>
<p><a href="http://gabrielrodriguez.net/wp-content/uploads/2011/02/visual-studio-2010-extension-manager-window.png"><img class="alignnone size-full wp-image-860" title="Visual Studio 2010 Extension Manager" src="http://gabrielrodriguez.net/wp-content/uploads/2011/02/visual-studio-2010-extension-manager-window.png" alt="Visual Studio 2010 Extension Manager" width="595" height="317" /></a></p>
<p><strong>La interfaz visual es muy buena</strong>, y la <strong>funcionalidad </strong>es todavía mejor. Desde la ventana única del Extension Manager podemos <strong>instalar nuevas extensiones</strong>, <strong>visualizar </strong>todas las <strong>extensiones </strong>que tenemos <strong>instaladas</strong>, <strong>filtrarlas </strong>por categoría (Controles, Templates, Tools), <strong>deshabilitar o desinstalar </strong>extensiones <strong>individualmente</strong>, y hasta <strong>actualizar las extensiones</strong>. Eso significa ahorrarse el trabajo de ir a la página web de cada desarrollador de las extensiones que tengamos instaladas, bajar un ejecutable para actualizar la extensión, etc.</p>
<p>El <strong>Extension Manager de Visual Studio 2010</strong> aprovecha que Microsoft diseñó Visual Studio e integró <a title="MEF - Managed Extensibility Framework" href="http://mef.codeplex.com/"><strong>MEF</strong> (Managed Extensibility Framework)</a>, que es un <strong>framework público (y Open Source)</strong> ofrecido por Microsoft para que los desarrolladores de software puedan diseñar sus aplicaciones considerando puntos de extensión, pero eso es otro post.</p>
<p>El hecho de haber descubierto esta funcionalidad de Visual Studio, hizo que me pasara unas 2 horas buscando extensiones útiles, las cuales iré recomendado y describiendo en posts futuros, pero la primera que les dejo es una que provee una de las funcionalidades que más utilizo de ReSharper: <strong>Ctrl + Click para ir a la definición de un Type</strong>. La extensión se llama &#8220;<a title="Go To Definition - Visual Studio 2010 Extension" href="http://visualstudiogallery.msdn.microsoft.com/4b286b9c-4dd5-416b-b143-e31d36dc622b">Go To Definition</a>&#8220;, y fue creada por <a title="Noah Richards" href="http://visualstudiogallery.msdn.microsoft.com/site/profile?userName=Noah%20Richards">Noah Richards</a>.</p>
<p>Espero les sirva y aprovechen esta excelente funcionalidad e de Visual Studio.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/extensiones-de-visual-studio-para-funcionalidad-agregada/' addthis:title='Extensiones de Visual Studio para funcionalidad agregada ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://gabrielrodriguez.net/extensiones-de-visual-studio-para-funcionalidad-agregada/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Opiniones sobre contratacion de Desarrolladores de Software en Mexico</title>
		<link>http://gabrielrodriguez.net/opiniones-sobre-contratacion-de-desarrolladores-de-software-en-mexico/</link>
		<comments>http://gabrielrodriguez.net/opiniones-sobre-contratacion-de-desarrolladores-de-software-en-mexico/#comments</comments>
		<pubDate>Sat, 05 Feb 2011 19:37:34 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mexico]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://gabrielrodriguez.net/?p=830</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/opiniones-sobre-contratacion-de-desarrolladores-de-software-en-mexico/' addthis:title='Opiniones sobre contratacion de Desarrolladores de Software en Mexico '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Disclaimer: Esta es mi opinión personal y no refleja de ninguna manera la opinión o ideas de la empresa para la cual trabajo. Los casos, opiniones o consejos aquí descritos no se basan en mi experiencia en una sola empresa, sino a lo largo de mi carrera. Los últimos 3 blog posts que leí trataron [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/opiniones-sobre-contratacion-de-desarrolladores-de-software-en-mexico/' addthis:title='Opiniones sobre contratacion de Desarrolladores de Software en Mexico ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/opiniones-sobre-contratacion-de-desarrolladores-de-software-en-mexico/' addthis:title='Opiniones sobre contratacion de Desarrolladores de Software en Mexico '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p><a href="http://gabrielrodriguez.net/wp-content/uploads/2011/02/developers.jpg"><img class="alignnone size-full wp-image-832" title="Developer in whiteboard" src="http://gabrielrodriguez.net/wp-content/uploads/2011/02/developers.jpg" alt="Developer in whiteboard" width="425" height="307" /></a></p>
<p><em>Disclaimer: Esta es mi opinión personal y no refleja de ninguna manera la opinión o ideas de la empresa para la cual trabajo. Los casos, opiniones o consejos aquí descritos no se basan</em> en mi experiencia en una sola empresa, sino a lo largo de mi carrera.</p>
<p>Los últimos 3 blog posts que leí trataron sobre las opiniones de 3 desarrolladores sobre el <strong>proceso de contratación de desarrolladores de software</strong>, y especialmente sobre sus <strong>aptitudes y actitud</strong>. Good to know I&#8217;m not alone.</p>
<p><strong>Mi opinión y experiencia personal sobre todo esto es</strong>:</p>
<p>En casi cualquier país y tipos de empleo, hay demasiada gente que  se termina sintiendo cómoda en su trabajo actual y dejan de aprender.  Cuando tengan que buscar otro trabajo, puede que su experiencia les  sirva, pero el no haber continuado aprendiendo cosas nuevas sobre su  profesión les va a hacer más complicado competir contra gente nueva. <strong>Nunca dejes de leer y aprender sobre tu trabajo</strong>.</p>
<p>En México, en mi experiencia en personal, mucha gente va a una entrevista sin prepararse, solamente &#8220;a ver que sale&#8221;. Cuando alguien te pregunta sobre tu experiencia previa y no puedes dar un resumen conciso, eso dice mucho. <strong>Siempre hay que estar preparado para hablar sobre tu trabajo y tu experiencia laboral.</strong></p>
<p>A pesar de que me ha tocado trabajar con mucha gente buena, he notado que<strong> la mayoría de los desarrolladores en las empresas en las que he trabajado, difícilmente hacen algo relacionado con su profesión en su tiempo libre.</strong> Estoy de acuerdo sobre los límites de la vida personal y el trabajo, pero creo que<strong> el 100% de la gente que es excelente en su trabajo (sea cual sea el puesto o nivel) es porque les gusta lo que hacen y no se limitan a aprender solamente en sus 8 horas de trabajo. </strong>Un programador que llega a su casa, y en cualquier momento, dedica 1 hora de su tiempo libre a aprender algo nuevo sobre programación (Sea leer un blog post, un libro, una certificación) tiene demasiada ventaja sobre cualquier otro desarrollador (del mismo skill-set), tanto para habilidad, como para promociones de puesto, aumentos, etc.</p>
<p><strong>La actitud es importante, de ambas partes</strong>. Lo peor que puede pasar en una entrevista es que el entrevistador no sea consciente de la importancia del proceso. La empresa está confiando en él para que haga una recomendación sobre si emplear o no al entrevistado, y eso es crítico para ambos lados. La empresa se hace mejor cada vez que un buen candidato entra a la empresa. Y el entrevistado puede realmente merecer y necesitar el trabajo. <strong>Pocas cosas me desagradan como que un entrevistador no le de la importancia debida al proceso</strong> <strong>o sea arrogante al respecto</strong>. Por el otro lado, la actitud del entrevistado jamás debe ser de arrogancia. <strong>Nadie quiere contratar a alguien que no va a ser un buen team-player</strong>.</p>
<p>Algunas veces, muy pocas, he puesto a candidatos a escribir en una hoja de papel o un pizarrón una hoja de papel, un problema exageradamente sencillo de programación. <strong>No importa que tan nervioso estés durante la entrevista, si acaso lo estás, pero programar una función sencilla debería ser parte de la habilidad de cualquier desarrollador.</strong> No recuerdo alguien que lo haya contestado decentemente, o siquiera lo haya contestado bien.</p>
<p><strong>A cualquier desarrollador que lea esto</strong>:</p>
<p><strong>Evalúate</strong>. Si eres el weakest-link en tu equipo o empresa, <strong>haz algo por mejorar</strong>. Lee y/o solicita ayuda a los demás desarrolladores de tu equipo, consigue un mentor. Si no eres el weakest-link, aún así<strong> es seguro que hay alguien en tu equipo o empresa de quien puedes aprender</strong>. Hazlo, y además,<strong> hazte mentor de alguien que sepa menos que tú</strong>.</p>
<p>Ahora&#8230;algunas acciones que personalmente creo que mejorarían demasiado la calidad de desarrolladores y haría más fácil el proceso de entrevistar:</p>
<ol>
<li>Las <strong>escuelas </strong>deberían contratar expertos en el campo de sus diversas ofertas de carreras profesionales, y siempre<strong> actualizar y alinear los materiales de enseñanza en la carrera profesional con los temas y conocimientos requeridos en las empresas</strong>.</li>
<li>Cada empresa debería de dar algo de <strong>retroalimentación a todos sus candidatos</strong>. A pesar de que puede consumir tiempo, por algún lado se tiene que empezar.</li>
<li><strong>Ejercicios </strong>y preguntas <strong>de desarrollo </strong>(coding) deberían ser <strong>parte de cualquier entrevista técnica</strong>.</li>
<li>Las <strong>escuelas</strong>, en los últimos semestres antes de que el estudiante se gradúe, deberían proveer <strong>talleres para preparar a los estudiantes para entrevistas laborales</strong>, y como parte de esos talleres, deberían invitar a personal de las empresas del campo.</li>
</ol>
<p>Les dejo las <strong>frases </strong>que se me hacen <strong>más notables</strong> de los 3 artículos&#8230;</p>
<ul>
<li><em>&#8220;&#8230;But I have always felt that it was my duty as a professional to also learn things outside of my job. I want to know if a candidate is willing to invest in themselves before I invest three months to train them.&#8221;</em></li>
<li><em>&#8220;Hiring the right people is hard. Searching for the right job is hard. Having the right attitude and expectations can make it easier, but nothing can make it easy&#8221;</em></li>
<li><em>&#8220;So, if you want to have a career in programming I suggest you spend less time worrying about the fairness of the market or getting what you deserve and more time learning your craft.  Even better, learn what you really want and go after it no matter what</em><em>&#8221;<br />
</em></li>
<li><em>&#8220;But it never changed what I was going to do or how I was going to do it.  I&#8217;ve been programming professionally for over 16 years and I don&#8217;t believe I&#8217;ll ever stop.  I&#8217;ve been learning how to be a better programmer for over 16 years and I hope I&#8217;ll never stop.  Every year I find new challenges and ways to grow my skills &#8211; most of them outside of work</em><em>&#8220;.</em></li>
<li><em>&#8220;I don&#8217;t do this to get a better job and I don&#8217;t believe I deserve anything for all of my work.  I&#8217;ve done it for me and that is enough.</em><em>&#8221;<br />
</em></li>
<li><em>&#8220;Sadly developers of low quality are far more common than the ones of decent or high quality.&#8221;</em></li>
<li><em>&#8220;Even more sad is the fact that developers having a (very) limited skill  set are most often not aware of this fact and consider themselves to be  “seniors”.&#8221;</em> &#8211;<em> </em><strong>*shrugs* *sighs*</strong></li>
<li><em>&#8220;Am I expecting too much? I don’t think so. Developers have I high  responsibility. They produce software to automate business or mission  critical processes. One should expect this software to be of high  quality. To write high quality software we need good developers!&#8221;</em></li>
<li><em>&#8220;I understand that most people are capable of learning anything given the opportunity, but padding their skills makes them look dishonest.&#8221;</em><strong> </strong></li>
</ul>
<p><em><br />
</em></p>
<p><strong>Ligas a los posts:</strong></p>
<p><a title="Ranting about the quality of developers - Gabriel Schenker" href="http://www.lostechies.com/blogs/gabrielschenker/archive/2011/01/18/ranting-about-the-quality-of-developers.aspx">Ranting about the quality of developers &#8211; Gabriel Schenker</a></p>
<p><a title="Thoughts on Hiring Developers - Ray Houston" href="http://www.lostechies.com/blogs/rhouston/archive/2011/02/04/thoughts_2D00_on_2D00_hiring_2D00_developers.aspx">Thoughts on Hiring Developers &#8211; Ray Houston</a></p>
<p><a title="To Thine Own Self Be True - That Other Guy" href="http://www.lostechies.com/blogs/thatotherguy/archive/2011/02/04/to-thine-own-self-be-true.aspx">To Thine Own Self Be True &#8211; That Other Guy</a></p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/opiniones-sobre-contratacion-de-desarrolladores-de-software-en-mexico/' addthis:title='Opiniones sobre contratacion de Desarrolladores de Software en Mexico ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://gabrielrodriguez.net/opiniones-sobre-contratacion-de-desarrolladores-de-software-en-mexico/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Links del dia #1</title>
		<link>http://gabrielrodriguez.net/links-del-dia-1/</link>
		<comments>http://gabrielrodriguez.net/links-del-dia-1/#comments</comments>
		<pubDate>Sat, 22 Jan 2011 22:59:18 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Bases de Datos]]></category>
		<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[Links del Dia]]></category>
		<category><![CDATA[Mejores Practicas]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://gabrielrodriguez.net/?p=814</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/links-del-dia-1/' addthis:title='Links del dia #1 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Ya que de perdido paso 2 horas al día leyendo artículos técnicos sobre desarrollo de software o cosas relacionadas a sistemas, y durante los últimos 5 años la mayoría de lo que he aprendido ha sido en base a blog posts, he decido empezar una serie de posts recomendado uno o más artículo/posts que haya [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/links-del-dia-1/' addthis:title='Links del dia #1 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/links-del-dia-1/' addthis:title='Links del dia #1 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>Ya que de perdido paso 2 horas al día leyendo artículos técnicos sobre desarrollo de software o cosas relacionadas a sistemas, y durante los últimos 5 años la mayoría de lo que he aprendido ha sido en base a blog posts, he decido empezar una serie de posts recomendado uno o más artículo/posts que haya leído durante ese día, categorizados por tecnología o área.</p>
<p>No se si logre hacer esto diariamente, pero al menos el intento se hará. Aquí estan los primeros artículos interesantes que he leído el día de hoy:</p>
<p><strong>SQL</strong></p>
<p><a title="SQL - Introduction to JOINS - Basic of JOINS" href="http://blog.sqlauthority.com/2009/04/13/sql-server-introduction-to-joins-basic-of-joins/">Introduction to JOINS &#8211; Basic of JOINS</a>: Escrito por Pinal Dave, un experto de SQL. Mucha gente no sabe explicar los JOINS en SQL o la diferencia exacta entre ellos, buen artículo.</p>
<p><strong>Personal Improvement</strong></p>
<p><a title="Basic Presentation Skills Training - Notes from Joel Abrahamsson" href="http://joelabrahamsson.com/entry/notes-from-basic-presentation-skills-training">Basic Presentation Skills Training &#8211; Notes from Joel Abrahamsson</a>: Parte de mi rol de trabajo es dar algunas presentaciones técnicas, y la verdad es que la mayoría de la gente no somos buenos para esto. Buenas notas y tips de este desarrollador que está tomando un curso al respecto.</p>
<p><strong>.NET / C# / ASP.NET</strong></p>
<p><a title="The State of the ALT.NET Movement" href="http://codebetter.com/iancooper/2011/01/16/alt-next/">ALT.Next</a> &#8211; ALT.NET es un &#8220;movimiento&#8221; o &#8220;corriente&#8221; integrado por varios desarrolladores enfocados en traer las mejores prácticas y herramientas de otras comunidades de desarrollo (Java, Ruby, Python, etc) a la comunidad de Microsoft y .NET en general. Aunque su auge más fuerte ya pasó, este artículo da una idea de hacia donde van.</p>
<p><strong>Desarrollo de Sistemas en General</strong></p>
<p><a title="Software Development Metodologies at a Glance" href="http://blogs.msdn.com/b/jmeier/archive/2011/01/21/methodologies-at-a-glance.aspx">Metodologies at a Glance</a><strong> &#8211; </strong>J.D. Meier, un Principal Program Manager de Microsoft, en el equipo de Patterns &amp; Practices, escribe posts muy útiles constantemente. Este post es un mapa de algunas actividades/artefactos clave en varios procesos de desarrollo de software.</p>
<p>That&#8217;s it. Read on.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/links-del-dia-1/' addthis:title='Links del dia #1 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://gabrielrodriguez.net/links-del-dia-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIX10 &#8211; excelentes conferencias y recursos de desarrollo</title>
		<link>http://gabrielrodriguez.net/mix10-excelentes-conferencias-y-recursos-de-desarrollo/</link>
		<comments>http://gabrielrodriguez.net/mix10-excelentes-conferencias-y-recursos-de-desarrollo/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 22:19:31 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Diseño Web]]></category>
		<category><![CDATA[MIX]]></category>

		<guid isPermaLink="false">http://gabrielrodriguez.net/?p=734</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/mix10-excelentes-conferencias-y-recursos-de-desarrollo/' addthis:title='MIX10 &#8211; excelentes conferencias y recursos de desarrollo '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Del pasado 15 al 17 de Marzo se llevó a cabo la conferencia MIX10, que es una serie de conferencias de diseño y desarrollo web organizada por Microsoft, con platicas impartidas por la gente que está causando más impacto en la comunidad de desarrollo online (las sesiones son escogidas en base a votos, durante meses [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/mix10-excelentes-conferencias-y-recursos-de-desarrollo/' addthis:title='MIX10 &#8211; excelentes conferencias y recursos de desarrollo ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/mix10-excelentes-conferencias-y-recursos-de-desarrollo/' addthis:title='MIX10 &#8211; excelentes conferencias y recursos de desarrollo '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p><img class="alignnone size-full wp-image-735" title="MIX10 Logo" src="http://gabrielrodriguez.net/wp-content/uploads/2010/03/mix10-logo.png" alt="MIX10" width="218" height="62" /></p>
<p>Del pasado 15 al 17 de Marzo se llevó a cabo la conferencia <strong>MIX10</strong>, que es una <strong>serie de conferencias de diseño y desarrollo web </strong>organizada por Microsoft, con platicas impartidas por la gente que está causando más impacto en la comunidad de desarrollo online (las sesiones son escogidas en base a votos, durante meses anteriores al evento).</p>
<p>Las platicas de este año se ve que estuvieron muy interesantes&#8230;así que aquí les dejo las ligas a los videos de las pláticas y también a una muy buena sección de recursos que armaron en el site de <strong>MIX10</strong>, con ligas a <strong>guías de desarrollo</strong> para <strong>Windows 7 Phone Series, Silverlight 4, WCF RIA</strong> y otros tantos temas que son lo relevante de hoy en día.</p>
<p>Algunas de las pláticas fueron:</p>
<ul>
<li>Overview of the Windows Phone 7 Series Application Platform</li>
<li>10 Ways to Attack a Design Problem and Come Out Winning</li>
<li>Stepping Outside the Browser with Microsoft Silverlight 4</li>
<li>Total Experience Design</li>
<li>Understanding the Model-View-ViewModel Pattern</li>
<li>Beyond File | New Company: From Cheesy Sample to Social Platform</li>
<li>The Microsoft Silverlight Analytics Framework</li>
</ul>
<p>Ligas:</p>
<p><a title="MIX10 - The Next Web Now Homepage" href="http://live.visitmix.com/">MIX10 &#8211; The Next Web Now</a></p>
<p><a title="MIX10 - Resources Page (Windows 7 Phone Series, Silverlight 4, etc)" href="http://live.visitmix.com/Resources">MIX10 &#8211; Resources Page (Windows 7 Phone Series, Silverlight 4, etc)</a></p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/mix10-excelentes-conferencias-y-recursos-de-desarrollo/' addthis:title='MIX10 &#8211; excelentes conferencias y recursos de desarrollo ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://gabrielrodriguez.net/mix10-excelentes-conferencias-y-recursos-de-desarrollo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automapper y un buen articulo de diseño de software</title>
		<link>http://gabrielrodriguez.net/automapper-y-un-buen-articulo-de-diseno-de-software/</link>
		<comments>http://gabrielrodriguez.net/automapper-y-un-buen-articulo-de-diseno-de-software/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 06:36:38 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Arquitectura]]></category>
		<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[Mejores Practicas]]></category>
		<category><![CDATA[AutoMapper]]></category>
		<category><![CDATA[Patrones de Diseño]]></category>

		<guid isPermaLink="false">http://gabrielrodriguez.net/?p=716</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/automapper-y-un-buen-articulo-de-diseno-de-software/' addthis:title='Automapper y un buen articulo de diseño de software '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>La semana pasada descubrí AutoMapper, que es un proyecto de .NET gratis y open-source de Jimmy Bogard. Un desarrollador de la oficina me preguntó si había una manera integrada en el framework de transformar las clases generadas por LINQ-To-SQL en clases sencillas (DTOs). No creí que lo hubiera&#8230;pero le comenté que seguramente lo podía hacer [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/automapper-y-un-buen-articulo-de-diseno-de-software/' addthis:title='Automapper y un buen articulo de diseño de software ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/automapper-y-un-buen-articulo-de-diseno-de-software/' addthis:title='Automapper y un buen articulo de diseño de software '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p><img class="alignnone size-full wp-image-728" title="Logo AutoMapper" src="http://gabrielrodriguez.net/wp-content/uploads/2010/03/automapper-logo.png" alt="Logo AutoMapper" width="480" height="49" /></p>
<p>La semana pasada descubrí <a title="AutoMapper" href="http://automapper.codeplex.com/">AutoMapper</a>, que es un proyecto de .NET gratis y open-source de <a title="Jimmy Bogard" href="http://www.lostechies.com/blogs/jimmy_bogard/default.aspx">Jimmy Bogard</a>.</p>
<p>Un desarrollador de la oficina me preguntó si había una manera integrada en el framework de transformar las clases generadas por LINQ-To-SQL en clases sencillas (DTOs). No creí que lo hubiera&#8230;pero le comenté que seguramente lo podía hacer por Reflection. Yo ya habia hecho eso antes, pero supuse que debía haber alguna mejor manera. Después de buscar un poco en StackOverflow.com, alguna de las respuestas linkeaba a AutoMapper y descubrí que era exactamente lo que aquel desarrollador estaba buscando.</p>
<p><strong>AutoMapper </strong>es descrito en su página principal de la siguiente manera:</p>
<p><em>AutoMapper uses a fluent configuration API to define an object-object  mapping strategy.  AutoMapper uses a convention-based matching algorithm  to match up source to destination values.  Currently, AutoMapper is  geared towards model projection scenarios to flatten complex object  models to DTOs and other simple objects, whose design is better suited  for serialization, communication, messaging, or simply an  anti-corruption layer between the domain and application layer.</em></p>
<p>Excelente&#8230;no solo utiliza <a title="Fluent Interfaces" href="http://en.wikipedia.org/wiki/Fluent_interface"><strong>interfaces fluidas</strong></a>, sino que también se basa en <a title="Convention over Configuration" href="http://en.wikipedia.org/wiki/Convention_over_configuration"><strong>Convention Over Configuration</strong></a>. Es decir&#8230;solo tenemos que (y podemos!) configurar las situaciones excepcionales. Las <strong>ventajas </strong>que le veo a utilizar AutoMapper (a pesar de estar incorporando una referencia más a nuestros proyectos) es que es un proyecto público (de open source) y que además tiene a un muy buen desarrollador respaldándolo, que por ser su proyecto, se enfoca en mejorarlo y perfeccionarlo con nuevas funcionalidades, haciéndolo más eficiente, etc. Además, debido a que ya tiene una considerable base de usuarios (3,702 downloads), la mayoría de los bugs que pudiéramos toparnos, ya han sido resueltos.</p>
<p>Un <strong>ejemplo </strong>exagerádamente básico del uso de AutoMapper:</p>
<pre class="brush: csharp; title: ; notranslate">

public class Class1
 {
   public string FullName { get; set; }
   public int Age { get; set; }
   public char Gender { get; set; }
   public void DoIt()
   {
     Console.WriteLine(&quot;Test&quot;);
   }

   public List&lt;string&gt; Addresses { get; set; }

   public Class1()
   {
     Addresses = new List&lt;string&gt;();
   }
 }

 public class Class2
 {
   public string FullName { get; set; }
   public int Age { get; set; }
   public char Gender { get; set; }
 }

private void Form1_Load(object sender, EventArgs e)
{
   Mapper.CreateMap&lt;Class1, Class2&gt;();

   var c2 = Mapper.Map&lt;Class1, Class2&gt;(c1);
   MessageBox.Show(c2.FullName);
}
</pre>
<p>Ok, de este ejemplo podemos ver:</p>
<ul>
<li>Class1 es poco más compleja que Class2, ya que tiene una List&lt;string&gt; y un método definido (DoIt())</li>
<li>Class2 es una versión simple de Class1, con el objetivo de funcionar como un <a title="Data Transfer Object" href="http://en.wikipedia.org/wiki/Data_transfer_object"><strong>Data Transfer Object</strong></a>.</li>
</ul>
<p>Como pueden ver, con la instrucción:</p>
<pre class="brush: csharp; title: ; notranslate">
Mapper.CreateMap&lt;Class1, Class2&gt;();
</pre>
<p>estamos indicándole a AutoMapper que la Class1 y Class2 están relacionadas (mappeadas). Y la siguiente línea de código:</p>
<pre class="brush: csharp; title: ; notranslate">
var c2 = Mapper.Map&lt;Class1, Class2&gt;(c1);&lt;/pre&gt;
</pre>
<p>está creando una instancia de tipo Class2, basada en la instancia de c1 que ya teníamos, inicializada y asignando dinámicamente los valores de dicha instancia (c1) a la nueva instancia c2.</p>
<p>Class1, en este caso, sería un ejemplo de una clase de LINQ-To-SQL, mientras que Class2 sería la clase que queremos usar como DTO.</p>
<p><strong>Esta funcionalidad es sólamente la más básica de AutoMapper (flattening</strong>). También soporta <strong>proyecciones </strong>(utilizar ciertas propiedades o sub-sets de un valor para mapear a otra propiedad), <strong>Listas y Arrays</strong>, etc. Para más información, visisten la <a title="Documentacion de AutoMapper" href="http://automapper.codeplex.com/documentation">documentación de AutoMapper</a>.</p>
<p>Y sobre el buen artículo de diseño&#8230;para mi sorpresa lo encontré 2 dias después de haber descubierto AutoMapper, y el artículo lo escribió Jimmy Bogard.</p>
<p>El artículo se llama originalmente &#8220;<a title="Strengthening your domain: Encapsulated collections" href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2010/03/10/strengthening-your-domain-encapsulated-collections.aspx">Strengthening your domain: Encapsulated collections</a>&#8220;. Jimmy habla de como debemos de diseñar nuestras clases para <strong>no exponer inadvertidamente funcionalidad de más (extra, innecesaria) que podría permitir operaciones no lógicas sobre nuestras entidades</strong>, y enfocarnos en <strong>soportar exclusiva y claramente sólo las operaciones que el dominio de negocio debe permitir sobre las entidades de nuestro proyecto</strong>. El artículo también me hizo pensar que <strong>los accesors son algo que mucha gente no considera</strong> a la hora de exponer sus propiedades. Léanlo y si gustan dejar sus comentarios&#8230;adelante.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/automapper-y-un-buen-articulo-de-diseno-de-software/' addthis:title='Automapper y un buen articulo de diseño de software ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://gabrielrodriguez.net/automapper-y-un-buen-articulo-de-diseno-de-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como formatear una cantidad a currency en .NET controlando el numero de decimales</title>
		<link>http://gabrielrodriguez.net/como-formatear-una-cantidad-a-currency-en-net-controlando-el-numero-de-decimales/</link>
		<comments>http://gabrielrodriguez.net/como-formatear-una-cantidad-a-currency-en-net-controlando-el-numero-de-decimales/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 19:08:44 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://gabrielrodriguez.net/?p=701</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/como-formatear-una-cantidad-a-currency-en-net-controlando-el-numero-de-decimales/' addthis:title='Como formatear una cantidad a currency en .NET controlando el numero de decimales '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Tantas opciones que hay para formatear strings en.NET, que es difícil memorizar todas. Hoy tuve que formatear una cifra numérica que en la base de datos está como decimal, pero en el UI no quería desplegar ninguno de los decimales. Casi todo el mundo ha utilizado el string.Format(&#8220;{0:C&#8221;), el cual formatearía como si la cantidad [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/como-formatear-una-cantidad-a-currency-en-net-controlando-el-numero-de-decimales/' addthis:title='Como formatear una cantidad a currency en .NET controlando el numero de decimales ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/como-formatear-una-cantidad-a-currency-en-net-controlando-el-numero-de-decimales/' addthis:title='Como formatear una cantidad a currency en .NET controlando el numero de decimales '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><div id="attachment_381" class="wp-caption alignnone" style="width: 250px"><a href="http://gabrielrodriguez.net/wp-content/uploads/2009/07/net-logo.png"><img class="size-full wp-image-381" title=".NET" src="http://gabrielrodriguez.net/wp-content/uploads/2009/07/net-logo.png" alt="" width="240" height="74" /></a><p class="wp-caption-text">.NET</p></div>
<p>Tantas opciones que hay para <strong>formatear strings en.NET</strong>, que es difícil memorizar todas.</p>
<p>Hoy tuve que <strong>formatear una cifra numérica</strong> que en la base de datos está como <strong>decimal</strong>, pero <strong>en el UI no quería desplegar ninguno de los decimales</strong>. Casi todo el mundo ha utilizado el <strong>string.Format(&#8220;{0:C&#8221;)</strong>, el cual formatearía como si la cantidad fuera una <strong>cifra monetaria</strong>, pero eso implica tener decimales.</p>
<p>Algua persona <strong>podría pensar en realizar esto desde el stored procedure</strong> o el query que trae la información, pero personalmente<strong> creo que eso es un error</strong>, ya que <strong>los datos deben estar siempre  intactos</strong> y <strong>lo unico que debemos modificar es el formato </strong>en el que los queremos desplegar. Además, eso implicaría tener que estar controlando también el formato del símbolo separador de miles. Esto es algo que simplemente no se debe hacer en base de datos.</p>
<p>Googleando, encontré en los forums de ASP.NET<strong> la siguiente manera de hacerlo, pero tampoco es la más correcta</strong>:</p>
<pre class="brush: csharp; title: ; notranslate">

System.Globalization.NumberFormatInfo nfi = new System.Globalization.NumberFormatInfo();
nfi.CurrencyDecimalDigits = 0;
nfi.CurrencySymbol =&quot;$&quot;;
myLabel.Text =string.Format(nfi,&quot;{0:C}&quot;, ad.Price);
</pre>
<p>Ya que estoy utilizando esto en un control Repeater, tendría que crear un método con las primeras 3 líneas de texto anteriores, y eso implicaría estar generando varias instancias de NumberFormatInfo.</p>
<p>Para ya no hacer más largo este post, <strong>les dejo la solución correcta</strong>.</p>
<pre class="brush: csharp; title: ; notranslate">

string.Format(&quot;0:C0&quot;, ad.Price);
</pre>
<p>Así de sencillo&#8230;y no lo especifican en ningun lugar de MSDN&#8230;lo vine a encontrar aqui: <a title=".NET Format String 101" href="http://blogs.msdn.com/kathykam/archive/2006/03/29/564426.aspx">.NET Format String 101</a>. Obvio decirlo, basta cambiar el C0 por C1, C2, C3 o Cx para<strong> determinar el número de decimales que queremos desplegar</strong>. Esto también hace mucho más facil <strong>poner ese format string en el archivo de configuración y poder reutilizarlo</strong> en varias pantallas sin tener que estar cambiando código.</p>
<p>Les dejo también otra buena referencia de string.Format: <a title="String Formatting in C#" href="http://blog.stevex.net/string-formatting-in-csharp/">String Formatting in C#</a></p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/como-formatear-una-cantidad-a-currency-en-net-controlando-el-numero-de-decimales/' addthis:title='Como formatear una cantidad a currency en .NET controlando el numero de decimales ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://gabrielrodriguez.net/como-formatear-una-cantidad-a-currency-en-net-controlando-el-numero-de-decimales/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Aplicar formatos condicionales a numeros con string.Format</title>
		<link>http://gabrielrodriguez.net/aplicar-formatos-condicionales-a-numeros-con-string-format/</link>
		<comments>http://gabrielrodriguez.net/aplicar-formatos-condicionales-a-numeros-con-string-format/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 06:13:10 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://gabrielrodriguez.net/?p=693</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/aplicar-formatos-condicionales-a-numeros-con-string-format/' addthis:title='Aplicar formatos condicionales a numeros con string.Format '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Esto es algo que descubrí hoy referente a formateo de números en .NET y que por más simple que parezca, tiene mucha utilidad, ya que puede reducir un bloque de 3 o 6 líneas de código, a una sola línea. En lugar de necesitar varios if&#8217;s para evaluar el valor del número que vamos a [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/aplicar-formatos-condicionales-a-numeros-con-string-format/' addthis:title='Aplicar formatos condicionales a numeros con string.Format ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/aplicar-formatos-condicionales-a-numeros-con-string-format/' addthis:title='Aplicar formatos condicionales a numeros con string.Format '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><div id="attachment_381" class="wp-caption alignnone" style="width: 250px"><a href="http://gabrielrodriguez.net/wp-content/uploads/2009/07/net-logo.png"><img class="size-full wp-image-381" title=".NET" src="http://gabrielrodriguez.net/wp-content/uploads/2009/07/net-logo.png" alt="" width="240" height="74" /></a><p class="wp-caption-text">.NET</p></div>
<p>Esto es algo que descubrí hoy referente a <strong>formateo de números en .NET</strong> y que por más simple que parezca, tiene mucha utilidad, ya que puede reducir un bloque de 3 o 6 líneas de código, a una sola línea.</p>
<p>En lugar de necesitar varios if&#8217;s para evaluar el valor del número que vamos a formatear y poder determinar el formato que se va a aplicar (desplegar el número entre paréntesis si es negativo, desplegar la palabra Cero si el número es 0, etc), se puede hacer todo el una sola línea, ya que el metodo <strong>ToString()</strong> permite formatos condicionales de 2 o 3 condiciones&#8230;es decir, podemos hacer esto:</p>
<pre class="brush: csharp; title: ; notranslate">

const string formato = &quot;000;(##);Cero&quot;;

 Console.WriteLine(7.ToString(formato)); // va a desplegar &quot;007&quot;
 Console.WriteLine((-5).ToString(formato)); // va a desplegar &quot;(5)&quot;
 Console.WriteLine(0.ToString(formato)); // va a desplegar &quot;Cero&quot;
</pre>
<div id="attachment_695" class="wp-caption alignnone" style="width: 357px"><img class="size-full wp-image-695" title="Formatos condicionales en .NET usando ToString()" src="http://gabrielrodriguez.net/wp-content/uploads/2010/01/net-formatos-condicionales-strings.png" alt="Formatos condicionales en .NET usando ToString()" width="347" height="129" /><p class="wp-caption-text">Formatos condicionales en .NET usando ToString()</p></div>
<p>El formato entonces es: <strong> &#8220;positivo;negativo;cero&#8221;</strong>.</p>
<p>También es posible especificar solo el formato positivo y negativo.</p>
<p>Espero les sirva.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/aplicar-formatos-condicionales-a-numeros-con-string-format/' addthis:title='Aplicar formatos condicionales a numeros con string.Format ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://gabrielrodriguez.net/aplicar-formatos-condicionales-a-numeros-con-string-format/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usar el operator ternario de C# con nullables</title>
		<link>http://gabrielrodriguez.net/usar-el-operator-ternario-de-c-con-nullables/</link>
		<comments>http://gabrielrodriguez.net/usar-el-operator-ternario-de-c-con-nullables/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 07:39:15 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://gabrielrodriguez.net/?p=677</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/usar-el-operator-ternario-de-c-con-nullables/' addthis:title='Usar el operator ternario de C# con nullables '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Todos los días se aprende algo&#8230; Desde hace mucho tenemos disponible el operador ternario (o condicional) en C#, también conocido como el operador &#8220;?&#8220;. El operador ternario sirve para regresar/usar uno de dos posibles valores, dependiendo de una condición boleana. La estructura es: condicion-boleana ? valor-si-se-cumple : valor-si-no-se-cumple Es decir, permite reducir de esto: a [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/usar-el-operator-ternario-de-c-con-nullables/' addthis:title='Usar el operator ternario de C# con nullables ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/usar-el-operator-ternario-de-c-con-nullables/' addthis:title='Usar el operator ternario de C# con nullables '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><div id="attachment_381" class="wp-caption alignnone" style="width: 250px"><img class="size-full wp-image-381" title=".NET" src="http://gabrielrodriguez.net/wp-content/uploads/2009/07/net-logo.png" alt=".NET" width="240" height="74" /><p class="wp-caption-text">.NET</p></div>
<p>Todos los días se aprende algo&#8230;</p>
<p>Desde hace mucho tenemos disponible el <a title="Operador Ternario o condicional en C#" href="http://msdn.microsoft.com/en-us/library/ty67wk28.aspx"><strong>operador ternario (o condicional) en C#</strong></a>, también conocido como el operador &#8220;<strong>?</strong>&#8220;.</p>
<p>El operador ternario <strong>sirve para regresar/usar uno de dos posibles valores, dependiendo de una condición boleana</strong>.</p>
<p>La estructura es:</p>
<p><strong>condicion-boleana ? valor-si-se-cumple : valor-si-no-se-cumple</strong></p>
<p>Es decir, permite reducir de esto:</p>
<pre class="brush: csharp; title: ; notranslate">

int? myVar; //variable int nullable

if(string.IsNullOrEmpty(textbox1.Text))

{ myVar = null; }

else

{ myVar = Convert.ToInt32(textbox1.Text); }
</pre>
<p>a esto:</p>
<pre class="brush: csharp; title: ; notranslate">

myVar =string.IsNullOrEmpty(textbox1.Text) ? null : Convert.ToInt32(textbox1.Text);
</pre>
<p>Y uno esperaría que el código del segundo bloque compile, pero no es así. En lugar de que funcione, el compilador nos marca el siguiente error:</p>
<p><strong> Type of conditional expression cannot be determined because there is no implicit conversion between &#8216;&lt;null&gt;&#8217; and &#8216;int&#8217; </strong></p>
<p>Yo llevaba años usando el operador ternario y siempre me pareció ilógico que no se permitiera esto. Y probablemente fue más ilógico el hecho de nunca haber googleado como solucionar esto..ya que la solución es simple.</p>
<pre class="brush: csharp; title: ; notranslate">

myVar =string.IsNullOrEmpty(textbox1.Text) ? (int?)null : Convert.ToInt32(textbox1.Text);
</pre>
<p>o</p>
<pre class="brush: csharp; title: ; notranslate">

myVar =string.IsNullOrEmpty(textbox1.Text) ? null : (int?)Convert.ToInt32(textbox1.Text);
</pre>
<p>Simple&#8230;el compilador tenía razon. No hay una conversión implícita entre null e int, <strong>pero sí entre null y Nullable&lt;int&gt; (a.k.a. int?)</strong>. Casteando cualquiera de los lados de la expresión, va a compilar sin problemas.</p>
<p>Espero les sirva.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/usar-el-operator-ternario-de-c-con-nullables/' addthis:title='Usar el operator ternario de C# con nullables ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://gabrielrodriguez.net/usar-el-operator-ternario-de-c-con-nullables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

