Jardinería del software

No construimos programas "y ya está". Tenemos que regar las plantas y evitar que se las coman las plagas.

Hace tiempo leí el post de Chris Aitchison sobre el concepto de la Jardinería del software, y cada día me parece más acertado.

A día de hoy no hacemos programas acotados y bien definidos, hacemos sistemas para ofrecer servicios que deben ser transformados, actualizados y mantenidos a lo largo del tiempo. E incluso puede darse el caso en que lo que estemos creando después acabe siendo algo completamente diferente porque el cliente decide pivotar a medio camino. A esto le sumamos la falta de regulación de la formación académica requerida, que además está cada vez más devaluada por estar alejada de la realidad, y el hecho de que se menosprecie el conocimiento adquirido por experiencia en un proyecto: si ahy rotación de toda tu plantilla, hay un conocimiento (aunque sólo sea por conocer la historia de las decisiones tomadas) que se pierde, lo que lleva a repetir errores.

En el 2018, definitivamente, el trabajo en el sector de la informática ya no es cómo construir edificios, es como cultivar y mantener jardines.

Sin más, os dejo con la traducción al castellano:

¡No te dedicas a la Ingeniería del Software!

No te dedicas a la ingeniería del Software. No construyes rascacielos. No construyes puentes.

Cultivas jardines. Eres un Jardinero de Software.

¿Planificas tus jardines hasta el detalle de saber dónde estará cada hoja antes de plantar una sola semilla? ¿La gente espera estimaciones (o quizás en tu empresa sean compromisos) de exactamente cuántas flores florecerán al cabo de un año? ¿Recibes un bono de productividad por ello? Cosas que serían completamente razonables de planificar para un rascacielos parecen un tanto ridículas cuando hablamos de un jardín.

Probablemente tengas una idea definida sobre el aspecto tu jardín con vista a una semana. Puede que incluso tengas una idea aproximada de cómo esperas que sea tras un año. Pero no tienes ni idea de dónde estará cada rama, tallo, hoja o flor estará tras un año, y si dices que es así, estás únicamente intentando adivinarlo.

Si estuvieses construyendo un puente o un rascacielos, y me dijeses antes de empezar, que sabes exactamente el aspecto que tendrá al terminarse, te creería. Si me dijeses que sabes con un inmenso grado de precisión cuánto tardará en «estar terminado», te creería de nuevo. Así es cómo funciona la ingeniería. Dime lo mismo sobre tu jardín y diré que ni de broma. Dime que conseguirás que crezca más rápido contratando mas jardineros y me reiré de tí.

¿Así que, por qué fracasan tantos jardines, mientras que los rascacielos tienen éxito? Con unas pocas excepciones, la técnica para construir un edificio es similar si lo construyes en Europa o en Singapur. Los jardines no funcionan así. cada jardín es diferente porque el entorno en el que está es diferente. Incluso algunos jardines cercanos en localización a otros pueden tener un suelo muy diferente. Por ese motivo quien hace la oferta más baja probablemente podría construir el mismo puente que quien hace la oferta más alta, pero tu empresa no puede cultivar el calibre de los jardines que Google puede crear.

¿Recuerdas esa ocasión en la que alguien de tu empresa empleó sin éxito metodología de jardinería Agile, y fue diciendo que esta era una mierda que no funcionaba? Bueno, pues con la mierda se abonan jardines, pero en ese caso no fue la suficiente para salvar su jardín. Su jardín estaba probablemente muerto antes de empezar, una víctima del clima de tu empresa. ¿Intentabas crear una jungla en un desierto? No puedes plantar las mismas plantas que Facebook, Flickr o Twitter y esperar que arraiguen sin importar la calidad de los jardineros o el clima de tu empresa.

A diferencia de un rascacielos, en tu jardín saldrán malas hierbas. Nunca estará “terminado”. Simplemente porque se deje de invertir dinero en él no significa que esté terminado. Si de limpiar las malas hierbas, llegará el momento en que estas asfixiarán el jardín, y será mas sencillo eliminar y re-plantar que podar. El entorno que rodea a tu jardín también será cambiante, y un jardín descuidado será mas y mas difícil de mantener vivo.

En la mayoría de los países, los Ingenieros necesitan una licencia para construir un puente. Los jardineros no tienen tal control de calidad gubernamental. Desgraciadamente, la calidad de los jardineros va a tener una fuerte influencia en las probabilidades de éxito de tu jardín por encima de otros factores, así que deberías ser bueno distinguiendo el trigo de la cebada. Solo un jardinero experimentado puede reconocer a otro buen jardinero cuando lo ve. Alguien que únicamente haya gestionado jardines no tendrá ni idea de lo que están buscando (a pesar de que no será consciente de ello). Así que si no eres un jardinero, pero necesitas buenos jardineros, encuentra deprisa un jardinero experimentado que vete candidatos. No se puede enseñar jardinería en una clase, así que recuerda enfocarte en los jardines que tus candidatos han cultivado antes, en vez de cuánta teoría de la jardinería estudiaron en la escuela (que, de todas maneras, casi nunca es aplicable al clima en el que estás).

La metáfora de la Ingeniería tuvo su época, y quizás fue acertada, pero ahora solo sirve para que personas no técnicas tengan expectativas no realistas sobre cómo se construye el software.

Soy un Jardinero del Software. Y tú también.

– Chris Aitchison