Posts | Tags | Categories | Archive

Collage vs. Origami

En mis años como programador he visto mucho código. Lo suficiente como para saber qué estilo tiene el programador que lo escribe, cuáles son sus vicios y cuáles son sus errores de concepto.

Nos resulta imposible definir conceptos como “elegancia” o “claridad” en un código. Son conceptos más afines a la Estética que a las Ciencias de la Computación, siendo difíciles de medir objetivamente. Nunca serán parte de una metodología y, sin embargo, se consideran objetivos a alcanzar por todo programador que se precie.

En nuestra simpleza, necesitamos compartimentar todo lo que conocemos en grandes grupos: imperativo vs. dinámico, tipado estático vs. tipado dinámico, estructural vs. orientado a objeto, orientado a objeto vs. funcional, …

En este mundo de versus, podemos hacer una similitud de la programación de código con el versus “Collage vs. Origami”.

  • Un código collage sería un código construido como parches. Secciones de estructuras distintas, con controles que encajen todas las piezas. Todo pensado para que si una pieza no funciona, se “arranca” y se pone otra encima.

  • Un código origami sería un código que se pliega sobre sí mismo. Un código que te lleva desde un principio a un final por el camino más corto. Si algo no funciona, se vuelve atrás, se “desdobla” y se hace un doblez nuevo.

Al igual que el origami, la creación de código requiere muchas veces pararse a pensar qué parte del código se complicó demasiado y actuar sobre esa parte. Si no se entiende bien, una repetición consistente en teclear decenas de veces ese código ayuda a entender mejor lo que hace y el motivo que hacía que fuera tan complicado. Es muy similar a repetir los mismos dobleces de una figura de papel hasta lograr su doblado perfecto.

Como parte de tribunales de selección para puestos informáticos, me he sentido muchas veces molesto por tener que redactar tediosos cuestionarios de preguntas técnicas que nada valoraban la capacidad real del candidato para el futuro trabajo que iba a realizar. El objeto era realizar una fuerte criba entre los candidatos y, sobre todo, ordenarlos por puntos para hacer más sencilla su selección posterior.

Pero era en la posterior prueba práctica donde mejor podía apreciar la valía de un candidato. Una visión del código fuente y la documentación asociada permitía apreciar claramente quiénes eran los adecuados para el puesto. Pero ¿cómo valorar con una puntuación esta percepción?

Puede que para la próxima vez empiece por pedir al candidato que doble el papel de los enunciados de la prueba. Seguramente consiga saber más de él que de las respuestas que pueda darme.

© Chema Cortés. Built using Pelican. Theme is subtle by Carey Metcalfe. Based on svbhack by Giulio Fidente.