October 15, 2006

El Tao de la Programación (5.2, 5.3, 5.4)

5.2 Un gerente le preguntó a un programador cuánto tardaría en terminar el programa en el cual estaba trabajando. “Lo terminaré mañana”, respondió el programador.

“Creo que no estás siendo realista,” dijo el gerente, “¿En realidad, cuánto tiempo tardará?”

El programador pensó por un momento. “Tengo algunas características que desearía agregar. Esto tomará al menos dos semanas”, finalmente dijo.

“Aún esto es esperar mucho,” insistió el gerente, “Estaré satisfecho si tu simplemente me avisas cuando el programa esté completo.”

El programador aceptó esto.

Varios años pasaron, el gerente se retiró. En el camino a su comida de despedida, descubrió al programador dormido en su terminal. Había estado programando toda la noche.

5.3 Un programador novicio fue una vez asignado para codificar un paquete financiero sencillo.

El novicio trabajó furiosamente por muchos dias, pero cuando su maestro revisó su programa, descubrió que contenía un editor de pantalla, un conjunto de rutinas generales gráficas, y una interface con inteligencia artificial, pero ni la más remota mención de nada financiero.

Cuándo el maestro le preguntó acerca de esto, el novicio se indignó. “No seas tan impaciente, ” dijo, “ya pondré esa cosa financiera eventualmente.”

5.4

¿Acaso un buen granjero abandona la cosecha que ha plantado?
¿Acaso un buen maestro pasa por alto aún al más humilde estudiante?
¿Acaso un buen padre permite que uno sólo de sus hijos se muera de hambre?
¿Acaso un buen programador se rehusa a mantener su código?

October 7, 2006

El Tao de la Programación(Libro Cinco)

Libro Cinco: Mantenimiento

Asi habló el maestro programador:

 

Aunque un programa sólo tenga tres líneas de largo, algún dia tendrá que ser mantenido.

5.1 Una puerta bien usada no necesita aceite en sus bisagras. Una corriente que fluye veloz no se estanca. Ni el sonido ni los pensamientos pueden viajar a través de un vacío. El software se pudre si no se usa.

Esos son grandes misterios.

October 1, 2006

El Tao de la Programación (4.4)

4.4 El programador del Príncipe Wang estaba codificando. Sus dedos bailaban sobre el teclado. El programa compiló sin un mensaje de error, y el programa corrió como viento ligero.

“¡Excelente!,” exclamó el Príncipe, “¡Tu técnica no tiene fallas!”

“¿Técnica?,” dijo el programador, girándose hacia su terminal, “Lo que yo sigo es el Tao — mas allá de toda técnica. Cuando al principio empecé a programar yo podía ver el programa completo en un bloque. Después de tres años ya nunca más vi ese bloque. En vez de eso, usé subrutinas. Pero ahora no veo nada. Todo mi ser existe en un vacío sin forma. Mi sentidos estan ociosos. Mi espíritu, libre para trabajar sin un plan, sigue su propio instinto. En resúmen, mi programa se escribe así mismo. Es verdad, a veces hay problemas y dificultades. Las veo venir, me freno, observo silenciosamente. Entonces cambio una sola linea de código y las dificultades se desvanecen como nubes de humo. Entonces compilo el programa. Me siento erguido y dejo que el gozo del trabajo llene mi ser. Cierro mis ojos por un momento y entonces cierro mi sesión.”

El Príncipe Wang dijo, “¡Ojalá todos mis programadores fueran tan sabios!”

September 30, 2006

El Tao de la Programación (4.3)

4.3 Un maestro estaba explicando la naturaleza del Tao a uno de sus novicios, “El Tao está encarnado en todo software — sin importar cuán insignificante sea”, dijo el maestro.

“¿Está el Tao en una calculadora portátil?”, preguntó el novicio.

“Está”, fué la respuesta.

“¿Está el Tao en un video juego?”, continuó el novicio.

“Está hasta en un video juego”, dijo el maestro.

“¿Y está el Tao en el DOS de una computadora personal?”

El maestro tosió y cambió ligeramente su posición. “La lección se acabó por hoy”, dijo.

September 27, 2006

El Tao de la Programación (4.2)

4.2 Un novicio le preguntó al maestro: “Tengo un programa que a veces corre y a veces aborta. He seguido las reglas de la programación, y aún así estoy desconcertado. ¿Cuál es la razón de esto?”

El maestro contestó: “Estás confundido porque no entiendes el Tao. Sólo un tonto espera comportamiento racional de sus semejantes humanos. ¿Qué esperas de una máquina que los humanos han construido? Las computadoras simulan determinismo; solo el Tao es perfecto.

Las reglas de programación son transitorias; solo el Tao es eterno. Por lo tanto tu debes contemplar al Tao antes de recibir iluminación.”

“¿Pero cómo sabré cuando he recibido la iluminación?”, preguntó el novicio.

“Tu programa correrá entonces correctamente”, contestó el maestro.

September 25, 2006

El Tao de la Programación(Libro Cuatro)

Libro Cuatro: Codificación

Asi habló el maestro programador:

 

Un programa bien escrito es su propio cielo; un programa mal escrito es su propio infierno.

