Reflexión: Analogías, experiencia directa y desarrollo de software

cabras

El que Henry Ford tomase la idea de la cadena de montaje de los mataderos, no es sino otra prueba más de que todas o casi todas las ideas “nuevas”, suelen ser aplicaciones de ideas existentes en otros ámbitos, ideas que tienen su utilidad fuera de su contexto normal, y que personas con experiencia y conocimientos multidisciplinares son capaces de identificar y adaptar a un nuevo contexto (otra cosa es que salga bien o mal, claro).

En las filosofías, métodos o sistemas ágiles tipo Lean, Scrum o Kanban, el concepto de eliminar el desperdicio, el tratar de ser más eficaces mediante la eficiencia general y no de una sola parte del sistema, el tratar de minimizar el trabajo inútil y entregar primero lo importante, y también el proceso de mejora continua y flujo (tipo Kaizen) me recuerda más a la jardinería y otros ecosistemas orgánicos que a las fábricas y cadenas de montaje a las que habitualmente se comparan los equipos y empresas de desarrollo de software.

Las similitudes entre lo orgánico y el desarrollo de software son múltiples: en el campo al igual que en el trabajo en equipo, se parte de un conjunto de seres vivos confinados en un área (jardín, huerto, oficina o negocio) y se busca obtener ciertos resultados (estéticos o económicos). Para obtener estos resultados se requiere tiempo, atención y trabajo constante además de cierta dirección que se produce de forma evidente (sujeciones, vallas, tableros con post-its, riego constante, daily scrums…). Y dependiendo del tipo de resultados que queramos (tomates ecológicos o a granel, aceitunas o cebollas) y de los medios que dispongamos (hectáreas, agua, mano de obra), dispondremos todo de una forma concreta (tipo de cultivo, riego, etc.).

Otra similitudes quizá menos obvias son que, para que todo funcione bien se requiere de mucho conocimiento del (eco) sistema, experiencia real (el agricultor de toda la vida o el desarrollador veterano) y de la naturaleza (humana, vegetal o del negocio). También veo similitudes en la necesidad de proteger lo que crece, la necesidad de esperar, la problemática de acelerar el desarrollo (añadir semillas o agua a un cultivo retrasado tiene poco sentido y puede ser dañino), lo esencial que es plantar las semillas correctas (definición del proyecto), la calidad como producto de todos los factores a lo largo del tiempo y la mejora de los cultivos mediante selección e hibridación (nuevos compañeros, nuevas herramientas…).

En todo caso, las similitudes no son más que eso, cosas que se parecen. Que algo funcione en un ámbito no quiere decir que sea directamente aplicable a otro, pero creo firmemente que intentar ver el desarrollo como algo más orgánico y pensar en analogías biológicas en lugar de “mecánicas” puede reportar beneficios a la hora de abordar los problemas de este negocio. Y creo también que para mejorar en cualquier entorno se requiere de un pensamiento multidisciplinar, es decir, que debemos saber cosas que no sean de nuestro ámbito de trabajo normal y nos viene bien tener experiencia directa de muchos otros campos. Quién sabe, quizá por eso en muchos equipos actuales se indica la necesidad de que el equipo de desarrollo se dedique regularmente a venta y soporte.

Para terminar solo quiero dejar una última reflexión: cuando veo desarrolladores que se enfrascan exclusivamente en su tecnología de trabajo actual y por falta de tiempo o curiosidad, saben poco o nada de otros campos, herramientas y tecnologías, pienso que es poco probable que sean capaces de aportar ideas nuevas y por lo tanto de evolucionar y mejorar. Y eso es malo para todos.