Esta historia muy breve de mi libro Boomer es un terrible problema de programación desde un rincón sorprendente.
Kickout
A fines de los ’70, recién salido de la universidad, contraté trabajo en una gran compañía para hacer pronósticos de ingresos. Durante los primeros seis meses, fue a prueba. Podría dejarme ir como un mal ajuste. No es necesario que demuestre la causa, pero la economía y las matemáticas estaban en mi línea. Estaba ansioso por mostrar lo fuerte que era.
Después de dos meses, ayudé en todas las operaciones de rutina: pronósticos por producto, ajustes de estacionalidad, Box-Jenkins, regresión con historial de ingresos, crecimiento del sector y del PIB, y más. La mayoría de los días trabajé desde las 7 de la mañana hasta las 6 de la noche.
El procedimiento que se me ordenó seguir requirió que la salida de una ejecución se ingresara manualmente en la siguiente secuencia de trabajos. Eso requirió que cuidara de la operación. Había más de una docena de líneas de productos para pronosticar cada semana. Cada uno corrió de 15 a 30 minutos. También imagine el tedio de ingresar cada uno de 13 coeficientes con 9 decimales.
Estuve en la terminal todo el día, a excepción de los descansos en el baño. La habitación terminal, mi casa en el trabajo, yacía dentro del edificio, una habitación sin ventanas, sin pizazz en absoluto. Estoy convencido de que era un armario de conserje convertido, de solo 6 pies de ancho y 20 pies de largo. Hubo varios otros programadores que llegaron, corrieron sus programas y se fueron. Estaba celoso de su libertad. Un fuerte ventilador zumbó todo el día, soplando calor hacia los conductos de salida y matando a toda conversación significativa. No había carteles o fotos en las paredes. Las paredes estaban grises y descoloridas. Después de un largo día allí, mi lado estético gritó por atención. Mi alma estaba siendo muerta de hambre.
¿Alguna vez has visto algo y te acabas de dar cuenta de que lo has visto en un sueño?
¿Alguien ha tenido alguna experiencia real fuera del cuerpo en un sueño?
Jack, mi jefe, era un desagradable duende de un hombre, bajo pero ancho con una barriga impresionante de cerveza. Se jactó de que nuestra factura informática con el proveedor de SimCalc era de $ 25K el mes pasado. ¡Es más de lo que mi trabajo pagó durante todo el primer año! Se rió y me dijo que Walt, el gran jefe, se había quejado. Jack se rió en vivo de que estaba tragando un hobbit y afirmó que le había dicho a Walt que solo mostraba lo valiosas que eran sus predicciones.
Llevé el manual de SimCalc a casa para estudiar. Emily no estaba feliz de que toda la noche tuviera mi nariz en el libro, pero tenía que salir de esa maldita habitación terminal. Demasiados días comiendo galletas de queso y bañándolos con un refresco de uva, mientras controlaba los programas, me volvería loco. Más tarde esa primera noche, encontré mi objetivo: comandos para leer y escribir en archivos.
La noche siguiente, traía a casa listados de dos programas de pronóstico que se ejecutaban en secuencia. Los puse sobre la mesa de la cocina. Todos los programas de pronóstico tenían la misma estructura básica. Si descubriera cómo alterar este par, podría automatizarlos a todos. En ese momento, podría almorzar donde quisiera, con comida de verdad. Podría salir y respirar en la naturaleza.
Fue después de la medianoche. Eric Burden cantó “Tenemos que salir de este lugar” en el estéreo. Los programas fueron largos con muchos bucles y funciones realizadas. Me centré en los lugares para escribir los parámetros en el primer programa y dónde leerlos en el segundo.
Debería haberme ido a dormir entonces, pero mi cerebro estaba acelerado. Miré a través de cálculos intrincados en el idioma de SimCalc. Hice algunas notas, pero realmente no entendí lo que estaban haciendo. Pero luego noté una rareza. Después del cálculo final, justo antes de escribir los resultados, el primer programa tenía un ciclo que parecía escribir una serie temporal en la memoria diez mil veces.
¿Porqué haría eso? Miré más arriba en el listado. Incluso allí, los resultados temporales fueron seguidos por bucles que escriben en la memoria diez mil veces también. Negué con la cabeza. Eso no tiene sentido. Una señal segura de que estaba demasiado cansado para pensar con claridad. Fui a la cama.
Después de las últimas horas, fue difícil sacarme de la cama hasta que recordé que podía preparar los programas hoy.
Como de costumbre, llegué al trabajo a las 7 AM. Hice los cambios antes de que Jack entrara. No le gustaría. Él me había dicho que no cambiara los programas. No lo había hecho, realmente no. Los cálculos fueron los mismos. Simplemente corrieron con menos mano.
Mientras corría mi primer par en tándem, hojeé el manual de SimCalc. Un perfil de comando me llamó la atención. Informa, después de que se ejecuta el programa, cuánto tiempo se usa en cada comando.
Agregué el perfil para la próxima ejecución en tándem. A la hora del almuerzo, descubrí que los varios 10 mil bucles de escritura consumían el 25% del uso total de la CPU del programa. SimCalc nos cobró por el tiempo de CPU. ¡Eso significaba que su facturación fue aumentada en un 25%!
Antes de que apenas hubiera pensado en esto, Jack entró en la habitación terminal.
“Jack, no vas a creer esto”, dije. “¡SimCalc nos está engañando por seis mil al mes!”
Su frente arrugada, una línea de preocupación. Levantó la mano como un policía de tráfico. “Aqui no. Mi oficina.”
Recogí mi listado marcado y lo seguí.
De vuelta en su escritorio, metió una hoja con números escritos a mano en el cajón superior. Lo reconocí como un recuento de la pasión, su juego de póquer semanal. Él me miró con las cejas fruncidas. “¿De qué estás acusando a SimCalc?”
“Nos están engañando”. Puse el listado frente a él. “Mira aquí”. Señalé el ciclo vacío final.
Él lo miró y se encogió de hombros. “¿Asi que? Tienen un bucle. Así es como funciona el programa “.
Me enderecé. “Ese ciclo escribe los mismos resultados en la misma ubicación de memoria. No una, sino diez mil veces. Los bucles vacíos representan una cuarta parte del tiempo del programa. Son bucles falsos “.
Jack se reclinó en su silla. “Este programa fue escrito por Jimbo, el mejor programador que tiene SimCalc. No creo que haya cometido un error así. ¿Utilizaste la precisión decimal como te dije que usas? ”
“Sí.” Tuve que dejar de discutir sobre eso. Nuestros datos de ventas solo tenían 2 decimales. Doce dígitos en los parámetros daban una falsa impresión de exactitud. “Todo lo que digo, Jack, es que si no es un error, entonces ¡es una decisión consciente cobrarnos más!
Él se paró. “Me ocuparé de esto. Déjame … “Tomó mi lista de programas.” ¿Cuáles son estas otras asignaciones? Parecen nuevas variables “.
Tuve que confesarme. “Los agregué para que el procedimiento sea más automático”.
“¡Te dije que no cambies los programas! ¡Eso es lo que causó estos números de perfil locos! Tu lo causaste. “Jack movió su garra hacia la puerta.” Vete. Ve a la sala terminal y completa los pronósticos que te asigné. Y corre los programas sin alterar “. Metió mi lista en un cajón y recuperó su póker. hoja de seguimiento.
Me sorprendió Él no creía en la evidencia. Por supuesto, mis variables de automatización no afectarían el uso de la CPU en otras partes del programa. Cualquier programador decente sabría eso. Él no era tonto. Lo resolvería cuando lo pensara bien.
Le entregué los pronósticos a las 5:30 de la tarde. Gruñó gracias y me dio media sonrisa. Probablemente se estaba dando cuenta de que tengo razón.
Esa noche, estaba en lo más alto por mis sorprendentes hallazgos. Le dije a Emily que nos mudaríamos a ese ranchero tan pronto como Jack se diera cuenta de los ahorros en costos de la compañía. Fantaseaba que cuando Jack le mostrara a Walt mi descubrimiento, quedarían tan impresionados que inmediatamente me tomarían como permanente.
Al día siguiente, llegué ansiosamente al trabajo. Había una nota en mi escritorio. “Encuéntrame en la oficina de Walt a las 10. Jack”.
Empecé las previsiones diarias, matando el tiempo. Inmediatamente a las 10, llamé a la puerta de Walt. Jack estaba sentado en la silla de orejas. Levantaron la vista.
Walt me hizo un gesto con un gesto de la mano hacia la silla de respaldo recto frente a él. “Sentar.”
Lo hice y esperé por las felicitaciones.
Walt escribió algo en su planificador diario, miró brevemente a Jack y luego se volvió hacia mí. “Jack me dice que no sigues sus órdenes. Has maquinado el programa con un enfoque indisciplinado. ¿Está bien?”
“No.” Esto no fue lo que esperaba. Sabía que se requería una explicación, pero todo lo que pude decir fue “No hice nada malo”.
Walt se rascó la cabeza. “No es una pregunta complicada, pero parece demasiado para ti. Jack, ¿cuáles son los detalles?
“Sí, señor.” Jack movió la cabeza, se giró hacia mí y su amplia sonrisa falsa mostró sus incisivos. “Te di la simple tarea de los pronósticos de la línea de productos”. Tomó un sorbo de café, luego continuó. “Te dije específicamente que no cambies ninguno de los códigos. Cambiaste el código y llegas tarde y me das los resultados. Tengo que trabajar hasta tarde porque nunca me das las cosas a tiempo “.
Eso fue tan injusto. Antes no podía terminarlos en el tiempo normal, porque estaban muy mal construidos. ¡Los mejoré y esto es lo que obtengo!
Walt me miró por encima de sus gafas de lectura. “¿Bien?”
“Yo mejoré …”
“Esa no es la pregunta”, Walt me interrumpió. “¿No lograste obtener tus pronósticos asignados a Jack antes de la fecha límite de las 3 PM?”
“Sí, fue más tarde.” Bajé mi cabeza instintivamente, y al darme cuenta de que mostraba culpa, lo cual no sentí, los miré.
Walt se sentó con calma, pero las orbes negras de Jack ardieron.
“El código cambiado”, Jack le recordó a Walt.
“¿Cambiaste el código que Jack te dijo que dejes en paz? ¿Que tenemos una pequeña fortuna invertida?
Eso fue imposible. Los pronósticos nunca podrían estar listos a media tarde, tal como estaban. Tenía que ser honesto, “Sí, pero los mejoré”.
Jack resopló. “Es por eso que no los recibí hasta después del 5 de ayer”.
“Eso lo soluciona”, dijo Walt. “Te contraté para ayudar a Jack, pero eso no está ayudando. Tienes que ir. Contaremos hoy como medio día, pero te quiero fuera en una hora “.
Me puse de pie, estupefacto, y me fui. No recuerdo cómo llegué a casa ese día.
Me llevó semanas enterarme de la vergüenza de perder el prometedor trabajo del que me había jactado de estar tan bien emparejado.
No fue hasta que vacilantemente le conté la historia a mi mejor amigo cuando me di cuenta de la verdadera motivación de Jack. Jack se deshizo de mí tan pronto como me encontré con la estafa de facturación SimCalc. Uno de sus amigos del póker era Jimbo, el programador SimCalc. Habían embolsado el exceso de facturación.
Jack recibió un soborno. ¡Tengo el golpe de gracia!