Tecnología

La parábola de los dos programadores

·

Ayer vi vía Hacker News el enlace a un artículo que fue publicado el 20 de marzo de 1985 por Neil W. Rickert, miembro del Departamento de Informática de la Northern Illinois University. El texto ya había sido compartido antes -en Reddit hay una referencia a él de 2006, por ejemplo- pero yo desde luego no lo conocía y no he podido evitar compartirlo por si alguno tampoco lo había leído antes.

Como es un texto en inglés algo largo, me he animado a intentar traducirlo, así que disculpas por los posibles errores. El texto original está aquí, por si preferís leerlo directamente tal y como fue redactado.

      Érase una vez que, sin saber nada la una de la otra, la “Automated Accounting Applications Association” y la “Consolidated Computerized Capital Corporation” decidieron que necesitaban el mismo programa informático para proporcionar cierto servicio. 

     Automated contrató a un analista programador, Alan, para solucionar su problema.

     Mientras tanto, Consolidated decidió pedir a un programador de bajo nivel recién contratado, Charles, que abordase la tarea para ver si era tan bueno como él decía ser.

     Alan, que tenía experiencia en proyectos complejos de programación, decidió utilizar la metodología de diseño estructurado PQR. Con esa idea en mente, le pidió a su jefe de departamento que le asignara otros tres programadores para formar un equipo de programación. A continuación el equipo se puso a trabajar y a producir tanto informes preliminares como análisis del problema. 

     En Consolidated Charles dedicó algún tiempo a pensar en el problema. Sus compañeros de trabajo se dieron cuenta de que a menudo Charles se sentaba con sus pies sobre la mesa mientras se tomaba un café. Ocasionalmente se le vio frente a su terminal, pero su compañero de oficina podía deducir por la pulsación rítmica de las teclas que en realidad estaba jugando a Space Invaders. 

     Por entonces el equipo de Automated estaba comenzando a picar código. Los programadores pasaban la mitad de su tiempo escribiendo y compilando código, y el resto de su tiempo en reuniones, debatiendo sobre las interfaces que debía haber entre los distintos módulos. 

     El compañero de Charles notó que por fin había abandonado Space Invaders. En lugar de eso ahora invertía su tiempo en beber café con sus pies encima de la mesa y en hacer garabatos en pedacitos de papel. Sus garabatos no parecían tener relación con las Tres-en-raya, pero tampoco es que tuvieran mucho más sentido. 

      Pasaron dos meses. El equipo de Automated por fin publicó una hoja de ruta. En otros dos meses tendrían una versión de pruebas del programa. Tras eso vendría un periodo de dos meses de evaluación y mejora que debería llevar a una versión completa. 

     El jefe de Charles ya estaba cansado de verle holgazanear. Decide enfrentarse a él. Sin embargo, nada más entrar en la oficina de Charles se sorprende al verle muy ocupado introduciendo código en su terminal. El jefe decide posponer la confrontación, así que charla brevemente con él y se marcha.  Sin embargo, comienza a vigilar más de cerca a Charles para que en cuanto se presente la ocasión pueda enfrentarse a él. Como no tiene muchas ganas de tener una conversación desagradable, está encantado de que Charles parezca estar ocupado la mayor parte del tiempo. Incluso se le ha visto retrasar la hora del almuerzo y también quedarse a trabajar más allá de su hora de salida dos o tres días a la semana. 

     Al cabo de tres meses, Charles anuncia que ha completado el proyecto. Entrega un programa de 500 líneas. El programa parece estar escrito de forma clara, y al ser evaluado hace todo lo que se requería en las especificaciones. De hecho, incluso tiene algunas características adicionales muy convenientes que podrían mejorar de forma significativa la usabilidad del mismo. El programa se pone a prueba y, salvo por un despiste que corrigen rápidamente, funciona bien. 

      El equipo de Automated ya ha completado dos de los cuatro módulos principales del programa a estas alturas. Esos módulos están siendo sometidos a pruebas mientras que el resto de módulos se finalizan. 

      Tras tres semanas, Alan anuncia que la versión preliminar está disponible una semana antes de lo que marcaba la planificación. Proporciona una lista de defectos que espera corregir. El programa se pone a prueba. Los usuarios detectan varios errores y defectos aparte de los registrados por Alan. Como Alan explica, eso no es ninguna sorpresa. Después de todo, esta es una versión preliminar en la que los errores son esperables. 

      Después de dos meses más, el equipo termina de programar la versión de producción del programa. Consiste en cerca de 2.500 líneas de código. Al evaluarlo parece satisfacer la mayoría de las especificaciones originales. Se han omitido una o dos características, y el programa es muy exigente en el formato de sus datos de entrada. Sin embargo la empresa decide implantar el programa. Siempre podrán formar al personal de entrada de datos para introducir esos datos en el formato estrictamente necesario. El programa se pasa a varios programadores de mantenimiento para que incorporen en algún momento las características que faltan. 

      Epílogo:

      Al principio el supervisor de Charles se muestra impresionado. Sin embargo, a medida que analiza el código fuente se da cuenta de que el proyecto era en realidad mucho más simple de lo que había imaginado inicialmente. Ahora parece evidente que esto no era ningún reto, ni siquiera para un programador novato.

      Charles ha producido cerca de 5 líneas de código al día. Quizás ligeramente por encima de la media. Sin embargo, considerando la simplicidad del programa, no se trata de nada excepcional. Además, su supervisó tomó en cuenta que había pasado dos meses holgazaneando. 

     En su siguiente revisión de sueldo a Charles le dan un aumento que era cerca de la mitad de la inflación durante ese periodo. No se le dio ningún ascenso. Cerca de un año después Charles dejó de estar motivado y abandonó Consolidated.

      En Automated, Alan fue felicitado por terminar el proyecto a tiempo. Su supervisor le echó un vistazo al código. A los pocos minutos de hojearlo observó que los estándares de la empresa relacionados con la programación estructurada se habían respetado. Sin embargo, dejó de revisar el programa rápidamente; parecía bastante incomprensible. Se dio cuenta de que el proyecto era mucho más complejo de lo que a él le había parecido inicialmente, y felicitó de nuevo a Alan por su logro. 

      El equipo produjo unas tres líneas de código al día por cada programador. Una cifra más o menos en la media pero que considerando la complejidad del problema podría ser considerada como excepcional. A Alan se le dio un considerable aumento de sueldo, se le ascendió a Analista de Sistemas y se le dio una recompensa por su labor. 


