¿Qué te ha enseñado la codificación sobre el proceso creativo? ¿Qué te ha enseñado sobre ti?

La codificación me ha enseñado a

  • disminuir la velocidad de pensamiento y observar con más cuidado,
  • lee mucho y encuentra conexiones entre las cosas aparentemente más dispares
  • piensa profundamente y en sentido amplio,
  • experimenta un poco más y
  • aprender de los comentarios para ajustar mi aprendizaje con cada paso.
  • rumiar sobre la experiencia y
  • extraer información de nivel superior que se puede compartir con otros. De ahí la respuesta (s).

La codificación consiste esencialmente en observar cómo resuelves algo dado algunas restricciones y elegir entre opciones y capturar eso en un procedimiento paso a paso. El diablo se encuentra en los detalles.

Introspección, autoanálisis y rendimiento, especialmente rendimiento eficiente (eliminando elementos extraños al hacer coincidir el requisito con una solución adecuada).

Imagine un árbol de decisiones en el que tomar un solo turno hace que vaya a ladrar la rama incorrecta hasta que finalmente se dé cuenta de su error y retroceda. Tomar la decisión correcta en niveles más altos depende de saber

  1. Sabiendo qué opciones tienes ante ti,
  2. Entendiendo las restricciones de tu situación,
  3. Saber cuándo y dónde una opción en particular gana sobre otras opciones (haciendo coincidir las restricciones con USP de cada opción)
  4. Entendiendo los detalles de implementación de cada opción (experiencia)
  5. Pensar de tal manera que pueda cambiar la estrategia sin interrupciones masivas en otras partes (acoplamiento suelto). He aplicado estas lecciones a mi escritura tanto como la codificación.
  6. Ser flexible para cambiar bajo circunstancias cambiantes.

Tengo una licenciatura en teatro, una maestría en administración de sistemas y un doctorado en ciencias de la computación. He escrito una cantidad significativa de código en robótica de laboratorio, modificaciones del kernel de Linux y sistemas de tiempo de ejecución de supercomputadoras. Con las introducciones fuera del camino….

Cuando recibí mi licenciatura, le dije a mi asesor de honores (Bill Condee) que quería aplicar la teoría literaria que estaba usando para codificar. Me dijo que pensaba que era una gran idea, pero que debía esperar hasta que tuviera el cargo.

25 años y dos títulos de posgrado más tarde, tengo (efectivamente) la titularidad, y Bill y yo comenzamos a tener conversaciones ocasionales sobre cómo podría ser un proyecto de este tipo. Finalmente, decidimos que debemos tomar esto en serio o abandonarlo, y el resultado fue un documento de taller presentado en la Sociedad Americana para la Investigación del Teatro en Portland el pasado noviembre.

El resultado, brevemente: el código es literatura performativa y debe ser estudiado en las humanidades como tal. Comparte con el teatro postdramático la ausencia de trama y carácter, pero sigue siendo un autor o autores que crean un texto destinado a una audiencia. La mayor parte del tiempo, la audiencia puede ser otro código (que plantea todo tipo de preguntas interesantes sobre cómo uno escribe el código no solo para actuar, sino también para observar). Los autores tienen un conjunto de creencias, suposiciones, prejuicios, hábitos y objetivos que dan forma al código, pero que a menudo no se encuentran dentro de él. El público también tiene sus suposiciones y creencias. Estoy interesado en comprender el desajuste de impedancia entre el autor y la audiencia y (mientras llevo puesto mi sombrero de seguridad) mostrar cómo se puede explotar.

¿Qué me ha enseñado esto sobre mi proceso creativo? Como lector, soy mucho más sensible a lo que el código no dice, al menos no explícitamente. Por ejemplo, si veo un código muerto, estoy mucho más dispuesto a investigar más a fondo. ¿Por qué fue este código aquí en primer lugar? ¿Siempre ha estado muerto o una revisión posterior lo aisló? ¿Qué estaba tratando de lograr la revisión? Al hacer estas preguntas, estoy formando una imagen del programador que escribió el código, y esa imagen informa cómo leí la lectura de su trabajo.

En cuanto a cómo escribo el código: todavía estoy tratando con la autoconciencia que proviene de leer el código a un nivel más profundo, por lo que ahora creo que todo lo que escribo es miserable y torpe. He estado aquí antes, muchas veces; esto también pasará.

¿Qué me ha enseñado todo esto sobre mí? Bueno, siempre quise ser un dramaturgo, por lo que ahora estoy pensando en qué aspecto podría tener un dramaturgo de código: alguien que tenga un conocimiento profundo del código pero también un entendimiento profundo de las circunstancias en las que se escribió, es Historia e influencias históricas, cómo se ha utilizado y modificado, y qué significa, si acaso, lo que significa en el mundo en general.

Estoy enseñando una práctica de supercomputación este próximo semestre y la mayor parte de la clase se dedicará a la optimización del rendimiento de un solo código serial, desde las mediciones iniciales hasta el multihilo y, finalmente, se ejecutará en las máquinas grandes de LLNL. Estoy pensando en enseñar que el código como dramaturgo enseñaría una obra: aquí hay una elección hecha por el autor, aquí están las influencias que dieron forma a la elección, aquí están las implicaciones, y ahora usted (el estudiante) tiene la oportunidad de revise esa elección (siempre que se mantenga correcta, por supuesto).

Debería ser divertido.