El Programador Hereje

 

 

"No creas nada por la sola autoridad de los viejos maestros, ni creas solo porque algo está escrito en los libros.

Solo cree en aquello que de acuerdo a tu experiencia parezca razonable y conveniente. Esa debe ser tu fe y tu verdad, la guía de tu vida y tus acciones"

(Buda...parece)

 

La computación religiosa

Algunos dogmas de mi época: "Solo los que programamos en Asembler somos verdaderos programadores", "Pascal es el lenguaje del futuro", "C es el lenguaje del futuro", "C++ es el lenguaje del futuro, los demás son cosa de aficionados", "los profesionales programamos en Cobol (o RPG) que es el estandar de los grandes sistemas", "el lenguaje xx, no es un verdadero lenguaje, porque acepta el uso de gotos", "MS-DOS apesta, WIndows es un verdadero sistema operativo", "los verdaderos programadores no usamos bases de datos"

Y algunos dogmas actuales: "Las aplicaciones serias solo pueden ser escritas en C++", "Java es el lenguaje del futuro", "los profesionales usamos UNIX, que es el estándar de los servidores de Internet" , "el lenguaje xx no es un verdadero lenguaje, porque no acepta herencia", "Windows apesta, Unix es un verdadero sistema operativo", "el programador debe estar aislado de la ubicación física de los datos"

Lo curioso es que los conceptos se repiten, solo cambian los nombres: yo recuerdo clarito la pelea a muerte entre DOS y Windows ¡pero si fue hace tan poco! lo que en el fondo se discutía eran los méritos de la GIU respecto a la consola de teletipo ¡pensar que ahora con Lynux se dan vuelta los argumentos! Oh tiempos, Oh costumbres!

Chocherías: En mis tiempos jovencitos, la computación era cosa de científicos con pipa y bata blanca, un IBM 1130 en una sala climatizada con "piso falso". Nuestro contacto con el monstruo era a través de una máquina perforadora remota. A 600 kilómetros de distancia, el equipo funcionaba día y noche y devolvía inmensos listados sin sentido cuando nos fallaba el picado de una tarjeta. El 1130 tenía debilidad por los loops.

Llegó el PDP 11 y conocimos las consolas, los peritos en Fortran, programabamos el juego del gato con simpaticos mensajes que nos mataban de la risa "Hola, veo que quieres jugar al gato, pues bien, tus deseos serán concedidos, yo soy el computador...." etc.

En el principio fue el caos : pocos recuerdan que existió una época antes de la estandarización, donde había que formatear a los diskettes según la marca de computador que usábamos: un formato para el Radio Shack, otro para el Casio, uno para Atari, y tantos otros. Los que nos formamos en esa época recordamos bien lo indispensable que llegaba a ser un programador.

Mi primer trabajo me lo dio el desesperado dueño de una fábrica de cosméticos, en 1979: había importado el primer Radio Shack TRS-80 y el programador lo había dejado botado después de un año paralizando su sistema contable y de inventario. Mi trabajo consistía en resucitar al muerto desentrañando el código de mi amigo. Por más que dije "¡Lázaro, levántate y anda!" no se pudo. Fue uno de los dos grandes fracasos en mi vida de programador.

Luego me tocó a mí: en mala hora me contrató la Gobernación Marítima para hacerles un programa de control de movimiento de naves. El diseño se enredó horriblemente y jamás funcionó. Fue mi segundo gran fracaso y de allí saque una lección importante: a la hora del diseño, el cliente no siempre tiene la razón.

¿De que diablos se trata todo esto, al fin y al cabo? : mi idea original era hacer un poco de filosofía barata con la computación, pero parece que me estoy perdiendo en disgresiones y recuerdos que no interesan a nadie. Vamos a ver si encuentro el buen camino.

La programación arte vs la programación ciencia: llegó un momento en que los programas dependían de las habilidades, costumbres y -por que no decirlo- pillerías del programador, y los programadores se convirtieron en tipos poderosos dentro de la organización. De esa época es el mito que "la computación es el trabajo del futuro" que hizo surgir como lirios del valle las carreras cortas, medianas y largas producto de esta nueva "fiebre del oro". Esto no podía sostenerse, por una parte no era posible que todos los sistemas de una empresa dependieran de lo que sabia un solo tipo, por otro lado se computarizaron problemas más complejos y empezó a ser necesaria la colaboración de varias personas en un mismo proyecto.

Hasta donde recuerdo, los cambios comenzaron a principios de los 80s: comenzaron a cambiar las palabras, ahora se hablaba de "sistemas" y más tarde de "aplicaciones" en lugar de los antiguos programas. Si los sistermas eran grandes se hacía un proyecto, con jefe de proyecto, analistas y programadores. También comenzaron a propagarse los criterios de la programación estructurada, lo más valioso de toda la hipe de inventos que salió después.