Incognichollos

Esta es una selección con las mejores ofertas tecnológicas actualizadas casi diariamente, como expliqué aquí. Aunque estés en un post “antiguo” las ofertas son de última hora, los Incognichollos los actualizo aparte. Aprovecha, que no suelen durar mucho tiempo:

  • Xiaomi Mi A2 Lite: el telefonazo chollo por excelencia, 5,84 pulgadas, Snapdragon 625, 4 GB de RAM, 64 GB de capacidad, cámara dual 12+5 MP, batería de 4.000 mAh, sin NFC eso sí pero aún así triunfada. Atentos porque el modelo de 3 GB y 32 GB es impresionante en precio: 142,32 euros en GearBest. Acaba de aparecer la actualización a Android 9.0 Pie para este móvil, lo que lo destaca aún más. Dos años de garantía en España, y recordad que tenéis que desactivar el seguro de envío predefinido.
  • Unidad SSD Crucial BX300: una unidad de 120 GB con prestaciones estupendas y que sale por un precio ridículo: 26,19 euros en Amazon.
  • Unidad SSD Samsung 970 EVO: genial con 250 GB y velocidades de transferencia brutales: está a 72,99 euros en Amazon, nunca la vi tan barata. Es la que tengo en mi PC, y me salió a 95 euros como súper ganga, así que imaginad. La versión de 500 GB está a 119,98 euros, gran precio también.
  • Motorola One: un smartphone basado en Android One con pantalla de 5,9 pulgadas, un Snapdragon 625, 4 GB de RAM, 64 GB de capacidad, cámara dual 13+13 MP. Está a 249 euros en Amazon.
  • Smart TV Samsung 65NU7405: una televisión gigante de 65 pulgadas 4K HDR con tres conectores HDMI, 2 puertos USB y todo lo necesario para disfrutar de la tele a lo grande. Está a 899,99 euros en Amazon. También tenéis un modelo Samsung de 55 pulgadas a 599,99 euros y otro modelo Samsung de 50 pulgadas a 499,99 euros.
  • Monitor LG UltraWide 29 pulgadas: un modelo muy curioso para vuestras sesiones de trabajo y juego. Con resolución 2560×1080, AMD FreeSync, conectores USB-C y HDMI. Está a 219 euros en Amazon.
  • Patinete Eléctrico Ninebot ES1 No. 9: otro patinete similar al anterior pero algo menos potente. Hasta 20 km/h y hasta 25 km de autonomía, muy bien también por su precio, 277 euros en GearBest con el cupón GB12ES1 con dos años de garantía en España. Desactivad el seguro de envío, eso sí.
  • Reloj inteligente Huawei Honor Magic: un reloj curioso con pantalla AMOLED, soporte GPS, autonomía de una semana, NFC (¡pagos móviles!), sensor de ritmo cardiaco, monitorización del sueño, barómetro, brújula y notificaciones. Muy curioso por 100 euros en GeekBuying con el cupón EGWQNPDV.
  • Tarjeta gráfica Zotac GeForce GTX 1060 6 GB: una gráfica estupenda para animar vuestras sesiones de gaming. Está a 230 euros en Amazon Alemania, gastos de envío incluidos.
  • Portátil Xiaomi Mi Air: el equipo que rivaliza con los grandes fabricantes del mercado a menor precio vuelve a ponerse interesante. Pantalla de 13,3 pulgadas, Core i5-8250U, 8 GB de RAM, 128 GB de SSD, gráfica NVIDIA GeForce MX 150, lector de huellas, todo por 710 euros en GearBest.
  • Smartwatch Huawei Watch 2: con WiFi y 4G nada menos, este reloj tiene también GPS, Wear OS 2.0 para gobernarlo y un precio fantástico de 199,99 euros en Amazon. Brutal por lo que ofrece, os lo aseguro que lo sé de buena tinta: lo analicé hace tiempo.
  • Auriculares Gaming Sennheiser Game Zero: calidad de
    sonido a lo bestia, reducción de ruido y un micrófono de calidad para las comunicaciones durante las partidas. De esta marca se puede uno fiar, y el precio es estupendo, 109 euros en Amazon frente a los +140 que cuesta normalmente.
  • Televisión Haier 4K 55 pulgadas: vale que no es una marca top, pero tener una Smart TV de 55 pulgadas con resolución  4K/UHD (sin HDR, parece por lo que he visto) por este precio es de locos. Cuenta con Netflix preinstalado, WiFi y TDT2, además de altavoces con soporte Dolby Digital+. Se envía desde UK con garantía de Haier, y está a 365,32 euros en Banggood EU con el cupón e2bcea.
  • Xiaomi Mi 8 (Global): con dos años de garantía en España, envío inmediato. Pantalla AMOLED de 6,21 pulgadas FHD+, Snapdragon 845, 6 GB de RAM, 64 GB de capacidad, cámara trasera 12+12 MP, cámara frontal de 20 MP, lector de huellas trasero, batería de 3.400 mAh. Está en color azul a 337,40 euros en GearBest con el cupón GBMPKBG2 y en color negro a 337,40 euros en GearBest con el cupón GBMPKBG3. Desactivad el seguro de envío, ya sabéis.
  • PocoPhone F1: telefonazo que Xiaomi se acaba de sacar de la manga. Un Snapdragon 845, 6 GB de RAM, 64 GB de capacidad
    (ampliables), pantallón de 6,18 pulgadas y dos cámaras de 12+5 Mpíxeles, además de batería de 4.000 mAh y conector de auriculares. Si no os importa que no tenga NFC, compra estrella de la temporada, sobre todo a este precio. La edición de 6 GB y 64 GB de capacidad está a 257,71 euros en AliExpress, uauh.
  • Xiaomi Mi 8 Pro: la versión más brutal del telefonazo de Xiaomi: 6,21 pulgadas, el célebre diseño con la carcasa semitransparente (de pega, pero es curiosa), Snapdragon 845, 8 GB de RAM, 128 GB de capacidad, cámara dual de 12+12 MP, cámara frontal de 20 MP, sensor de huella bajo la pantalla, en fin, de todo. Está a 452,83 euros en GearBest.
  • Xiaomi Mi Mix 3: el móvil de gama alta más reciente de esta empresa está ahora a precio llamativo. Con pantalla 6,39 pulgadas casi sin marcos (ni notch), Snapdragon 845, 6 GB de RAM, 128 GB
    de capacidad, cámara trasera 12+12, cámara frontal 24+2 MP  (deslizable, un sistema curioso para esconderlas), batería de 3.850 mAh, desbloqueo facial, soporte carga inalámbrica. Muy chulo, y está a 497,22  euros en Gearbest con 2 años de garantía en España. Desactivad el nuevo seguro de envío activado por defecto, ya sabéis.
  • Unidad SSD Netac 480 GB: mucho más barata que las que os pongo al final, casi medio terabyte a precio de 200 GB en unidades de marcas reputadas. Difícil no sentirse tentado porque cuesta 44,21 euros en JoyBuy. Para que veáis la diferencia, la Samsung 860 Evo de 250 GB (casi la mitad de capacidad) cuesta más: está a 56,90 euros en Amazon… y este último no es mal precio. El otro es ya la locura, aunque la marca, claro, no es muy conocida.

¿Quieres recibir un correo de aviso cuando publique nuevas entradas?

Standard

7 comentarios en “La parábola de los dos programadores

  1. MIGUEL dice:

    Creo que generalizar es muy arriesgado, debido a que hay Analistas malos y Programadores malos así como Analistas buenos como Programadores buenos.

  2. La Falacia de los Dos Programadores dice:

    Moraleja de Alan: si la cagas de esa manera estimando el esfuerzo empieza a usar juicio de expertos.
    Moraleja de Charles: si te pasas dos meses tocándote los cojones luego no te sorprendas de caerle mal al jefe.

Comentarios cerrados