<?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>Diario de Programación &#187; anécdotas</title>
	<atom:link href="http://blog.chuidiang.com/tag/anecdotas/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.chuidiang.com</link>
	<description>Programación e informática en general</description>
	<lastBuildDate>Wed, 25 Jan 2012 23:17:43 +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>Tu navegador dice mucho de tí&#8230;</title>
		<link>http://blog.chuidiang.com/2011/04/27/tu-navegador-dice-mucho-de-ti/</link>
		<comments>http://blog.chuidiang.com/2011/04/27/tu-navegador-dice-mucho-de-ti/#comments</comments>
		<pubDate>Wed, 27 Apr 2011 19:23:03 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[anécdotas]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=915</guid>
		<description><![CDATA[&#160;Me ha gustado esta entrada&#160;http://www.victorcuervo.com/2011/01/19/tu-navegador-dice-mucho-de-ti/&#160;Seg&#250;n eso, escribiendo cada letra el navegador te completa con la URL que sueles usar que comience por esa letra. Ah&#237; van las m&#237;as (las que me salto es porque no sale nada): A :&#160;alcala.chuidiang.org B :&#160;blog.chuidiang.com C :&#160;cinetube.es E :&#160;eltiempo.es F :&#160;facebook.com G :&#160;gettertools.com H :&#160;http://webmail.indra.es I :&#160;imageshack.us J :&#160;javadocx.com [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;Me ha gustado esta entrada&nbsp;<a href="http://www.victorcuervo.com/2011/01/19/tu-navegador-dice-mucho-de-ti/">http://www.victorcuervo.com/2011/01/19/tu-navegador-dice-mucho-de-ti/</a>&nbsp;Seg&uacute;n eso, escribiendo cada letra el navegador te completa con la URL que sueles usar que comience por esa letra. Ah&iacute; van las m&iacute;as (las que me salto es porque no sale nada):</p>
<p>A :&nbsp;alcala.chuidiang.org</p>
<p>B :&nbsp;blog.chuidiang.com</p>
<p>C :&nbsp;cinetube.es</p>
<p>E :&nbsp;eltiempo.es</p>
<p>F :&nbsp;facebook.com</p>
<p>G :&nbsp;gettertools.com</p>
<p>H :&nbsp;http://webmail.indra.es</p>
<p>I :&nbsp;imageshack.us</p>
<p>J :&nbsp;javadocx.com</p>
<p>L :&nbsp;localhost:8080</p>
<p>M :&nbsp;micro-blog.chuidiang.org</p>
<p>O :&nbsp;openxmldeveloper.org</p>
<p>P :&nbsp;peliculasyonkis.com</p>
<p>T :&nbsp;travian.net</p>
<p>W :&nbsp;webmail.indra.es</p>
<p>X :&nbsp;xmpp.org</p>
<p>Y :&nbsp;youtube.com</p>
<p>Me gustar&iacute;a saber a cu&aacute;ntos no les sale facebook en la f, o youtube en la Y&#8230;..</p>
<p>Por cierto, en cuanto navegas un poco los resultados cambian&#8230;. y la falta de http:// en mis URL revela que uso chrome y el que no haya puesto los enlaces con enlace &quot;pinchable&quot;, que soy muy vago <img src='http://blog.chuidiang.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2011/04/27/tu-navegador-dice-mucho-de-ti/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Windows pirated edition</title>
		<link>http://blog.chuidiang.com/2011/03/28/windows-pirated-edition/</link>
		<comments>http://blog.chuidiang.com/2011/03/28/windows-pirated-edition/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 12:19:41 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[anécdotas]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=894</guid>
		<description><![CDATA[El otro d&#237;a me toc&#243; hacer una demo delante del cliente. Mi jefa, la jefa de proyecto y yo nos desplazamos a las instalaciones del cliente. All&#237;, en una sala de reuniones nos esperan dos Capitanes de Fragata (equivalente a Teniente Coronel) y dos capitanes de Corbeta (equivalentes a Comandante). Ante ese p&#250;blico saco mi [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="Windows pirated edition" width="400" height="300" border="10" align="right" src="http://img29.imageshack.us/img29/7973/windowsxppiratededition.jpg" />El otro d&iacute;a me toc&oacute; hacer una demo delante del cliente. Mi jefa, la jefa de proyecto y yo nos desplazamos a las instalaciones del cliente. All&iacute;, en una sala de reuniones nos esperan dos Capitanes de Fragata (equivalente a Teniente Coronel) y dos capitanes de Corbeta (equivalentes a Comandante).</p>
<p>Ante ese p&uacute;blico saco mi port&aacute;til, lo conecto al proyector que ya estaba encendido. Enciendo el port&aacute;til, aparece en el pantall&oacute;n el inicio de sesi&oacute;n de Windows. Entro en sesi&oacute;n y lo primero que aparece en grande, delante de todos, mi fondo de escritorio. S&iacute;, ese mismo, el de la foto: Windows pirated edition, service crack 2, right to copy.</p>
<p>En fin, eso me pasa por no ser corporativo y tener mi propio fondo de escritorio en vez de el que nos impone la empresa. Afortunadamente todo el mundo se lo tom&oacute; a cachondeo.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2011/03/28/windows-pirated-edition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reina el buen humor</title>
		<link>http://blog.chuidiang.com/2011/02/10/reina-el-buen-humor/</link>
		<comments>http://blog.chuidiang.com/2011/02/10/reina-el-buen-humor/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 14:13:22 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[anécdotas]]></category>
		<category><![CDATA[hudson]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=873</guid>
		<description><![CDATA[&#160;Hudson permite personalizar el t&#237;tulo de tu p&#225;gina de compilados con texto html, por lo que permite tambi&#233;n poner fotos, y si lo dejas abierto, cualquiera puede poner el texto que quiera. Aqu&#237; una foto actual de nuestra instalaci&#243;n de hudson]]></description>
			<content:encoded><![CDATA[<p>&nbsp;Hudson permite personalizar el t&iacute;tulo de tu p&aacute;gina de compilados con texto html, por lo que permite tambi&eacute;n poner fotos, y si lo dejas abierto, cualquiera puede poner el texto que quiera. Aqu&iacute; una foto actual de nuestra instalaci&oacute;n de hudson</p>
<p><img alt="Captura de hudson" src="http://img560.imageshack.us/img560/7522/hudson.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2011/02/10/reina-el-buen-humor/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Patrón de diseño &#8220;calzador&#8221;</title>
		<link>http://blog.chuidiang.com/2010/07/31/patron-de-diseno-calzador/</link>
		<comments>http://blog.chuidiang.com/2010/07/31/patron-de-diseno-calzador/#comments</comments>
		<pubDate>Sat, 31 Jul 2010 06:00:26 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[anécdotas]]></category>
		<category><![CDATA[patrones de diseño]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=841</guid>
		<description><![CDATA[&#160;Tengo un compa&#241;ero, inform&#225;tico, que es de los que lleva ya muchos a&#241;os en la empresa. Hace ya bastante que dej&#243; de codificar y se dedica a llevar proyectos, o sea, Power Points, Project, Word &#8230; El otro d&#237;a, a primera hora de la ma&#241;ana, le veo por el pasillo con el libro &#34;Head Firts [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="Head First Pattern Design" width="400" height="462" vspace="10" hspace="10" align="right" src="http://a.imageshack.us/img828/5972/headfirstdesignpatterns.jpg" />&nbsp;Tengo un compa&ntilde;ero, inform&aacute;tico, que es de los que lleva ya muchos a&ntilde;os en la empresa. Hace ya bastante que dej&oacute; de codificar y se dedica a llevar proyectos, o sea, Power Points, Project, Word &#8230;</p>
<p>El otro d&iacute;a, a primera hora de la ma&ntilde;ana, le veo por el pasillo con el libro &quot;Head Firts Design Patterns&quot; y extra&ntilde;ado, medio en broma medio en serio, le pregunto &quot; &iquest;Qu&eacute;?, &iquest;Te vas a poner ahora con los patrones de dise&ntilde;o ?&quot;. No me contest&oacute;, s&oacute;lo ech&oacute; una sonrisa de oreja a oreja y sigui&oacute; su camino.</p>
<p>A &uacute;ltima hora del d&iacute;a me encuentro con uno de los compa&ntilde;eros que trabaja con &eacute;l, este s&iacute;, m&aacute;s joven y que todav&iacute;a se dedica a programar. Extra&ntilde;ado por lo de los patrones de dise&ntilde;o, le pregunto &quot;&iquest;Qu&eacute; pasa con Dani? &iquest;Se ha puesto ahora con los patrones de dise&ntilde;o ?&quot;. A este tambi&eacute;n se le puso una sonrisa de oreja a oreja, pero contest&oacute; &#8230; &quot;Es que hemos tenido una demo con el cliente y necesitaba algo para calzar el proyector&quot;</p>
<p>Bueno, con esta chorrada, aprovecho para despedirme el periodo de vacaciones. Buenas vacaciones a todos.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2010/07/31/patron-de-diseno-calzador/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>¿Qué habría pasado de usar TDD?</title>
		<link>http://blog.chuidiang.com/2010/07/02/%c2%bfque-habria-pasado-de-usar-tdd/</link>
		<comments>http://blog.chuidiang.com/2010/07/02/%c2%bfque-habria-pasado-de-usar-tdd/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 15:08:51 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[metodologías]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[anécdotas]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=832</guid>
		<description><![CDATA[Siguiendo un poco con el post anterior, hace tiempo en Verlo para creerlo coment&#233; un c&#243;digo real de una empresa con el que me hab&#237;a tropezado. En ese c&#243;digo hab&#237;a una clase (llam&#233;mosla Datos) con 16 atributos est&#225;ticos iguales (digamos, atributo1, atributo2, &#8230; atributo16). Pulsando un bot&#243;n (uno por atributo) deb&#237;a mostrarse en una ventana [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="hommer pensando en un programa software" vspace="10" hspace="10" align="right" src="http://img43.imageshack.us/img43/9639/homersimpsondoh.jpg" />Siguiendo un poco con el post anterior, hace tiempo en <a href="http://blog.chuidiang.com/2010/04/26/verlo-para-creerlo/">Verlo para creerlo</a> coment&eacute; un c&oacute;digo real de una empresa con el que me hab&iacute;a tropezado. En ese c&oacute;digo hab&iacute;a una clase (llam&eacute;mosla Datos) con 16 atributos est&aacute;ticos iguales (digamos, atributo1, atributo2, &#8230; atributo16). Pulsando un bot&oacute;n (uno por atributo) deb&iacute;a mostrarse en una ventana nueva algunas cosas relativa a uno de esos atributos. En el c&oacute;digo hab&iacute;a 16 clases Ventana, una por atributo, llamadas Ventana1, Ventana2&#8230;. Ventana16. La &uacute;nica diferencia en el c&oacute;digo de esas clases, aparte del nombre, era que acced&iacute;a a Datos.atributo1, Datos.atributo2 &#8230; Datos.atributo16</p>
<h2>&iquest;Qu&eacute; habr&iacute;a pasado si hubieran usado TDD?</h2>
<p>Supongamos que este mismo programador hubiera hecho este c&oacute;digo usando TDD. &iquest;Qu&eacute; habr&iacute;a pasado?. Pues lo evidente, habr&iacute;a 16 clases de test llamadas TestVentana1, TestVentana2, &#8230; TestVentana16.</p>
<p>Pero TDD no es s&oacute;lo hacer test, es hacerlos antes. Bueno, supongamos que los ha hecho antes.</p>
<p>Y TDD tiene otro tercer paso, refactorizar para quitar todas las repeticiones posibles de c&oacute;digo, incluso las menos evidentes. Bueno, no s&eacute; vosotros, pero yo, independientemente de usar o no TDD, me repatear&iacute;a hacer copy-paste 16 veces de una misma clase y como ser vago a veces es una virtud, habr&iacute;a dado las vueltas necesarias para no hacer esto. Sin TDD se me ocurre simplemente meter los atributos en un array de 16 posiciones y en un m&eacute;todo set() de la &uacute;nica clase VentanaUnica pasarle el &iacute;ndice de la posici&oacute;n que debe tratar. Es lo primero que se me ocurre, nada complejo, seguramente hay m&aacute;s y mejores soluciones.</p>
<p>Sin embargo, este desarrollador no lo ha hecho. &iquest;Por qu&eacute;?. Se me ocurren cuatro posibles motivos:</p>
<ol>
<li>Totalmente inexperto en java, un array es algo complejo de usar y lo del set() ni lo cree posible. Muchos programadores novatos tiene problemas para hacer que los atributos de una clase se vean en otra y por eso tienden a hacerlos est&aacute;ticos (justo como ha hecho este se&ntilde;or).</li>
<li>No tiene cabeza para programar, por m&aacute;s vuelta que le ha dado, no se le ha ocurrido c&oacute;mo evitar hacer las 16 clases.</li>
<li>Le importa tres pepinos. Para qu&eacute; se va a complicar la vida si con 16 clicks de rat&oacute;n (un copy y 15 pastes) lo arregla.</li>
<li>Todas las anteriores.</li>
</ol>
<p>Bueno, pues con este panorama, &iquest;qu&eacute; habr&iacute;a hecho al intentar refactorizar con TDD?</p>
<ol>
<li>Ya tengo mi TestVentana1, as&iacute; que hago mi Ventana1. Ahora mi TestVentana2 y hago mi Ventana2. &iexcl;&iexcl; C&oacute;digo repetido !!. &iexcl;&iexcl; Vamos a refactorizar !!: Imposible, java no permite hacerlo, si java no permite pasar el atributo de la clase Datos a la clase Ventana, Ventana1 y Ventana2 deben ser clases distintas. Y no te digo juntar los dos test en uno solo.</li>
<li>Buff, qu&eacute; dolor de cabeza, no se me ocurre como puedo convertir dos clases distintas que manejan atributos distintos en una sola.</li>
<li>J&oacute;, que rollo refactorizar ahora que me est&aacute; funcionando, voy con los siguientes 14 pastes, que el copy ya lo tengo hecho.</li>
<li>Java no deja, no se me ocurre como hacerlo y voy a correr un mont&oacute;n si reaprovecho el copy para el resto de pastes.</li>
</ol>
<p>Algo como Srcum tampoco evitar&iacute;a estas cosas. En el sprint diario este se&ntilde;or dir&iacute;a &quot;Ya tengo las ventanas de &nbsp;los atributos&quot; y todos felices. Bueno, con un poco de suerte, un d&iacute;a dir&iacute;a &quot;tengo la Ventana1 del atributo1&quot;, al d&iacute;a siguiente &quot;tengo la Ventana2 del atributo2&quot; y alrededor del quinto d&iacute;a, quiz&aacute;s a alguien se le ponga la mosca detr&aacute;s de la oreja y quiera ver qu&eacute; est&aacute; haciendo. De todas formas, no se tardan 16 d&iacute;as en hacer 15 pastes.</p>
<p>Una herramienta de an&aacute;lisis est&aacute;tico de c&oacute;digo integrada en una herramienta de integraci&oacute;n continua cantar&iacute;a esto por la noche, suponiendo que cante cuando encuentra c&oacute;digo repetido y, como hacemos nosotros, el compilado falla si no se cumple alguna m&eacute;trica importante. Desgraciadamente, existe el @SuppressWarnings que la gente se acostumbra a poner por sistema, incluso antes de que cante la m&eacute;trica (conozco al menos dos personas que lo hacen).</p>
<p>La programaci&oacute;n en parejas tambi&eacute;n habr&iacute;a ayudado, salvo que la pareja de nuestro programador fuera el reci&eacute;n entrado al que le han asignado para que le ense&ntilde;e.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2010/07/02/%c2%bfque-habria-pasado-de-usar-tdd/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Me aburro</title>
		<link>http://blog.chuidiang.com/2010/05/17/me-aburro/</link>
		<comments>http://blog.chuidiang.com/2010/05/17/me-aburro/#comments</comments>
		<pubDate>Mon, 17 May 2010 12:48:02 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[anécdotas]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/2010/05/17/me-aburro/</guid>
		<description><![CDATA[Es incre&#237;ble, pero si me pongo a programar de acuerdo a las buenas costumbres (TDD, DRY, m&#233;tricas, clases peque&#241;as, c&#243;digo reutilizable, etc), el trabajo de programador se me hace aburrido y pesado. Pierdo m&#225;s tiempo pensando c&#243;mo deber&#237;a ser el c&#243;digo que en hacerlo. Me divierto m&#225;s cuando me lanzo a lo loco, sin pensar [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="aburrido" width="200" height="153" align="right" src="http://blog.chuidiang.com/wp-content/uploads/aburrido2.jpg" />Es incre&iacute;ble, pero si me pongo a programar de acuerdo a las buenas costumbres (TDD, DRY, m&eacute;tricas, clases peque&ntilde;as, c&oacute;digo reutilizable, etc), el trabajo de programador se me hace aburrido y pesado. Pierdo m&aacute;s tiempo pensando c&oacute;mo deber&iacute;a ser el c&oacute;digo que en hacerlo.</p>
<p>Me divierto m&aacute;s cuando me lanzo a lo loco, sin pensar y programo/corrijo c&oacute;digo seg&uacute;n salen las cosas, veo r&aacute;pidamente resultados y juego sobre ellos.</p>
<p>Pobre del que coja mi c&oacute;digo despu&eacute;s&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2010/05/17/me-aburro/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Verlo para creerlo</title>
		<link>http://blog.chuidiang.com/2010/04/26/verlo-para-creerlo/</link>
		<comments>http://blog.chuidiang.com/2010/04/26/verlo-para-creerlo/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 18:41:03 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[anécdotas]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=762</guid>
		<description><![CDATA[No tengo muy claro c&#243;mo comentar esto para que no sea muy rollo y se pueda apreciar en toda su magnitud, pero voy a intentarlo. Hoy he estado revisando algo de c&#243;digo que me han pasado (de otra empresa, afortunadamente). Se supone que ese software debe hacer lo siguiente El software tiene 16 puertos abiertos, [...]]]></description>
			<content:encoded><![CDATA[<p>No tengo muy claro c&oacute;mo comentar esto para que no sea muy rollo y se pueda apreciar en toda su magnitud, pero voy a intentarlo.</p>
<p>Hoy he estado revisando algo de c&oacute;digo que me han pasado (de otra empresa, afortunadamente). Se supone que ese software debe hacer lo siguiente</p>
<p>El software tiene 16 puertos abiertos, todos ellos conectados a equipos iguales, por lo que su mensajer&iacute;a y comportamiento es igual en todos ellos. La idea del software es que el usuario pueda elegir uno de los puertos y hacerle un prueba apretando un bot&oacute;n. La prueba consiste en enviar un mensaje concreto (codificado en el c&oacute;digo) y ver si la respuesta tarda menos de un minuto en llegar. Cuando el usuario ha elegido el puerto y pulsa el bot&oacute;n, se abre una ventana con un contador que comienza en 1:00 y va hacia atr&aacute;s. Si la respuesta llega antes de que termine el contador, se oculta la ventana y se le dice al usuario que el puerto est&aacute; bien. Si no llega, se cierra igualmente la ventana y se le dice al usuario que el puerto est&aacute; mal.</p>
<p>&iquest;Y c&oacute;mo hace esto el software que me han pasado?</p>
<p>Pues se ponen 16 botones en 16 variables boton1, boton2, etc. Se guardan en otra clase 16 atributos est&aacute;ticos boolean etiquetados testeandoPuerto1, testeandoPuerto2, testeandoPuerto3,&#8230;. para indicar qu&eacute; puerto est&aacute; bajo test. Por supuesto, los puertos tambi&eacute;n est&aacute;n guardados en 16 variables est&aacute;ticas puerto1, puerto2, &#8230; Cada bot&oacute;n tiene su ActionListener (16 ActionListener) de forma que cada uno de ellos marca su atributo est&aacute;tico testeandoPuerto correspondiente y abre la ventana con la cuenta atr&aacute;s.</p>
<p>Por si no fuera poco todo esto, lo bueno empieza ahora. Para la ventana con cuenta atr&aacute;s se hacen 16 clases Ventana1, Ventana2, etc, una para cada bot&oacute;n. Estas ventanas, en su constructor, miran si se est&aacute; testeando el puerto que les corresponde para arrancar la cuenta atr&aacute;s. Y durante la cuenta atr&aacute;s mira el puerto que le toca a ver si llega la respuesta. Por ejemplo, la Ventana7 en su constructor mirar si testeandoPuerto7 es true para arrancar o no la cuenta atr&aacute;s. Y si la arranca, en la cuenta atr&aacute;s se mira puerto7 para ver si llega la respuesta. Es decir, las 16 ventanas son exactamente iguales, salvo la variable testeandoPuerto y puerto, que cada ventana mira las suyas.</p>
<p>Y como todos sabemos que si quieres hacer algo bien es mejor hacerlo uno mismo, para la cuenta atr&aacute;s no usaremos los Timer de java ni para pintar los minutos:segundos que quedan las clases Date, Calendar, SimpleDateFormat ni similares. Lo mejor es hacerse un hilo &quot;vulgaris&quot;, guard&aacute;ndose previamente el currentTimeMillis(), haciendo sleeps de 1000 milisegundos, viendo el tiempo transcurrido respecto al currentTimeMillis() que guardamos al principio y multiplicar/dividir por 1000 milisegundos/segundo, 60 segundos/minuto, cogiendo los restos y las divisiones enteras para separar minutos de segundos.</p>
<p>Y claro, como el arrancar o no el Timer est&aacute; en el constructor de la ventana y no hemos puesto m&eacute;todos de arrancar/parar/resetear, pues cada vez que se pulse uno de los botones, se hace new de su ventana correspondiente, haya sido o no creada previamente, ya que si no se hace as&iacute; no hay forma de rearrancar la cuenta atr&aacute;s una segunda vez.</p>
<p>Resumiendo, 16 variables bot&oacute;n, con 16 ActionListener, 16 variables est&aacute;ticas, 16 clases Ventanas exactamente iguales salvo por la variable que miran, y news por doquier.</p>
<p>Si soy bueno, puedo entender que quiz&aacute;s le encargaron esto a alguien que no sabe nada de java, quiz&aacute;s es alguien de perfil hardware que se dedica a testear los equipos con osciloscopios y volt&iacute;metros, que a su jefe se le ocurri&oacute; la brillante idea de hacer un software que ayude a testear, que a &eacute;l le ha ca&iacute;do el marr&oacute;n y que quiz&aacute;s incluso le han apretado en tiempo e hizo el copy-paste de las 16 clases Ventana un Domingo a las cuatro de la madrugada porque el Lunes ten&iacute;a que estar todo a primera hora.</p>
<p>Pero hay que ver estas cosas para entender realmente lo que se dice en muchos posts y de lo que otros pa&iacute;ses m&aacute;s avanzados en software que Espa&ntilde;a ya se han dado cuenta. Es mejor pagar el doble, el triple (o incluso 16 veces m&aacute;s) a un programador bueno y con experiencia, que pagar cuatro cuartos a dos o tres sin conocimientos ni experiencia ninguna. Imagino, con los conocimientos de java que demuestra, a la persona que ha hecho este c&oacute;digo tardando dos o tres semanas en hacerlo, e imagino a alg&uacute;n programador bueno y con experiencia haci&eacute;ndolo en una tarde, con 16 veces menos de l&iacute;neas de c&oacute;digo. La pena es que los jefes que contratan o encargan estos &quot;marrones&quot; al primero que pillan, no ven estas cosas, ni posiblemente quieren verlas.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2010/04/26/verlo-para-creerlo/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Los técnicos, en el fondo, somos técnicos</title>
		<link>http://blog.chuidiang.com/2010/04/22/los-tecnicos-en-el-fondo-somos-tecnicos/</link>
		<comments>http://blog.chuidiang.com/2010/04/22/los-tecnicos-en-el-fondo-somos-tecnicos/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 18:37:10 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[anécdotas]]></category>
		<category><![CDATA[gestores]]></category>
		<category><![CDATA[técnicos]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=758</guid>
		<description><![CDATA[&#160;Tengo un par de compa&#241;eros de trabajo que son m&#225;s o menos de mi edad y con los que llevo mucho tiempo trabajando, m&#225;s de diez a&#241;os. Sin embargo a m&#237; me gusta mucho m&#225;s la programaci&#243;n que a ellos y mucho menos los clientes que a ellos, as&#237; que m&#225;s o menos en el [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;Tengo un par de compa&ntilde;eros de trabajo que son m&aacute;s o menos de mi edad y con los que llevo mucho tiempo trabajando, m&aacute;s de diez a&ntilde;os. Sin embargo a m&iacute; me gusta mucho m&aacute;s la programaci&oacute;n que a ellos y mucho menos los clientes que a ellos, as&iacute; que m&aacute;s o menos en el mismo departamento, pero hemos evolucionado de forma distinta.</p>
<p>Yo tengo ciertas responsabilidades, pero me dedico sobre todo a hacer y revisar c&oacute;digo con mi grupo de trabajo. Ellos han ido ascendiendo y son uno jefe &quot;gordo&quot; de proyecto y la otra jefa de departamento. Ambos dejaron de programar hace ya unos cuantos a&ntilde;os y no ven el c&oacute;digo ni de lejos.</p>
<p>Pero estos d&iacute;as surgi&oacute; en un antiguo c&oacute;digo C++ que todav&iacute;a est&aacute; funcionando la sospecha de un &quot;bug&quot; gordo y escondido, que ha sobrevivido sin ser detectado varios a&ntilde;os. &nbsp;Como no hab&iacute;a demasiada gente disponible (ni con conocimientos de C++ ahora que todo es java), me pidieron que les pusiera un debugger y que ellos se encargaban de buscar ese &quot;bug&quot;.</p>
<p>Pues el jefe &quot;gordo&quot; de proyecto confes&oacute; que la tarde que se pas&oacute; depurando el c&oacute;digo es la mejor tarde que ha pasado en varios a&ntilde;os de trabajo, harto de peleas con clientes, de controlar y ver c&oacute;mo se le escapan &quot;los dineros&quot; m&aacute;s all&aacute; del presupuesto y ver c&oacute;mo se le van los plazos. La jefa de departamento se la ve feliz y sonriente, ah&iacute; enfrascada con el debugger, tocando el c&oacute;digo y viendo que va arreglando las cosas. Vino toda feliz a comentarme que hab&iacute;a tocado el c&oacute;digo y simplemente le hab&iacute;a compilado.</p>
<p>Si es que los t&eacute;cnicos, en el fondo, somos t&eacute;cnicos y disfrutamos con las cosas t&eacute;cnicas, y no con las de gesti&oacute;n. Despu&eacute;s de arreglar un bug, hacer un trozo de c&oacute;digo que funciona y verlo funcionando (o simplemente que compila), nos vamos a casa felices con la sensaci&oacute;n de que hemos hecho algo &uacute;til. Los gestores y jefe de proyecto me hace la impresi&oacute;n de que se van a casa con el problema en la cabeza y pocas ganas de volver al d&iacute;a siguiente. Eso s&iacute;, cobran bastante m&aacute;s.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2010/04/22/los-tecnicos-en-el-fondo-somos-tecnicos/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Engañando al personal</title>
		<link>http://blog.chuidiang.com/2009/11/12/enganando-al-personal/</link>
		<comments>http://blog.chuidiang.com/2009/11/12/enganando-al-personal/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 20:13:53 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[anécdotas]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=673</guid>
		<description><![CDATA[&#160; Hace un mes aproximadamente lleg&#243; el momento de ir a las instalaciones del cliente (no a Kazajstan, sino aqu&#237;, en Madrid) para actualizar la versi&#243;n de software de un sistema que est&#225; todav&#237;a en garant&#237;a. En esa versi&#243;n se hab&#237;an corregido una serie de incidencias que el cliente hab&#237;a encontrado. El plan era ir [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Hace un mes aproximadamente lleg&oacute; el momento de ir a las instalaciones del cliente (<a href="http://blog.chuidiang.com/2009/11/08/buen-viaje/">no a Kazajstan</a>, sino aqu&iacute;, en Madrid) para actualizar la versi&oacute;n de software de un sistema que est&aacute; todav&iacute;a en garant&iacute;a. En esa versi&oacute;n se hab&iacute;an corregido una serie de incidencias que el cliente hab&iacute;a encontrado.</p>
<p>El plan era ir a instalar y probar nosotros la nueva versi&oacute;n durante una semana. Luego, otras dos semanas probando con el cliente para verificar el correcto funcionamiento de la nueva versi&oacute;n y el cierre oficial de las incidencias. As&iacute; que antes de todo eso hicimos una reuni&oacute;n a la que se me convoc&oacute; junto a otras diez o doce personas. En esa reuni&oacute;n se planificaron los trabajos a realizar durante esas tres semanas en las instalaciones del cliente. Y al final de la reuni&oacute;n todos ten&iacute;an que ir all&iacute; a instalar o probar varios d&iacute;as &#8230; menos yo. Fui el &uacute;nico de la reuni&oacute;n al que no le toc&oacute; ninguna tarea all&iacute;. Eso s&iacute;, en la reuni&oacute;n me pidieron que estuviera localizable esas tres semanas e incluso hablaron de ponerme un m&oacute;vil, de forma que pudieran llamarme si hubiese cualquier problema.</p>
<p>Al salir de la reuni&oacute;n me dio por pensar en todo esto: que se me llame a esa reuni&oacute;n, que no me hagan desplazarme, pero que quieren que est&eacute; localizable&#8230; y llegu&eacute; a la conclusi&oacute;n de que los tengo totalmente enga&ntilde;ados: &quot;Todos est&aacute;n totalmente convencidos de que soy imprescindible, pero nadie sabe muy bien para qu&eacute;&quot;.</p>
<p>Espero que no se desenga&ntilde;en y me echen&#8230;..</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2009/11/12/enganando-al-personal/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>¿Será que no me explico?</title>
		<link>http://blog.chuidiang.com/2009/06/19/%c2%bfsera-que-no-me-explico/</link>
		<comments>http://blog.chuidiang.com/2009/06/19/%c2%bfsera-que-no-me-explico/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 15:31:38 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[anécdotas]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/2009/06/19/%c2%bfsera-que-no-me-explico/</guid>
		<description><![CDATA[Hoy no es mi d&#237;a. Env&#237;e dos correos distintos, de temas distintos, a dos personas distintas. Me levant&#233; del sitio y fu&#237; a hacer algo (&#191;tomar un caf&#233;?). Cuando volv&#237; a mi sitio, tenia dos correos nuevos. Las respuestas a los que hab&#237;a enviado. Una de las respuestas era &#8230; &#34;&#191;mande?&#34; La otra era &#8230; [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy no es mi d&iacute;a. Env&iacute;e dos correos distintos, de temas distintos, a dos personas distintas. Me levant&eacute; del sitio y fu&iacute; a hacer algo (&iquest;tomar un caf&eacute;?). Cuando volv&iacute; a mi sitio, tenia dos correos nuevos. Las respuestas a los que hab&iacute;a enviado. Una de las respuestas era &#8230;</p>
<blockquote>
<p>&quot;&iquest;mande?&quot;</p>
</blockquote>
<p>La otra era &#8230;</p>
<blockquote>
<p>&quot;&iquest;Cualo qu&eacute;?&quot;  </p>
</blockquote>
<p>En fin, creo que hay d&iacute;as en que uno no se levanta de la cama con la facilidad de hacerse entender.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2009/06/19/%c2%bfsera-que-no-me-explico/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

