Industrialización del Software, mi visión.

Llevo bastantes entradas hablando de la industrialización del desarrollo de software, pero en ninguna de ellas he dicho que es para mí, aunque algo ya se habrá ido adivinando, sobre todo cuando lo contrapongo a la artesanía.

Cuando estás en un proyecto pequeño, de una o dos personas, con unos requisitos bajos, normalmente se funciona como un artesano. Es decir, te ocupas de todo y es tu valía personal y tu calidad la que se ve reflejado en el producto que vendes. Esto es así tanto si haces una figurita como si haces un programa.

Cuando los proyectos son más grandes, de decenas de personas, esta forma de trabajar en la que cada uno hace las cosas según su criterio ya no sirve. Básicamente porque tu trabajo es una parte de un todo y el resultado final ya no va a depender tanto de tu valía personal y tu calidad, como cuando trabajas como un artesano, sino que aparte de esto va a depender de lo bien afinado que esté todo el equipo.

He comprobado en mis propias carnes que por muy bueno que tengas a uno en un equipo, si el resto no está a la altura el proyecto no marcha bien. Es como si una maquinaria de un reloj tuvieses una pieza muy buena, pero el resto no. El reloj no marchará bien. Tampoco lo hará si las piezas son buenas, pero no están bien ajustadas. También se suele utilizar el símil de la orquesta.

Por eso habréis podido comprobar que la mayor parte de las entradas referidas a la industrialización del desarrollo del software están dedicadas a las personas. Para mi es lo más importante, el poner más o menos herramientas lo único que hace es facilitar o mecanizar las cosas.

Para mi la industrialización del desarrollo de software es la definición de que es lo que pasa, es decir los procedimientos y herramientas asociadas, desde que una petición llega del cliente hasta que esa petición se pone en producción (o se descarta).

Entran multitud de elementos, desde la captura de requisitos, la asignación de tareas, planificación, desarrollo, verificación, traspaso, etc. Va muy en la línea de lo que serían la ISO 9000 y el CMMI, por citar algunas normativas.

Hay gente que considera la industrialización del desarrollo de software como la aplicación de herramientas estilo MDA (model drive arquitecture). Para mi esto no es industrialización del desarrollo, es automatización del desarrollo. Es decir es tener la super churrera, que te genera, ya no un trozo de programa, sino el programa completo. No digo que la automatización sea algo malo, solo que para mi son conceptos diferentes.