La idea básica era eliminar al programador como tipo hábil y reemplazarlo por un técnico que siguiera pautas fijas, restrictivas y estandarizadas, de este modo cualquiera podía ser un programador competente (ya no eran necesarias habilidades o creatividad especiales) y cualquier programador podría entender el código escrito por otro, con lo que se eliminaba la dependencia y se facilitaba la cooperación.

Esa fue la muerte de la computación como actividad interesante paulatinamente los programadores, en todas sus variedades fueron perdiendo interés de lo que hacían, limitándose los códigos a ser predeciblemente parecidos. la codificación se convirtió en una actividad similar a la traducción de libros técnicos: cero creatividad y moderada complicación. La creatividad quedó reservada a los proveedores de sistemas operativos, compiladores y motores de base de datos.

La raiz de todos los males fue la ideologización. era predecible, los pioneros de la computación venían de formación técnica y todos tenemos mas o menos claro el concepto de una "personalidad cuadrada". Bastaba que un gurú de suficiente prestigio (real o inventado) dijese algo para que fuera seguido ciegamente por una masa de lemmings intransigentes. De allí vienen los dogmas que tienen su auge y caida, pero mientras duran son defendidos con dientes y muelas por los lemming de turno. El concepto de "criterio" nunca ha sido internalizado por los que se han formado en la bizarra idea de que el mundo real puede ser de algun modo modelado.

El Manifiesto Individualista: Por una Computación Hereje

  1. No hay razón para creer que lo que es conveniente sea además verdad absoluta, menos con validez en toda clase de situaciones
  2. No hay razón ni lógica para que la computación se convierta en un asunto uniforme, aburrido y rutinario, el caos, a veces vale más que el orden
  3. Rechazemos todo dogma, toda regla tiene su excepción, cada caso es un caso.
  4. Rechazemos la estúpida pretensión de que todo sistema puede ser modelado
  5. Rechazemos, mil veces, la idea subyacente de que existen modelos o metodologías tan amplias que pueden abarcar cualquier tipo de problema de la vida real
  6. Devolvamos a las reglas su real valor: son solo eso, reglas, que pueden ser rotas cada vez que nuestro criterio asi lo recomiende
  7. Dediiquemos nuestra fuerza a obtener buenos resultados: los fines importan más que los medios, tal como lo descubrió Maquiavello hace mucho tiempo
  8. Neguémonos, sobre todo, a despreciar lo que no conocemos y defender lo que ya dominamos, en esa tendencia está el germen de la demencia informática, tan común en nuestra época
  9. Busquemos sobre todas las virtudes la simplicidad, lo simple es sublime, cualquier regla, criterio o procedimiento que introduzca complicación debe ser inmediatamente desterrado. Lo mejor es siempre lo evidente.
  10. Una vez limpias nuestras almas de los dogmas, estudiemos cada uno de ellos, hasta dominarlos y comprender su significado íntimo de manera que seamos capaces de decidir cuando es ventajoso aplicarlos y cuando no

Me gustaria ver una vuelta al individualismo en la computación, las universidades la han transformado en una actividad de masas, cooperativa y rutinaria, los datos se almacenan en bases que luego pasan a objetops abstractos que pueden manejarse por cualquiera que maneje la teoría de conjuntos y la lógica, el programador se aísla trabajando an una capa cada vez más abstracta y dejando el trabajo sucio a los que diseñaron los sistemas básicos: métodos de búsqueda, ordenamientos (ahhh los archivos ISAM en el viejo COBOL..) son cosa del pasado. Cuando yo estudiaba programábamos en Assembler el SDK 80 (los viejísimos Z80 y 8080) las operaciones de entrada y salida, inutil, de acuerdo, pero bonito (ya estoy chocheando de nuevo).

Los hackers son la expresión deformada de este anhelo individualista, es una especie de enfermedad de la computación moderna. En mis años jovencitos (ñaca ñaca, dejenme arreglarme la placa y el paletó) no existían los hackers. Si hay algo que caracteriza a un hacker es su búsqueda de lo complicado, "estirar los sistemas", "sacarles provecho al máximo, hasta donde nadie ha llegado antes", eso no tiene gracia. Los hackers son en general gente que les gusta resolver problemas complicados y como tal son muy poco creativos (es sabido que a los creativos les cuesta concentrarse en un problema). Pero dentro del aburrido mundo de la computación los hackers son una esperanza, una señal que el individualismo no se mata así nomás.

Reviso lo que he escrito y no encuentro nada de lo que quise decir originalmente, tal vez ni vale la pena colocar filosofía tan barata en la página, pero hay que poner cosas nuevas, mejor algo malo antes que nada. En fin, puede que otro día se me ilumine la ampolleta y sea capáz de escribir algo que tenga sentido.

 

 

 

"Los sueños de la razón producen monstruos"

(Goya...creo)