texto:   A-   A+
eliax

Video de como un programador novato vs experto rastrea código con sus ojos
eliax id: 9885 josé elías en dic 23, 2012 a las 12:10 AM ( 00:10 horas)
Hoy comparto dos videos que me encontré bastante curioso, ya que soy un fan de la ingeniería y programación de software.

Se trata de poner un dispositivo especial que observa los movimientos oculares de personas (en este caso, de un programador novato y de un experimentado), y los grafico sobre el código de un programa.

La idea es ver cómo rastrea el código el novato versus el experto, cuando a ambos se les asigna la misma tarea (que en este caso es descifrar cuál es el resultado de ejecutar el código que ven en pantalla).

Como podrán observar en el primer video (del novato), este rastrea el código por todos lados, dando saltos a veces aleatorios y descuidados, mientras que en el segundo video (el experto) vemos como este sigue directamente el flujo del código tratando de entender a cada paso lo que ocurre.

Este tipo de estudios, más allá de una curiosidad, es fácil ver como podría ser de mucha utilidad a la hora de la enseñanza en el mundo de la programación, pues le indica al profesor de cuáles cosas advertir a los estudiantes, así como quizás recorrer un pedazo de código de forma óptima para ser más eficientes a la hora de trabajar.

fuente

Video 1 (de novato) a continuación (enlace YouTube)...


Video 2 (de experto) a continuación (enlace YouTube)...


autor: josé elías

Comentarios

  • si pero el "experto" pone mal el resultado.. mientras que el novato pone el correcto:

    8 7 9
    1 0 8 1
    8 9 0

    :)

    • sí en efecto el novato coloca bien el resultado, el experto no... pero bueno más allá del resultado, es muy interesante la forma de analizar del novato y el experto.

    • Si el experto se equivoca y el novato no, deja que decir sobre el experto...

      Habrá habido un limite de tiempo?

  • creo que el experto si bien al parecer sigue un orden, se equivoca.

  • Para tener significancia como experimento científico, tanto novato como experto deberían haber trabajado sobre el mismo código. Si a cada uno le ponemos códigos diferentes estamos comparando churras con merinas.

    Aún así, es curioso ver como el novato se dispersa mucho más por todo el código mientras que el experto es más analítico y se centra en una parte y la resuelve, y luego va a la siguiente.

  • Es normal esto, cuando uno está aprendiendo es fácil 'perderse' y si le sumamos la impaciencia puesss... aunque tampoco hay que irse por los extremos, también es importante tener la capacidad (que se adquiere con el tiempo) de hacerte una primera idea general de lo que hace cada parte del código antes de profundizar.

  • En resumen: el novato hace uno a uno los pasos para determinar la salida, mientras que el experto analiza qué hace cada función para comprender cómo funciona. Cualquier programador experto puede decirte que sólo ejecuta paso a paso aquello que le resulta "raro", es decir, que no funciona como "se entiende" que debería funcionar. Este vídeo no me descubre nada (te lo dice un programador experto).

  • La primera versión del programa es lineal. El programador tarde mucho tiempo en entenderlo pero da con la solución correcta.

    La segunda versión del programa es programación estructurada (usando 2 funciones), es lo que haría quizás un mejor programador. El programador tarda la mitad de tiempo en entenderlo (y yo tardé mucho menos tiempo) pero se equivoca en la solución ¿porqué? porque el nombre de una de las funciones tiene una ambigüedad, y lo confunde:

    # Devuelve los numeros de la lista "numbers" que sean mayor que low y menor que hight
    def between(numbers,low,high):

    y el, se le va la olla, y la usa como:
    # Devuelve los numeros de la lista "numbers" que sean mayor que low y menor o igual que hight
    def between(numbers,low,high):

    Eso es muy común, y lo veo bastante, incluso en mi código. Los nombres de las funciones, clases, retorno, no son perfectamente claros y sin ambigüedades. Se nota mucho en la programación orientada a objetos, y no sólo provoca bugs sino que a veces te pases horas intentando entender el funcionamiento de código que paradójicamente es supuestamente de "gran calidad".

    • Además lo típico cuando trabajas con subarrays es y trabajar con límite inferior cerrado y abierto en el superior, es decir, [desde,hasta)

      Esto se ve fácilmente leyendo especificaciones de lenguajes bien conocidos como Java, Python o C/C++ (es típico ver "the specified fromIndex, inclusive, and toIndex, exclusive")...y se toma casi como norma para todos los que nos dedicamos a la programación.

      Por eso es un fallo, como bien dices, común. Sin embargo, es al contrario de lo que has dicho, tal y como explico en el primer párrafo.

      Ahora, respecto al vídeo, es un hecho totalmente natural, yo ahora me encuentro en el segundo tipo, pero recuerdo con cariño esos días en los que iba saltando de un lado a otro, que partes del código te parecían chino tradicional (en su dialecto más rural) y que más que nada te resultaba apabullante el código. Con la experiencia acabas teniendo un ojo clínico casi infalible a la hora de descifrar qué hace un código, pero aún así, lo más recomendable sigue siendo comentar en condiciones el código, porque hasta algo que tú haces, a los 2 meses es incomprensible por ti si no has explicado las líneas críticas.

      Un saludo, y gran entrada, como siempre :D

  • Me parece buena idea de experimento pero mal llevada a cabo. Aparte, yo no me considero aun programador experto y lo he resuelto en mucho menos tiempo que los 2 del video.

  • La persona del segundo video no parece muy experta XD

  • No me parece que se trate de un experto y un novato leyendo código, si no de cómo afecta la la capacidad de entender según el estilo y formato (identaciones, espacios, lineas en blanco, etc...).

    En otra página vi esos vídeos y de eso era que se trataba.

  • jajaja q risa chci

Añadir Comentario

tu nombre
tu email
(opcional)
web personal
(opcional)
en respuesta a...
comentario de caracteres máximo
6 + 7 = requerido (control anti-SPAM)
¿De qué color es el cielo?: requerido (control anti-SPAM)
 

"Personalmente, siendo un jóven de aún corta edad interesado en la ciencia y temas de actualidad encuentro tu blog como una gran recurso para estar informado y entender qué pasa en nuestro mundo.

Tus reviews, opiniones y editoriales me han enseñado mucho más de lo que he aprendido en la escuela y son mucho más fácil de entender que cualquier otro blog que podría en la internet, y no tienes idea de lo mucho que me ha ayudado tu libro "Maquinas del Paraíso", tanto academica como personalmente, siendo uno de los pocos libros que me ha ayudado a formar mi carácter y ser más abierto a comprender nuevas posibilidad, ideas, opiniones y entender el lugar que ocupo en este mundo.

Nunca se me había ocurrido darte las gracias por trabajar tan duro por tu blog, pero ya que has creado este post, pues aprovecho la oportunidad para darte un millón de gracias por ser una inspiración, por mostrarme el tipo de persona en el que me quiero convertir sin importar en la sociedad que viva, sin importa lo que la gente diga, debo siempre intentar mejorar y seguir el modelo de humanidad la cual creo que sea correcta, porque sí existe, porque si tú cambias entonces las personas a tu alrededor también, Gracias.

-Mario Muchacho
17 años
Venezuela
"

por "Mario" en nov 12, 2010


en camino a la singularidad...

©2005-2026 josé c. elías
todos los derechos reservados
como compartir los artículos de eliax