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 + 1 = requerido (control anti-SPAM)
¿De qué color es el cielo?: requerido (control anti-SPAM)
 

"Al menos, en mi experiencia consciente de uso de Internet, en mi horizonte de eventos no perderé de vista esta pagina y este tipo de artículos, gracias por todo tipo de información que conmociona mi curiosidad cada vez que busco asombro.

saludos
"

por "Robzam31" en feb 18, 2012


en camino a la singularidad...

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