¿Fábricas software?

Buscando una definición para “fábrica software” encontramos, como suele ser habitual en ingeniería del software, un amplio y heterogéneo conjunto. Ejemplos destacados:

  • Enfoque de desarrollo de aplicaciones en el que confluyen el desarrollo basado en componentes, el desarrollo dirigido por modelos y las líneas de producto software. (Definición de Greenfield y Short (2003), en lo que sería el modelo de fábrica software de Microsoft)
  • Fábrica de Software = X {Soporte de herramientas} (Li et al. (2001), en lo que es el modelo de fábrica de software para organizaciones chinas)

Pero además, y con independencia de las anteriores, en las conversaciones “de la calle” en que sale el término podemos descubrir otro conjunto de definiciones, las que llamamos “de facto”, y que podemos agrupar en las siguientes:

  • “Empresa que crea productos software “comoditizados” (traducción poco lograda que se está introduciendo del término commodity) “ (generalmente esta es la definición que utilizan los que ven a una fábrica de software desde el punto de vista de la producción o del desarrollo)
  • “Empresa de desarrollo de software “llave en mano” o de “proyectos cerrados” (también desde el punto de vista de la producción o del desarrollo, junto con la parte de negocio)
  • “Centro de costes separado y asociado exclusivamente al desarrollo software” (para aquellos quienes lo ven desde el punto de vista financiero)
  • “Escisión del departamento de desarrollo software para crear una empresa cuyo objetivo (línea de negocio) es desarrollar y mantener software” (desde el punto de vista de la localización)
  • “Empresa de desarrollo software en un país lejano u otra región” (también desde la localización, outsourcing – offshoring, nearshoring, etc.)

Además podríamos añadir las históricas, como la de Bemer quien en 1968 afirmaba como “parece que tenemos pocos entornos específicos (instalaciones de fábrica) para la producción económica de programas […] Una fábrica proporciona energía, espacio de trabajo, distribución del trabajo, controles financieros, etc. Por lo que una fábrica de software debería ser un entorno de programación residente en y controlado por un ordenador”.
Y más importante aún. También podríamos hablar de la sensación que de manera general el término produce en ciertos colectivos sociales relacionados con el desarrollo software, en los que se asocia a trabajo poco cualificado, repetitivo, de bajo coste, para productos masivos, etc. Y que refleja los choques entre las diferentes “olas”, la que ve la creación del software como una extensión de los métodos de la revolución industrial, frente a la que lo considera un producto que necesita de métodos de creación totalmente distintos, la que busca la creación repetitiva de productos para mercados de consumo masivo, frente a la que cree que el futuro está en el producto personalizado, en la segmentación del mercado; la que aplica los estilos de dirección típicos de las fábricas industriales en un trabajo en que el talento es determinante y un recurso limitado, etc.
Estas últimas reflexiones, cómo los choques entre la ola industrial y la del conocimiento afectan al desarrollo software, etc., lo dejo para el siguiente post.
Y si alguien ha sufrido de esto último… abierta esta la sección de comentarios, valgan como ejemplo los comentarios al post de primeras fábricas software que aparecieron en barrapunto, bastante ilustrativos.