<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/css" href="http://www.willydev.net/Data/style/rss1.css" ?> <?xml-stylesheet type="text/xsl" href="http://www.willydev.net/Data/xsl/rss1.xsl" ?>
<!--RSS generated by mojoPortal Blog Module V 1.0 on sábado, 25 de mayo de 2013-->
<rss version="2.0">
  <channel>
    <title>Diseñado ,Compilado y Ensamblado en Makondo</title>
    <link>http://www.willydev.net/1only4gurus.aspx</link>
    <description>De los Ires y venires de mi vida en medio de compiladores, Desarrolladores Egocentricos, proyectos tesos y clientes Agresivos</description>
    <copyright>De los Ires y venires de mi vida en medio de compiladores, Desarrolladores Egocentricos, proyectos tesos y clientes Agresivos</copyright>
    <ttl>120</ttl>
    <managingEditor>Willy@nospamWillyDev.NET</managingEditor>
    <generator>mojoPortal Blog Module V 1.0</generator>
    <item>
      <title>De los Errores De Concepto De La Programación Por Parejas (XP)</title>
      <link>http://www.willydev.net/de-los-errores-de-concepto-de-la-programación-por-parejas-xp-2011-05-24.aspx</link>
      <pubDate>Tue, 24 May 2011 13:30:00 GMT</pubDate>
      <guid>http://www.willydev.net/de-los-errores-de-concepto-de-la-programación-por-parejas-xp-2011-05-24.aspx</guid>
      <author>Willy Marroquin</author>
      <comments>http://www.willydev.net/de-los-errores-de-concepto-de-la-programación-por-parejas-xp-2011-05-24.aspx</comments>
      <description><![CDATA[<p><img id="il_fi" style="padding-bottom: 8px; padding-right: 8px; display: block; margin-left: auto; margin-right: auto; padding-top: 8px;" src="http://www.quevidaesta.com/images/posts/dilbert-on-extreme-programming.gif" alt="" width="600" height="212" /></p>
<p style="text-align: justify;">Escrito por Martin Fowler<br /> Traducido por Carmen Vidal ( Paradigma Tecnológico)</p>
<p style="text-align: justify;">Se tiene que programar por parejas si se sigue un proceso ágil.<br /> Esto es completamente falso. 'Ágil' es un término muy amplio definido sólo en términos de valores y principios, el más notablemente en el Manifiesto para el Desarrollo de Software Ágil. El manifiesto no menciona el programar por parejas y la mayoría de los métodos ágiles no lo incluyen en su aproximación.</p>
<p style="text-align: justify;"><br /> Ya que programar por parejas es una práctica de XP, ha tenido mucha influencia en la comunidad ágil. Por consiguiente a menudo es mencionado como una práctica ágil – tomando como práctica algo que es comúnmente usado por la gente en proyectos ágiles. Pero esto es una observación, no una prescripción..<br /> <br />La Programación Extrema te obliga a programar por parejas</p>
<p style="text-align: justify;"><br /> Esto es un cuestión de matiz. La programación por parejas es una de las prácticas de XP y lo ha sido desde su inicio. El matiz aquí está en si las prácticas XP son obligatorias para un equipo que dice seguir XP. Esto es en realidad un pregunta más difícil de lo que pueda parecer a primera vista. XP, como cualquier método ágil, espera que un equipo escoja su propio proceso. En “Programación Extrema Explicada” Kent dice que las prácticas son "la clase de cosas que verá que los equipos de XP hacen en el día a día". Yo diría que programar por parejas es habitual en equipos de XP. Pero no diría que un equipo que no programa por parejas no puede llamarse un equipo de XP. También advierto que para la mayor parte de los XPers que conozco, la pregunta de si un equipo es XP o no, no les es interesante; la verdadera cuestión es si un equipo es eficaz.</p>
<p style="text-align: justify;"><br /> La situación en la que obligaría a programar por parejas sería decir que si quieres aprender cómo seguir XP, deberías probar con la programación por parejas y ver si te funciona..<br /> <br />No tengo que tratar de trabajar por parejas porque sé que no me gustará.  El problema con esta declaración es que muchas personas se han sorprendido por la programación por parejas. Ellos lo intentaron, esperando odiarlo, y encontraron que realmente les gustó.</p>
<p style="text-align: justify;"><br /> Esto es bastante complicado porque mucha gente prueba trabajando en parejas mal – lo que puede dar una impresión falsa. Horas pasadas pasivamente mirando fijamente sobre el hombro de alguien en un cubo en una esquina no son programación en parejas. Asegúrese de que tiene alguien que realmente conoce cómo entrenarle, y entonces estará seguro de que evalúa lo verdadero.  El programar por parejas parte por la mitad la productividad de los programadores.</p>
<p style="text-align: justify;"><br /> Mi respuesta impertinente a esto es: " sería verdadero si los más complicado de programar fuera teclear".<br /> Los defensores de la programación por parejas los son porque creen que una pareja es en realidad más productiva que los dos programadores por separado. Esto es debido a la discusión continua y la revisión que introduce el trabajar por parejas. Se consiguen mejores diseños, menos errores, y más personas familiarizadas con el código. Toda esta compensación de cosas se consigue con menos gente tecleando.</p>
<p style="text-align: justify;"><br /> Desde luego, ya que No Se Puede Medir LaProductividad, nosotros no podemos saberlo con seguridad. Mi opinión es que debería intentarlo y el equipo debería reflexionar sobre si ellos sienten que son más eficaces trabajando en parejas o por separado. Como con cualquier nueva práctica, asegurese de que hace la prueba suficiente tiempo, y entonces tiene una posibilidad buena de cruzar AbismoParaLaMejora.<br /> Sólo merece la pena la programación por parejas con código complejo, con código sencillo no da ventajas.</p>
<p style="text-align: justify;"><br /> Pienso que hay una razón para esto - el programar por parejas mejora el diseño y lo errores se reducen al mínimo. El código sencillo de escribir produce pocas oportunidades para que el programar por parejas sea una diferencia.<br /> Excepto esto: escribir código sencillo que aburre es un olor. Si se escribe código aburrido repetitivo es por lo general un signo de que he omitido una abstracción importante, una que drásticamente reducirá la cantidad de código a escribir. El trabajar por parejas le ayudará a encontrar aquella abstracción.</p>
<p style="text-align: justify;"> </p>
<p>Articulo Original en Yankee : <a href="http://www.martinfowler.com/bliki/PairProgrammingMisconceptions.html">http://www.martinfowler.com/bliki/PairProgrammingMisconceptions.html</a></p><br /><a href='http://www.willydev.net'>Willy Marroquin</a>&nbsp;&nbsp;<a href='http://www.willydev.net/de-los-errores-de-concepto-de-la-programación-por-parejas-xp-2011-05-24.aspx'>...</a>]]></description>
    </item>
    <item>
      <title>Como lograr que tu "CV" de developer sea leído</title>
      <link>http://www.willydev.net/como-lograr-que-tu-cv-de-developer-sea-leído-2011-05-02.aspx</link>
      <pubDate>Tue, 03 May 2011 02:40:00 GMT</pubDate>
      <guid>http://www.willydev.net/como-lograr-que-tu-cv-de-developer-sea-leído-2011-05-02.aspx</guid>
      <author>Willy Marroquin</author>
      <comments>http://www.willydev.net/como-lograr-que-tu-cv-de-developer-sea-leído-2011-05-02.aspx</comments>
      <description><![CDATA[<p style="text-align: justify;"> </p>
<p><img class="sg_i" style="width: 250px; display: block; height: 178px; margin-left: auto; margin-right: auto; top: 0px; left: 0px;" src="http://ts2.mm.bing.net/images/thumbnail.aspx?q=546155342157&amp;id=1eea9085f7e545989ec5c5852966c9e7&amp;url=http%3a%2f%2fwww.library.drexel.edu%2fblogs%2fdrexelcareerlib%2ffiles%2f2009%2f01%2fwork.jpg" alt="" width="300" height="214" /></p>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">Estuve revisando una pila de solicitudes para nuestras posiciones de internado de verano en una compañia y, no sé exactamente como decirlo, pero algunas de ellas <strong>son muy, pero muy malas</strong>. No quiero decir con esto que los solicitantes sean idiotas o que no estén calificados, aunque puede que lo sean. Nunca lo sabré porque cuando uno tiene excelentes solicitudes para solo dos posiciones, realmente no vale la pena perder el tiempo entrevistando a personas que ni siquiera se aseguran de escribir el nombre de la compañia correctamente.</p>
<p style="text-align: justify;">Asi que aquí van algunos consejos para tomar en cuenta en caso estés pensando en enviar tu CV a alguien.</p>
<p style="text-align: justify;"> </p>
<ul style="text-align: justify;">
<li>Una hoja de vida, o curriculum vitae (CV), es el medio para llegar al siguiente paso del proceso: La entrevista. Normalmente las empresas reciben decenas de hojas de vida para cada puesto, a nosotros por ejemplo nos llegan entre 100 y 200. No hay forma humana de entrevistar a tanta gente, así que nuestra única opción es descartar personas con base en su CV. No pienses en un CV como un medio para obtener un trabajo. Piensa en ello como la excusa que tienen los de recursos humanos para darle a SUPRIMIR sin sentirse culpables. Para pasar la criba, tu currículo debe ser perfecto.</li>
<li>No solicites un trabajo para el que claramente no estás calificados. Cuando la oferta dice "becario de verano" no solicitéis un puesto de duración indefinida. No vas a obtener el puesto y simplemente vas a perder el tiempo.(Aunque por supuesto no irá en tu contra en futuras solicitudes ya que ésta la habré borrado tan deprisa que cuando solicites un puesto que se haya ofrecido ni siquiera me acordaré de tu solicitud original.)</li>
<li>Esta es de las que realmente me fastidia.<strong> Aprende a poner espacios</strong>. Cada vez que pongas una coma, siempre hay que poner exactamente un espacio después de esta y ninguno antes. Gracias.</li>
<li>En los viejos tiempos, los CV se enviaban por correo tradicional e incluían una carta de presentación explicando por que enviabas el currículo. Ahora tenemos e-mail, así que no hay ninguna razón para enviar la carta de presentación como fichero adjunto y escribir un "texto de presentación de la carta de presentación" en el cuerpo del correo. Simplemente no tiene sentido.</li>
<li>Todavía peor es adjuntar dos ficheros de Word y no incluir texto en el e-mail. Estos correos ni siquiera llego a verlos ya que el filtro de spam se encarga de borrarlos por mí.</li>
<li>Por favor no copies las cartas de presentación de un libro. Si lo primero que leo es algo como "Comprendo que el puesto precisa alguien dotado para trabajar en equipo, bajo continua presión y aún así valorar cada detalle del proceso y coordinarse con los diferentes departamentos de la compañía" Lo más que puedo pensar es que eres un artista mal dotado o peor aún que naciste sin la parte del cerebro que te permite pensar por ti mismo.</li>
<li>Si la carta de presentación la escribes en inglés, el pronombre "I" siempre va en mayúsculas. Además, todas las frases deben acabar con un punto. Si abro tu correo y lo que me encuentro es algo así, si ni siquiera llegaré a leer tu CV:</li>
</ul>
<p style="text-align: justify;"> </p>
<pre>       i m interested in your summer job.
       here is my resume
       --------------------------------------------------------------------------------
       Do you Yahoo!?
       Yahoo! SiteBuilder - Free web site building tool. Try it!
</pre>
<p style="text-align: justify;"> </p>
<ul style="text-align: justify;">
<li>Y ya que estoy en ello, tu cuenta de correo del Messenger no envía un buen mensaje. Tampoco quiere decir que estés descartado ya que hoy en día las utiliza mucha gente pero algo como "tequieronena arroba hotmail.com" no impresiona tanto como "minombre arroba almunos.upm.edu". Además tampoco necesitas saber si me gusta Yahoo, o peor aún hacer publicidad de Yahoo! SiteBuilder que es uno de los productos de la competencia. </li>
</ul>
<ul style="text-align: justify;">
<li>En los países de habla inglesa, no se considera educado comenzar una carta cuyo destinatario es Sr. Joel Spolsky escribiendo "Querido Spolsky." Podrías empezar con "Querido Señor Spolsky," o quizás, "Hola Joel!" Pero a "Querido Spolsky" normalmente le sigue un complicado asunto de fondos nigerianos que necesitan ser depositados en mi cuenta bancaria.</li>
</ul>
<ul style="text-align: justify;">
<li>No menciones que hay alguno de los requisitos que no pretendes cumplir. Por ejemplo, uno de los últimos candidatos escribió: "Sé que uno de los requisitos para las becas de verano es poder hacer una entrevista personal en Nueva York, estoy muy interesado en el trabajo pero prefiero quedarme en NoseDonde del Sur." Muy bien, muchacho, por mí puedes quedarte allí para siempre. Otra perla, creo recordar que nuestro primer requisito es "Un excelente nivel de inglés hablado y escrito." Así que hazte un favor y pídele a alguien que revise si en tu carta de presentación hay alguna falta de ortografía o fallo gramatical. No me des excusas para tirar tu CV a la basura.</li>
</ul>
<p style="text-align: justify;">Sinceramente, no se porque tengo que andar diciendo todo esto, porque debe estar en todos los libros del planeta que tratan sobre como mandar currículos. Justo al principio, en el capítulo 1. Aún así, sigo recibiendo más y más CV con una sorprendente falta de interés en conseguir una entrevista.</p>
<p style="text-align: justify;">Pongámonos en plan positivo y déjame que te dé algunos consejos constructivos.</p>
<ul style="text-align: justify;">
<li>Lee y relee todo cien veces y luego haz que alguien se lo relea por ti. A ser posible alguien con buenas notas en el lenguaje en el que escribas la carta.</li>
<li>Escribe una carta de presentación personal. Adaptada al tipo de trabajo que solicitas. Que parezca que eres humano. Necesitas que la gente piense en ti como en un ser humano.</li>
<li>Presta atención a las direcciones que te dan para que respondas. Están ahí por algo. Por ejemplo, nuestra página web te invita a enviar tu CV a jobs@fogcreek.com. Los correos recibidos en esa dirección se almacenan automáticamente en una carpeta que consultamos a la hora de buscar candidatos. Si por alguna razón piensas que tu CV va a "destacar" imprimiéndolo y mandándolo por correo ordinario, olvídate. La única forma en la que los CV en papel pueden llegar a la carpeta de correo es escaneándolos y metiéndolos en la carpeta y ¿Sabes qué? la máquina de destrozar papel está al lado del scanner, y es mucho más fácil de utilizar. </li>
<li>No presentes solicitudes a demasiados trabajos. Creo que no existe ninguna razón en el mundo para solicitar más de tres o cuatro trabajos a la vez. El spam de currículos o cualquier otro signo de que estas enviando CVs a cientos de empresas hace que parezcas desesperado, lo que a su vez hace que parezca que no estás suficientemente cualificado. Debe parecer que las empresas se te rifan, que eres tú el que decide donde vas a trabajar, porque eres suficientemente brillante para ser tú el que decide. Así que solo necesitas presentar una o dos solicitudes. Una carta de motivación personalizada en la que muestres que sabes que necesita la empresa demostrará que estás suficientemente interesado como para que te den una oportunidad.</li>
</ul>
<p style="text-align: justify;">Todo esto puede parecer muy superficial, pero el hecho es que lo que estamos buscando es alguien que le apasione y consiga cualquier cosa que se proponga. Queremos personas a las que las apasione el software. Haber escrito un programa shareware cuando estabas en el instituto es igual de importante para nosotros que haber entrado en el MIT. Esa es la historia de tu vida, y probablemente a la hora de buscar trabajo ya es tarde para cambiarla.</p>
<p style="text-align: justify;">¿Rechazaría a alguien por el simple hecho de no saber que después de una coma hay un espacio? No necesariamente. Sin embargo cuando tengo que seleccionar dos becarios entre 300 candidatos el procedimiento que sigo es el siguiente. Hago tres pilas: Buenos, Regulares y Malos. Luego le doy el mismo juego de solicitudes a Michael y él hace lo mismo. Siempre tenemos suficientes candidatos en la pila común así que esos son los únicos que tienen alguna oportunidad. En teoría, si nos faltaran candidatos seguiríamos por los de la pila Bien/Regular pero eso nunca ha sucedido. Aunque a mi me encantaría tener en cuenta a todo el mundo, evaluando sus méritos reales en vez de a través de un superficial currículo, simplemente no es realista, y lo que es más no hay ninguna razón para que cualquier graduado universitario no sea capaz de adaptarse a eso.</p>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">(Añadido el 27/1/2004)</p>
<p style="text-align: justify;">La mejor forma para conseguir que alguien mire tu currículo detalladamente. Que parezca que eres una persona, no una lista de trabajos y lenguajes de programación. Cuéntame una historia. "Me he pasado la últimas tres semanas buscando compañías de software reales en las que trabajar, pero lo único que puedo encontrar son consultoras de medio pelo interesadas solo en vender carne. O "Sacamos a mi hijo de su instituto para traerlo a Virginia, no puedo volver a mudarme al menos hasta que se gradúe. Si hace falta trabajaré en una gasolinera o vendiendo hamburguesas. (Estas dos son citas ligeramente modificadas de personas reales.)</p>
<p style="text-align: justify;">Ambas citas son geniales. ¿Y sabes por qué? Porque puedo leerlas y percibir que la gente que hay detrás de ellas son personas. Y a partir de ahí todo cambia. Ahora me gustas, me preocupas. Me gusta el hecho de que quieras trabajar en una compañía de software real. Yo quería trabajar tanto en una de esas empresas que empecé una yo mismo. Me gusta el hecho de que te preocupe más tu hijo que por tu carrera profesional.</p>
<p style="text-align: justify;">Y simplemente el hecho de que sepas "C/C++/Perl/ASP" no puede hacerme sentir igual.</p>
<p style="text-align: justify;">Así que a lo mejor no tienes el perfil adecuado para el trabajo, pero es mucho más difícil para mi descartarte en el primer filtro.</p>
<p style="text-align: justify;">J. Spolsky</p><br /><a href='http://www.willydev.net'>Willy Marroquin</a>&nbsp;&nbsp;<a href='http://www.willydev.net/como-lograr-que-tu-cv-de-developer-sea-leído-2011-05-02.aspx'>...</a>]]></description>
    </item>
    <item>
      <title>¿Qué pasó con el trabajo duro? Qué perezosos son los nuevos developers ...</title>
      <link>http://www.willydev.net/¿qué-pasó-con-el-trabajo-duro-qué-perezosos-son-los-nuevos-developers--2011-04-24.aspx</link>
      <pubDate>Mon, 25 Apr 2011 00:30:00 GMT</pubDate>
      <guid>http://www.willydev.net/¿qué-pasó-con-el-trabajo-duro-qué-perezosos-son-los-nuevos-developers--2011-04-24.aspx</guid>
      <author>Willy Marroquin</author>
      <comments>http://www.willydev.net/¿qué-pasó-con-el-trabajo-duro-qué-perezosos-son-los-nuevos-developers--2011-04-24.aspx</comments>
      <description><![CDATA[<div class="OutlineElement Ltr SCX89382580" style="text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="text-align: justify; background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
<p class="Paragraph SCX89382580" style="text-align: justify; background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Un seguro indicio de mi descenso a la senilidad son mis continuas quejas y lamentos acerca de los "chicos de ahora", y cómo ya no quieren o no pueden hacer cosas difíciles.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Cuando yo era un muchacho, aprendí a programar con tarjetas perforadas. En esos tiempos si cometías un error, no tenias ninguna de nuestras modernas comodidades como la tecla retroceder para corregirlo. Tenias que tirar la tarjeta y empezar todo de nuevo. Cuando empecé a entrevistar programadores en 1991, les dejaba usar generalmente cualquier lenguaje que quisieran para resolver los problemas de programación que les planteaba. 99% de las veces, ellos escogían C.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Ahora ellos tienden a escoger Java.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Pero no me malinterpreten: no hay nada malo con Java como lenguaje de implementación. </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Esperen un momento, quiero rectificar eso último. No digo, en este artículo en particular, que haya algo de malo con Java como lenguaje de implementación. Hay un montón de cosas mal con Java, pero tendrán que esperar a un artículo diferente. En vez de ello lo que me gustaría decir es que Java no es, generalmente, un lenguaje de programación lo suficientemente difícil que pueda ser usado para distinguir entre excelentes programadores y programadores mediocres. Puede ser un buen lenguaje para trabajar, pero ese no es el tema de hoy. Puedo ir incluso mas allá y decir que el hecho de que Java no sea lo suficientemente difícil es parte de su diseño, no es un bug en si, pero que tiene ese gran problema.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Si pudiera ser tan atrevido, diría que en mi humilde experiencia han sido dos las cosas tradicionalmente enseñadas en las universidades como parte de la carrera de Ciencias de la Computación (CS) las que mucha gente nunca llega realmente a comprender: punteros y recursión.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">En esos tiempos lo normal era empezar la universidad con un curso en estructuras de datos, con listas enlazadas, tablas hash y por qué no, con un uso abundante de punteros. Esos cursos eran frecuentemente usados como cursos de poda: eran tan difíciles que cualquiera que no pudiera soportar el desafío mental de un grado en CS se daba por vencido, lo que era bueno, porque si piensas que los punteros son difíciles, espera hasta probar las cosas de la teoría del punto fijo.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Todos eso chicos que la hicieron grande en el colegio escribiendo sus juegos PONG en BASIC para su Apple II, iban a la universidad, tomaban CompSci 101, un curso en estructuras de datos, y cuando se estrellaban con el negocio de los punteros sus cerebros simplemente estallaban, y lo siguiente que sabias es que se estaban especializando en Ciencias Políticas porque la escuela de leyes parecía ser una mejor idea. He visto todos los tipos de cifras de deserción en CS y ellas estaban entre 40% y 70%. Las universidades tienden a ver esto como un derroche; yo creo que es solo la necesaria poda de gente que no va a ser feliz o exitosa en una carrera de programación.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">El otro curso difícil para muchos jóvenes estudiantes de CS era el curso donde aprendías programación funcional, incluyendo programación recursiva. MIT puso la barra muy en alto para esos cursos, creando un curso requerido (6.001) y un texto de consulta (Abelson &amp; Sussman's Structure and Interpretation of Computer Programs), los cuales eran usados en docenas o quizás cientos de escuelas de CS de prestigio como el estándar de facto para la introducción a la ciencia de la computación. (Puedes, y deberías echarle una ojeada a la antigua versión online.)</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">La dificultad de esos cursos es asombrosa. En la primera clase has aprendido casi todo Scheme, y ya has sido introducido a la función de punto fijo que toma otra función como entrada. Cuando me esforzaba en pasar ese curso, CSE121 en Penn, observaba como muchos sino la mayoría de estudiantes simplemente no lo lograban. La materia era muy difícil. Inclusive yo escribí un largo email de lloriqueo a mi profesor diciendo que “simplemente no era justo”. Alguien en Penn debe haberme escuchado (o a alguno de los otros llorones), porque ese curso es ahora enseñado en Java.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Cómo quisiera que no hubiesen escuchado.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Aquí radica el quid del asunto. Años de lloriqueo de estudiantes perezosos, combinados con quejas de la industria acerca de cuan pocos graduados en CS salen de las universidades americanas, han pagado su precio, y en la ultima década un gran numero de otrora perfectamente buenas universidades se han vuelto 100% Java. Esta de moda, a los reclutadores que usan “grep" (buscador de texto en múltiples archivos) parece gustarles, y, lo mejor de todo, no hay nada lo suficientemente difícil en Java como para podar aquellos programadores sin la parte del cerebro que entiende punteros y recursión, así que las deserciones son menores, y los departamentos de ciencias de la computación tienen mas alumnos, y mayores presupuestos y todo esta bien.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Los chicos con suerte de esas Java-escuelas nunca van a toparse con raros fallos de segmentación tratando de implementar sus tablas hash basadas en punteros. Nunca se van a volver locos tratando de empacar cosas en bits. Nunca tendrán que ocupar sus cabezas en como en un lenguaje puramente funcional, el valor de una variable nunca cambia, y aun así, ¡cambia todo el tiempo! ¡Una paradoja!</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">¿Soy solo uno de esos viejos cascarrabias anticuados, vanagloriándose acerca de cuan duro era sobrevivir toda esa difícil materia?</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Rayos, en 1900, el Latín y el Griego eran temas requeridos en la universidad, no porque sirvieran de algún propósito, sino porque de alguna manera eran considerados un requisito obvio de la gente educada. De cierta manera mi argumento no es diferente del argumento echo por la gente pro-Latín: “[El Latín] entrena tu mente. Entrena tu memoria. Desembrollar una sentencia en Latín es un excelente ejercicio del pensamiento, un verdadero acertijo intelectual, y una buena introducción al pensamiento lógico”, escribe Scout Barrer. Aun así no puedo encontrar una sola universidad que requiera Latín nunca más. ¿Son los punteros y la recursión el Latín y el Griego de las ciencias de la computación?</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Ahora, fácilmente admito que programar con punteros no es necesario en el 90% del código escrito en la actualidad, y de hecho es totalmente peligroso en el código de producción. OK. Está bien. Y que la programación funcional simplemente no es muy empleada en la práctica. De acuerdo.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Pero es aun importante para alguno de los más excitantes trabajos en programación. Sin punteros, por ejemplo, nunca serias capaz de trabajar en el Kernel de Linux. No puedes entender una simple línea del código de Linux, o de hecho, de cualquier sistema operativo, sin verdaderamente entender punteros.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Sin entender programación funcional, no podrás inventar MapReduce, el algoritmo que hace Google tan masivamente escalable. Los términos Map y Reduce vienen de Lisp y programación funcional. MapReduce es, en retrospectiva, obvio para cualquiera quien recuerde de su clase equivalente a 6.001 que los programas puramente funcionales no tienen efectos colaterales y por ende son trivialmente paralelizables. El simple hecho que Google inventara MapReduce, y no Microsoft, dice algo del porque Microsoft esta aun jugando a lograr que características básicas de búsqueda funcionen, mientras Google se ha movido ya al siguiente problema: construir Skynet la más grande supercomputadora masivamente paralela del mundo. Simplemente no creo que Microsoft entienda completamente cuan retrasados están en ese campo.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Pero mas allá de la importancia a simple vista de los punteros y la recursión, su valor real radica en que construir grandes sistemas requiere del tipo de flexibilidad mental que adquieres aprendiéndolos, y de la actitud mental que necesitas para no huir de los cursos en donde son enseñados. Punteros y recursión requieren cierta habilidad para razonar, para pensar en abstracciones, y más importante, para ver un problema en diversos niveles de abstracción simultáneamente. Y entonces, la habilidad para entender punteros y recursión esta directamente correlacionada con la habilidad de ser un excelente programador.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">No hay nada en grado académico 100% Java que descarte realmente a los estudiantes que carecen de la agilidad mental para tratar con esos conceptos. Como empleador, he visto que el 100% de esas Java-escuelas han empezado a producir en serie una buena cantidad de graduados quienes simplemente no son lo suficientemente listos para trabajar como programadores en nada mas sofisticado que una simple aplicación contable Java, aunque se las han arreglado para colarse a través de la ahora simplificada materia.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Esos estudiantes nunca sobrevivirían al 6.001 del MIT o al CS 323 en Yale, y francamente, esa es una razón por la cual, como un empleador, un titulo en CS del MIT o Yale tiene mas peso que uno del Duke, quien recientemente se hizo full-Java, o de Penn, donde remplazaron Scheme y ML con Java tratando de enseñar la clase que casi asesina a mis compañeros y a mi, CSE121. No es que no quiera contratar chicos listos de Duke o Penn, lo hago, es solo que es mucho más difícil para mí saber quienes son. Yo estaba acostumbrado a decir que los chicos listos eran aquellos que podían desmenuzar un algoritmo recursivo en segundos, o implementar funciones de manipulación de listas enlazadas usando punteros tan rápido como podían escribir en la pizarra. Pero con un graduado full-Java, yo no se si ellos padecen con esos problemas debido a que han sido mal educados o si padecen porque ellos realmente no tienen esa parte del cerebro que van a necesitar para ser buenos programadores en el trabajo. Paul Graham los llama Blub Programmers</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Ya es bastante malo que las Java-escuelas fallen en podar los chicos que nunca van a ser buenos programadores, algo que las universidades podrían justificablemente decir que no es su problema. Después de todo es la industria, o al menos, los reclutadores-que-usan-grep, los que están pidiendo a gritos que Java sea enseñado.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Pero las Java-escuelas fallan también en entrenar las mente de los chicos a ser expertas, ágiles y lo bastante flexibles para hacer buen diseño de software (y no me refiero al “diseño” OO, donde gastas incontables horas acomodando tu jerarquía de objetos, o preocupándote en problemas superfluos como “tiene-un” vs. “es-un”). Necesitas entrenamiento para pensar en las cosas con múltiples niveles de abstracción simultáneamente, y ese tipo de pensamiento es exactamente lo que necesitas para diseñar excelentes arquitecturas de software.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Puedes estar preguntándote si la enseñanza de programación orientada a objetos (OOP) es un buen sustituto de poda a los punteros y recursión. La respuesta rápida: no. Sin debatir acerca de los meritos del OOP, simplemente no es lo suficientemente difícil para podar a los programadores mediocres. OOP en las universidades consiste básicamente en memorizar un puñado de términos de vocabulario como “encapsulacion” y “herencia” y tomar exámenes con alternativas acerca de las diferencias entre polimorfismo y sobrecarga. No más difícil que memorizar fechas históricas y nombres en una clase de historia, OOP tiene desafíos mentales inadecuados para espantar a los estudiantes de primer año. Cuando tú te enfrentas con un problema OOP, tu programa aun funciona, es solo que es un poco más difícil de mantener. Supuestamente. Pero cuando te enfrentas a un problema con punteros, tu programa produce la línea Fallo de segmentación y se cuelga, no tienes ni la menor idea de lo que está sucediendo, hasta que te paras y tomas una fuerte bocanada de aire y tratas de forzar tu mente a trabajar en dos diferentes niveles de abstracción simultáneamente.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Los reclutadores-que-usan-grep, de hecho, son ridiculizados aquí, y por un buen motivo. Nunca he conocido alguien que pueda hacer Scheme, Haskell y punteros en C quien no pueda entender Java en dos días, y crear mejor código en Java que gente con cinco años de experiencia en Java, pero trata de explicar eso al zombi de Recursos Humanos.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">¿Pero que acerca de la misión CS de las facultades de CS? ¡Ellas no son escuelas vocacionales! No debería ser su trabajo entrenar gente para trabajar en la industria. Eso esta para las universidades comunales y programas de recapacitación del gobierno para trabajadores desplazados, te dirán ellas. Ellas se suponen que están para dar a los estudiantes las herramientas fundamentales para vivir sus vidas, no para prepararlos para sus primeras semanas de trabajo. ¿Cierto?</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Aun así, CS son demostraciones (recursión), algoritmos (recursión), lenguajes (calculo lambda), sistemas operativos (punteros), compiladores (calculo lambda), y entonces la conclusión es que las Java-escuelas que no enseñan C y no enseñan Scheme no están enseñando realmente ciencias de la computación, tampoco. Tan inútil como el concepto de function currying puede serle al mundo real, es un obvio prerrequisito para un graduado en CS. No puedo entender porque los profesores en los comités de curricula de las facultades CS han permitido sus programas ser embrutecidos a tal punto donde no solo no pueden ellos producir programadores que trabajen, sino que ni siquiera puedan producir graduados en CS que puedan obtener PhDs y puedan competir por sus puestos de trabajo. Oh esperen. No importa. Quizás entienda.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Si regresamos atrás y analizamos las discusiones que tomaron lugar en el mundo académico durante el “Gran Levantamiento Java”, encontraremos que la mayor preocupación fue que Java no era lo suficientemente simple para ser usado como un lenguaje de enseñanza.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Mi Dios, pensé, ¡ellos están tratando de embrutecer la curricula aun mas! ¿Por que mejor no les llevamos la comida a la boca a los estudiantes? Dejemos que los asistentes dean los exámenes por ellos también, entonces nadie se cambiara a Estudios Americanos. ¿Cómo se supone que alguien aprenderá algo si la curricula ha sido cuidadosamente diseñada para hacerse más fácil de lo que ya es? Parece haber una comisión de trabajo (PDF) intentando idear un simple subconjunto de Java que pueda ser enseñado a estudiantes, produciendo documentación simplificada que esconde cuidadosamente toda esa basura EJB/J2EE de sus tiernas mentes, de tal manera que no tengan que preocupar sus cabecitas con otras clases que no necesiten para resolver sus aun mas fáciles problemas CS.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">La interpretación mas compasiva de porque las facultades CS son tan entusiastas en embrutecer sus clases es porque ello les dará mas tiempo para enseñar verdaderos conceptos CS, así ellos no necesitaran dos sesiones para esclarecer a los alumnos las diferencias entre digamos un Java int y un Integer. Bueno pero si ese fuera el caso, 6.001 tiene la respuesta perfecta: Scheme, un lenguaje de enseñanza tan simple que el lenguaje entero puede ser enseñado a estudiantes brillantes en cerca de 10 minutos; entonces puedes gastar el resto del semestre en puntos fijos.</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Fiu… </span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">Joel Spolsky</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-align: justify; text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="background-color: transparent; font-style: normal; text-indent: 0px; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal;" xml:lang="EN-US"><span class="TextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US">PDTA: Me tomo la libertad de pegar esta traduccion de este texto http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html, debido a la TOTAL frustración, luego de entrevistar 7 developers, de los del tipo GOOGLE ORIENTED DEVELOPER (G.O.D).</span></p>
</div>
<div class="OutlineElement Ltr SCX89382580" style="text-indent: 0px; margin-left: 0px;">
<p class="Paragraph SCX89382580" style="text-align: justify; background-color: transparent; font-style: normal; text-indent: 0px; width: auto; font-family: 'Segoe UI',Tahoma,Verdana,'Sans-Serif'; height: auto; color: windowtext; font-size: 8pt; vertical-align: baseline; font-weight: normal; margin-right: 3px;" xml:lang="EN-US"><span class="TextRun EmptyTextRun SCX89382580" style="font-family: Calibri,Sans-Serif; color: #bfbfbf; font-size: 11pt;" xml:lang="EN-US"> </span></p>
</div><br /><a href='http://www.willydev.net'>Willy Marroquin</a>&nbsp;&nbsp;<a href='http://www.willydev.net/¿qué-pasó-con-el-trabajo-duro-qué-perezosos-son-los-nuevos-developers--2011-04-24.aspx'>...</a>]]></description>
    </item>
  </channel>
</rss>