4.1 Un programa debe ser ligero y ágil, sus subrutinas conectadas como un collar de perlas. El espíritu e intención del programa debe ser retenido ante todo. No deberá haber ni poco ni mucho, ni ciclos innecesarios ni variables sin usar, ni falta de estructura ni excesiva rigidez.

Un programa debe seguir la ‘Ley del Menor Asombro’. ¿Cuál es ésta ley? Es simplemente que el programa siempre debe responder al usuario de la manera que lo asombre lo menos posible.

Un programa, no importa cuán complejo sea, debe actuar como una sola unidad. El programa debe ser dirigido por la lógica interna y no por las apariencias externas.

Si el programa falla en estos requerimientos, estará en un estado de desorden y confusión. La única forma de corregir esto es reescribir el programa.

September 24, 2006

El Tao de la Programación (3.4)

3.4 Un gerente fue con el maestro programador y le mostró el documento de requerimientos para una nueva aplicación. El gerente le preguntó al maestro: “¿Cuánto tiempo tomará diseñar este sistema si le asigno cinco programadores al proyecto?”

“Tomará un año”, dijo el maestro rápidamente.

“¡Pero necesito este sistema inmediatamente o antes! ¿Cuánto tiempo se trdará en diseñar este sistema si le asigno diez programadores?”

El maestro frunció el ceño. “En este caso, tomará dos años.”

“¿Y si le asigno cien programadores?”

El maestro se encogió de hombros. “Entonces el diseño nunca será completado”, dijo.

September 21, 2006

El Tao de la Programación (3.2, 3.33)

3.2 Hubo una vez un maestro programador que escribía programas no estructurados. Un programador novicio, buscando imitarlo, también comenzó a escribir programas no estructurados. Cuando el novicio le pidió al maestro evaluar su progreso, el maestro lo criticó por escribir programas no estructurados, diciendo: “Lo que es apropiado para el maestro no es apropiado para el novicio. Debes entender el Tao antes de trascender la estructura.”

3.3 Hubo una vez un programador que estaba asignado a la corte del señor de Wu. El señor le preguntó al programador: “¿Qué es más fácil de diseñar: un paquete de contabilidad o un sistema operativo?”

“Un sistema operativo”, contestó el programador.

El señor lanzó una exclamación de incredulidad. “De seguro un paquete de contabilidad es trivial comparado con la complejidad de un sistema operativo”, dijo.

“No tanto,” dijo el programador, “al diseñar un paquete de contabilidad, el programador opera como un mediador entre personas que tienen ideas diferentes: cómo debe operar, cómo debe entregar sus reportes, y como debe conformarse con las leyes de impuestos. Al contrario, un sistema operativo no está limitado por las apariencias externas. Al diseñar un sistema operativo, el programador busca la armonía más simple entre máquina e ideas. Es por esto que un sistema operativo es más fácil de diseñar.”

El señor de Wu asintió y sonrió. “Eso está bien y correcto, pero ¿cuál es más fácil de depurar?”

El programador no contestó.

September 20, 2006

El Tao de la Programación(Libro Tres)

Libro Tres: Diseño

Asi habló el maestro programador:

 

Cuando el programa está siendo probado, es muy tarde para hacer cambios de diseño.

3.1 Hubo una vez un hombre que fué a una feria de computadoras. El primer día al entrar, le dijo al guardia de la puerta:

“Yo soy un gran ladrón, renombrado por mis hazañas de robar tiendas. Estás avisado de antemano, porque esta feria no escapará sin ser saqueada.”

Estas palabras incomodaron mucho al guardia, porque adentro había millones de dolares en equipo computacional, así que observó al hombre cuidadosamente. Pero el hombre solamente vagaba de stand en stand, murmurando para sí.

Cuando el hombre se iba, el guardia se lo llevó aparte y buscó entre sus ropas, pero no encontró nada.

Al siguiente día de la feria, el hombre regresó y regañó al guardia diciendo: “Ayer escapé con un gran botín, pero hoy será todavía mejor.” Así que el guardia lo observó más de cerca, pero sin resultados.

En el último día de la feria, el guardia no pudo resistir más su curiosidad. “Señor Ladrón, “ dijo “estoy tan confundido que no puedo vivir en paz. Por favor ilumíneme. ¿Qué es lo que está robando?”

El hombre sonrió. “Estoy robando ideas” dijo.

September 19, 2006

El Tao de la Programación (2.4)

2.4 Un novicio le preguntó al Maestro: “Hay un programador que nunca diseña, documenta, ni prueba sus programas. Y todos los que lo conocen lo consideran uno de los mejores programadores del mundo. ¿Cómo es esto?

El Maestro contestó: “Ese programador se ha convertido en un maestro del Tao. El ha ido más allá de la necesidad de diseñar; el no se enoja cuando el sistema se cae, acepta al universo sin preocupación. El ha ido más allá de la necesidad de documentar; ya no le interesa si alguien más ve su código. El ha ido más allá de la necesidad de probar; cada uno de sus programas son perfectos dentro de sí mismos, serenos y elegantes, su proposito es auto-evidente. Realmente, el ha penetrado el misterio del Tao.”