¿Qué es el código negativo?

En la red encontramos referencias al término código negativo pero, ¿Qué significa? y ¿De donde provino? Su primer uso provino de Douglas MacIlroy con la célebre frase:
 El verdadero héroe de la programación es el que puede escribir código negativo.
The real hero of programming is the one who writes negative code.
 Pero, ¿A qué se refería exactamente?


A lo que Douglas se refiere con código negativo es a reducir lineas de código. Puede que parezca extraño, pues al programar usualmente agregamos características o arreglamos bugs, lo que tiene como efecto agregar lineas de código. Pero la reducción de lineas de código se consigue eliminando redundancias o usando construcciones mas claras y concisas, también llamado reestructuración o refactoring de código.

Un claro ejemplo de código negativo lo vemos en esta famosa anécdota del equipo original de desarrolla de Apple Lisa:
 Cuando el equipo de Lisa estaba presionando para finalizar su software en 1982, los administradores de proyecto empezaron a requerir que los programadores envíen reportes semanales acerca de la cantidad de lineas de código que han escrito. Bill Adkinson pensó que eso era una tontería. Para la semana en la que habíamos reescrito las rutinas de cálculo de región de QuickDraw para que sea 6 veces mas rápido y 2000 lineas de código mas corto, él puso "-2000" en el formulario. Después de un par de semanas, los administradores dejaron de pedirle que llene el formulario de lineas de código, y el cumplió con mucho gusto.
Hay una cita a Bill Gates respecto a medir la productividad de un programador por la cantidad de lineas de código, diciendo que es como medir el progreso de un avión por su peso. Cabe destacar que agregar las mediciones de lineas de código es una muy mala práctica, porque fomenta el uso excesivo de código sobre-detallado y la reinvención de la rueda, solo para llegar a la cuota.

Otra cita célebre relacionada es de Antoine de Saint-Exupéry:
La perfección se alcanza, no cuando no hay nada mas que agregar, sino cuando no hay nada mas que quitar.
 Y tu, ¿Cuál crees que es la mejor forma de medir la productividad de un programador?



No hay comentarios:

Publicar un comentario