TExiste una aparente paradoja relacionada con el software que usamos como programadores. Técnicamente todo programador podría crear desde cero todo el software que necesita: pero hoy en día es prácticamente imposible crear todo ese software. Tendríamos que crear los sistemas operativos, lenguajes de programación, compiladores, librerías: esto no es posible, por ser demasiado tiempo de desarrollo.
Sin embargo, la opción opuesta a esta tampoco es aconsejable. Tratar de usar todo el software posible, creado por terceras personas, tampoco es una buena opción. Primero, usar software de terceros puede provocar introducir en tu sistema bugs o fallos de seguridad, o incluso explotación de datos no consentida: especialmente si el software es propietario, en vez de “open source”. Además usar software de terceros te impide aprender a programar: hoy en día la programación se ha convertido en una mera “búsqueda por internet”.
Hay muchas cosas que como desarrolladores podríamos hacer, pero como ingenieros no debemos. El motivo principal de esta criba es el tiempo. No podemos crear todo lo que necesitamos: hay software muy complejo, como sistemas operativos y bases de datos, que debemos usar lo que ya hay construido: construirlos desde cero sería un trabajo enorme.
Cribar hacia abajo es sencillo, hay mucho software de base que debe ser reutilizado. ¿Pero hacia arriba, cuál es la criba? ¿Cómo diferenciar aquellas librerías que no deben usarse?
Estos son algunos criterios que deben usarse: