Existe una disciplina que se denomina Ingeniería del Software, y se estudia en las universidades. En Estados Unidos muchos profesionales de la informática se refieren a sí mismos como "ingenieros de software". Pero lo cierto es que equiparar al desarrollo de software con una ingeniería es bastante pretencioso.
El proceso de creación de software es, hoy por hoy, más parecido a una artesanía. En una ingeniería, cuando se construye una máquina o una estructura, existen materiales normalizados, procedimientos normalizados, cálculos y estimaciones normalizadas. Se puede decir, por ejemplo, "los adoquines cumplirán la norma UNE-EN 1338", y cualquier profesional sabrá qué características exactas tendrán esos adoquines.
Resignarse a la artesanía del software es poco deseable, y se han hecho intentos de progresar creando metodologías de programación, lenguajes que facilitaran la reutilización de componentes e incluso intentando normalizar los lenguajes de programación. Lamentablemente, con muy poco éxito.
Y aquí el software libre puede resultar providencial. Por un lado, la disponibilidad de millones de líneas de código, junto a la libertad para usarlas y modificarlas, significa que unartesano del softwarepuede ver el trabajo de los mejores maestros del mundo, aprender e incluso usarlo directamente.
Pero, lo que es más importante, si hay ya bloques complejos que funcionan razonablemente bien, y son muy baratos o incluso gratuitos, no hay motivos para volver a desarrollar esos bloques, o comprarlos a un tercero. Las librerías básicas de Linux están disponibles para todos, todas sus especificaciones son públicas, y cualquiera puede usarlas para desarrollar software.
Incluso cada vez es más frecuente que piezas como el sistema operativo, el gestor de bases de datos o el servidor de aplicaciones sean software libre. Linux, MySQL, Tomcat y otros productos similares están ya soportando aplicaciones corporativas complejas en compañías de todo el mundo. En este proceso, se están convirtiendo encommodities, en elementos estándar que se dan por supuestos y que se utilizan como piezas de construcción para construir sistemas más complejos.
Tal vez el software libre se convierta un día en la piedra filosofal que convierta la artesanía de software en verdadera ingeniería.