Por qué es interesante saber programar (y por qué defiendo el software libre y el ideal de código abierto)

En el mundo actual, ser capaz de leer y entender el código de los sistemas informáticos es como tener superpoderes.

Si bien hace meses comenté mi opinión sobre aprender a programar a nivel de planes de educación, esta vez lo haré a nivel personal. Siempre me gustó la programación: es un mundo basado en las matemáticas en la física, donde mediante lógica todo es cuestión de causas y consecuencias. Incluso en los comics que leí de adolescente ya tenía a varios informáticos entre mis personajes preferidos (como no, siempre secundarios o terciarios), teniendo como capacidad principal el entender el por qué de las cosas, o la capacidad de ver cosas ocultas para el resto del mundo. Pero de lo que no tenía ni idea era que en el futuro, al saber informática, yo misma me sentiría como si tuviese superpoderes.

Si de por si en los 90 ya se comenzó una primera informatización a nivel de estructuras, hoy en día informática está en nuestra vida personal con la “Smart Technology”: tenemos SmartPhone, SmartBand, SmartGlass, SmartWatch… el “Quantified Self”, o la medición utilizando medios informáticos de los datos de nuestra vida, está al orden del día: pulso, calorías, gastos, posicionamiento… La cantidad de información que existe sobre ti es tremenda, y la gran pregunta es: ¿sabes cómo se maneja? Esa es la habilidad que te da saber programar: puedes leer el código (si es que puedes acceder a él, cosa que no siempre es legalmente posible) y descubrir qué hace y cómo lo hace. Lo mejor es que podrás tomar decisiones de forma responsable al estar informado, y lo peor será que tus amigos te miren con cara rara cuando te pregunten que por qué no usas tal o cual servicio y respondas “He visto el código…¡Y ES HORRIBLE!”.

En consecuencia, puedes tener la capacidad de mejorarlo y hacerlo menos horrible en tu ámbito personal. Puedes hacer que tus sistemas sean mas de tu gusto a nivel visual, o directamente mas eficientes y seguros (evitando que se envíe datos que no deseas que sean enviados), e incluso llegar a repararlos cuando haya algún problema. Lo mejor de todo es crear nuevos sistemas que manejen una inmensa cantidad de información por ti, ahorrándote horas y horas de trabajo y haciendo tu vida mas fácil, puesto que existen límites para tus posibilidades mas allá de las patentes de software. Esta línea de pensamiento probablemente te llevará a que te guste el ideal del software libre o el código abierto, en el sentido de poder acceder libremente al código fuente y así poder mejorarlo o modificarlo a tu gusto, promoviendo la innovación y securización. A veces te sentirás como un personaje de Shadowrun en la eterna lucha contra las megacorporaciones, pero merece la pena defenderlo.

 The Boston Lockdown: homenaje al difunto juego online “Shadowrun: the Boston Lockdown”, cuyo código está secuestrado por Microsoft. Los runners Thalion and LoRD NiNeR se enfrentan a agentes corporativos y sus robots hackeando su código (y con algún que otro glope).rative agents and bots

La situación de ocultar el funcionamiento de un sistema puede llevar a situaciones absurdas, como las que ese han dado con los «electrodomésticos inteligentes». Si, este concepto existe: hay lavadoras que se conectan al wifi de tu casa para enviarte una notificación al móvil cuando van a acabar, frigoríficos que cuando detectan que te falta algo lo piden directamente al supermercado para que te lo manden a casa. La necesidad de estos sistemas es discutible (mi objeto “inteligente” absurdo preferido es una dispensadora de comida para gatos que se abre cuando le envías un tweet con mención a su cuenta), pero existir, existen. Ahora imagina que el sistema está mal programado y lleva una “ruleta rusa de código” dentro, similar a esto:

int min = 1;
int max= 6;
int value = (Math.random()*(max-min))+min;
if (value == min){
    die();
}else{
    //your code goes here
}

En este caso muy simplificado se simularía que si tiras un dado de 6 caras (los sistemas informáticos no tienen capacidad de aleatoriedad, generalmente usan una de las últimas cifras de la hora del reloj del sistema para seleccionar el “valor aleatorio”), y sale un valor del 2 al 6, todo funcionará correctamente, pero si sale un 1 el código “se suicida”. Esto podría provocar tontamente obsolescencia programada en el peor de los sentidos del término, y si fuese el frigorífico inteligente que mencioné antes, estaría pidiendo que te trajesen tomates hasta el día del juicio final, cosa que igual no es buena para tu cartera. Arreglarlo sería tan simple como todo ese eliminar todo lo que rodea el "your code goes here", ganando eficiencia (son 7 líneas menos a ejecutar) y seguridad, pero si fuese código privativo técnicamente no puedes (o mas bien debes) hacerlo.

Esta situación es un atraso (o si piensas mal, un negocio muy retorcido), y por eso siempre defenderé que los sistemas que no ocultan lo que llevan debajo, permitiendo su revisión y mejora. Esto no significa que el creador pierda el control, puesto que existen licencias creative commons que se ajustan correctamente a cada modelo de negocio, respetando el derecho de autoría, remuneración económica y obras derivadas. Solo hay que elegir la adecuada y problema resuelto. Hacer una modificación o hack no significa intrínsecamente hacer algo dañino, sino hacer una modificación, que puede arreglar muchos problemas. Eso sí, hay que recordar que las claves de securización nunca se comparten.