El Estudio y la Fábrica
¿Sabes qué es una fábrica de software? ¿Y un estudio? ¿Hay alguna diferencia? ¿Es una moda?
Las repercusiones de las modas son enormes, y el software no es una excepción.
Por alguna razón en desarrollo de software siempre hay que establecer comparaciones o analogías con otros sectores en los que se trabaje con elementos tangibles. Supongo que es debido a la dificultad que todavía tenemos para pensar sólo en materia intelectual, de la que el software, por cierto, es un gran ejemplo.
De este modo, los que trabajamos en desarrollo de software hemos tenido que soportar cómo se comparaba con la construcción de edificios, de puentes, de casetas de perro, pirámides, con escribir libros, con la medicina, con casi todo lo comparable.
Pero lo que ahora está de moda son las fábricas. Parece ser que esto viene de la necesidad incontenible de ciertas capas directivas de pensar en que el software se produzca en serie, como si fueran tornillos, puertas o … pastillas de freno.
No hay nada que alegre más la mañana a un directivo/gerente medio, que alguien le vuelva a contar la milonga de que hay una nueva herramienta que genera código sola, casi sin darle de comer ni nada, que aumenta la productividad hasta límites nunca vistos. Todas las empresas que no estén usando esa nueva herramienta o tecnología XXX están en la edad de piedra, y sin embargo usándola se avanza, así, de golpe, tres o cuatro edades.
Por supuesto citar la famosa frase de no hay balas de plata (Frederick P. Brooks), no servirá de nada.
Pero si la paranoia de las herramientas automáticas no es suficiente, puede pensar en la maravilla de la construcción en serie. ¡Está clarísimo!, ¡estamos haciendo el idiota! Hace años que los japoneses comenzaron a optimizar sus líneas de producción de coches, y con eso cambiaron el mundo… ¡hagamos lo mismo con el software!
Tengo que reconocer que he leído poco sobre software factories, y que el libro de Greenfield, Short et al, titulado “Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools” es lo que más me ha gustado. Un libro un poco espeso, pero muy interesante. Especialmente cuando habla de cómo cambiar hacia economías de alcance y de escala, cómo reutilizar componentes, y cómo una software factory debe constar de dos grupos: uno de gente diseñando componentes y otro ensamblando aplicaciones mediante esos componentes y DSLs o Domain Specific Languages.
Así que cuando comencé a oír hablar de fábricas de software en mi entorno me quedé sorprendidísimo de que semejante nivel se hubiera alcanzado ya… Claro que poco duró mi impresión al saber que, a la mayoría de ellas, lo de los DSL les sonaba a chino, y lo de los componentes y la reutilización a lo mismo. Greenfield y Short dicen que una fábrica de software sólo existe cuando se pueden definir product families con características comunes, de modo que la fábrica se especializa sólo en el desarrollo de esos productos.
Es decir, que según su definición si no hay un grupo común de componentes, un estado muy avanzado de reutilización y definición de aplicaciones, es imposible que exista una software factory. Vamos, que la mayoría de empresas que se dedican a desarrollo tanto de productos como de proyectos no cumplen con esas características ni de lejos.
Entonces, ¿qué son las software factories que nos rodean? Muy simple: al manager medio le preocupa muy poco conceptos tan de ingeniería como los descritos en el libro mencionado, y definen fábrica de software como un montón de gente trabajando junta en muchas mesas con muchos ordenadores. Ni reutilización, ni DSLs, ni componentes, ni gaitas. Como mucho se pretende que el análisis entre por un lado y el código sale por otro. Que ya es bastante.
El nombre, fábrica de software, viene dado más por la intención de que efectivamente se fabrique el software, que porque se haya dado un paso sustancial hacia la industrialización del desarrollo.
Y resulta paradójico que en la Sociedad de la Informática y del bienestar se quiera recuperar con tanto empeño el término fábrica.
Una pregunta simple, olvídese del software, de la informática y de todo lo que se ha dicho hasta ahora y responda: ¿dónde prefiere trabajar, en una fábrica o en un estudio?
La respuesta parece sencilla, no obstante nos empeñamos en continuar industrializando algo que hasta ahora se ha resistido con uñas y dientes.
Y de este modo la tendencia generalizada no es la de tener mejores profesionales, trabajando en mejores condiciones, en ambientes agradables, con la mejor formación posible y que puedan disfrutar de su trabajo, sino colocar más y más gente junta, y además explotar el modelo de “caja negra” en la que por un lado entran especificaciones y por otro sale software, deshumanizando totalmente el proceso.
¿Tienen éxito las compañías que trabajan así? Indudablemente sí. No es difícil pensar en la consultora YYY en la que “o asciendes o te echan”, en la que “picar código es poco importante”, y en la que todo el software es desarrollado por novatos mal pagados que trabajan excesivas horas. ¿Es un buen modelo de negocio? Sí, lo es, esas empresas ganan mucho dinero, pero a base de ser excelentes en ventas, excelentes en manejar al cliente, excelentes en hacer pagar por corregir los errores que ellos mismos crean. Excelentes. Así cuando en la típica charla alguien vuelve a decir “el 80% de los proyectos se entregan tarde”, alguien debería añadir “haciendo ganar miles de millones a las empresas que no saben hacer software, pero saben ganar dinero”.
No obstante sí que hay algunas compañías en las que sí se valora el conocimiento, la profesionalidad, el entorno de trabajo. ¿Ganan dinero? Curiosamente algunas de las empresas que valoran al máximo sus equipos de ingeniería de software sí que son líderes en el mercado, y seguro que a alguno le suenan ciertos nombres, y que de hecho hoy mismo ha usado alguno de sus productos, ya sea instalados directamente en su ordenador, a través de la web, etc, etc.
Y es que en la época en la que cada vez se nombran más “arquitectos de software” (estoy totalmente en contra de esta denominación, ya sea aplicada con criterio, ver www.wwisa.org, o simplemente porque suena bien), se pretende que haya más fábricas. ¿Trabajan los arquitectos en fábricas o en estudios? Claro, es que los arquitectos tienen un trabajo cien por cien creativo, intelectual, nada de manufactura o de construcción, ¿verdad?
Se dice que el toro, de los cuernos al rabo, es todo toro, ¿no?. Pues bien, el software, del análisis a las pruebas es… ¡todo diseño! Y no es algo que lleve poco tiempo diciéndose, de hecho el famoso artículo de Jack W. Reeves ha servido de punto de partida, entre otros, para las hoy conocidas metodologías ágiles.
Y para diseñar, que yo sepa, una fábrica no parece tener las connotaciones más apropiadas.
Sin duda para quienes crean en la “programación automática” (seguid en busca del grial hasta que os canséis), para los que quieran YA que el software sea algo que se produzca en cadena, para quienes quieren gente reemplazable y barata, el artículo de Reeves es una aberración.
Desgraciadamente para quienes nos dedicamos a desarrollar software, Reeves describe con precisión la realidad.
Y los estudios (ver, por ejemplo, Peopleware de Tom Demarco et al) parecen coincidir en que gente bien formada y motivada puede tener grados de productividad entre 10 y 50 veces superiores al programador medio, que por cierto, no se lee ni un libro al año. ¿No sería más eficiente invertir en eso? ¿En mejorar los equipos, sus entornos de trabajo, en crear auténtica compenetración entre los miembros del grupo? Las cifras dicen que sí, pero la moda que no.
Así que nada, veamos cómo de buenas son las fábricas, y si por lo que sea el nombre cae en desgracia (las empresas seguirán, con el mismo éxito que antes de ser factories, a menos que realmente inviertan en algún tipo de cambio, cosa que muchas hacen: CMMi, mejores herramientas, formación, etc, etc.), quizá podamos crear “grandes superficies de software”, “centros comerciales de software”, “talleres de software”, “charcuterías de software”, “obras de software”…
En el sector de los videojuegos, uno de los más interesantes a nivel económico en los últimos años, sí que hay muchas empresas de éxito que parecen comprender la necesidad de que los miembros de las empresas trabajen como verdaderos equipos, de crear ambientes de trabajo amplios y cómodos, de incentivar convenientemente a los empleados para lograr la máxima implicación. Muchos de ellos, en sus nombres, incluyen la palabra estudio.

(3 votos, media: 4.67 sobre 5)












Leave a Reply
You must be logged in to post a comment.