Código abierto: innovando y facilitando la innovación

Interesante artículo en el que se afirma que el open source esta permitiendo una comoditización del software, lo que a su vez está trayendo una auténtica economía de la información. El código open source cumple un papel similar a las tuercas, los tornillos y los destornilladores en la industria hace cien años, y si estos hubieran estado sujetos a derechos de propiedad no habríamos llegado a construir aviones a reacción.

“Open source has gone mainstream … open source is the default choice of the next generation IT architecture,” he said, adding that if proprietary companies were able to patent nuts and bolts or own the copyrights to a screwdriver, jet engines might never have existed.

El mundo open source lleva muchos años “estandarizando” productos para los que inicialmente solo había una versión propietaria (primero fué Windows, luego llegó Linux) pero a la vez los mejoran o terminan ofreciendo mejores alternativas. Hoy es evidente que en muchos ámbitos están por delante de cualquier solución surgida de empresas tradicionales.

Las empresas de la industria del software tradicional son parte de la innovación, pero solo una parte y cada vez una menos significativa. Mantenerse por delante es cada día mas díficil. Empresas como Microsoft, siguiendo la estela de Apple, hacen del hardware parte de su innovación: su producto es hardware + software. Así consiguen mantener durante mas tiempo la distancia respecto a otras empresas tradicionales o al mundo open source. Pero esa distancia y ese tiempo cada son menores.

Programar es una habilidad básica

Programar es construir algo diciéndole a una máquina de forma precisa qué es lo que quieres, con unas herramientas que nos obligan a cumplir unas reglas muy claras. Esto no es algo que hagan solo los programadores. Aunque pueda resultar chocante, cualquiera que haya modificado fotos con photoshop ha programado, también cualquiera que haya creado páginas web con editores sencillos, que haya metido una animación en una presentación o que haya creado un video casero definiendo tiempos y transiciones.

En programación se suele hablar de programación imperativa y de programación declarativa. En el primer tipo se usan lenguajes con los que se establecen los pasos necesarios para llevar a cabo una tarea. En la programación declarativa se define lo que se va a crear haciendo uso de definiciones, de condiciones y otras características. El primero es útil en la definición de un trabajo a realizar, el segundo en la definición de una entidad que va a cumplir una función. Cuando pensamos en programación solemos pensar en programación imperativa. Pero cuando trabajamos con una hoja de cálculo o creamos una página web hacemos uso de programación declarativa.

Los ordenadores personales, móviles, tabletas y todo lo que está por venir nos ofrecen cada vez mas posibilidades, multiplican nuestra capacidad de hacer cosas. Pasado mañana se valorará a la gente aún mas que hoy en día por su capacidad para manejar herramientas. ¿Pero que es en realidad manejar una herramienta? Usar una herramienta de forma eficaz es comunicarnos con ella haciendo uso de un lenguaje. Pasado mañana se valorará a la gente por su habilidad para hablar y aprender muchos lenguajes, muchos idiomas. De esto es de lo que hablamos cuando hablamos de alfabetismo digital.