Cómo La Burocracia y los Equipos de Soporte Crearon la Tecnología que más o menos Funciona Casi Todo El Tiempo
Fue Peter Drucker el primero en darse cuenta de que una empresa sólo tiene dos funciones básicas: marketing e innovación. Marketing tiene relación con lo concreto, con el momento presente o el futuro inmediato; es el conjunto de promesas sobre el ahora que convierten a alguien en cliente. Innovación tiene relación con lo abstracto, con el momento futuro y el largo plazo; es el conjunto de estrategias que pueden acabar materializándose en el mañana.
Existe por tanto un conflicto permanente dentro de cualquier empresa, una lucha de poder que Clayton Christensen ya había empezado a desmenuzar con la idea de "disrupción". Según Christensen, en general, una empresa que atiende fielmente a lo que sus clientes le piden está en una posición de fuerza, pero es este énfasis en el momento presente lo que hace que una alternativa peor, pero con mayor potencial, acabe por desbancarla.
El iPhone es el ejemplo paradigmático: no era un móvil mejor, sino un iPod que permitía hacer llamadas y conectarse a Internet, y por eso nadie lo vio venir.
Funcionalidad frente a Herramienta
En software, esta tensión entre Marketing e Innovación se manifiesta en las funcionalidades que se le ofrecen a los usuarios. Dado que un programa informático es, al mismo tiempo, la funcionalidad que ve el usuario, y las herramientas que utiliza el desarrollador para implementarla, el dilema se reduce a decidir cuál de las dos tiene prioridad. El trabajo de Marketing es más fácil cuando se desarrollan funcionalidades para el momento presente; el trabajo de Innovación consiste en desarrollar las herramientas que faciliten la creación de las funcionalidades del futuro.
Un producto enfocado en lanzar funcionalidades nuevas acaba volviéndose inestable, frágil, y necesitado de un mayor número de gente para ser gestionado. Es la consecuencia directa de utilizar herramientas aparentemente más baratas, que acaban por canibalizar el tiempo y los recursos de una empresa en tareas de poco valor añadido.
Un producto enfocado en la calidad del código sólo es un monumento al ego de sus desarrolladores. Es un escenario algo habitual en empresas tecnológicas de capital riesgo, en las cuales alcanzar una cifra sostenible de ingresos con las que mantener el negocio a flote no suele tener una alta prioridad al principio.
Deuda técnica
En este difícil equilibrio entre un producto que no mejora, y un producto nadie usa, los desarrolladores de software usan el término de "deuda técnica" para hablar de la dificultad de predecir cuáles son las herramientas que necesitan construir para implementar funcionalidades nuevas.
Esta dificultad no es sólo teórica: conforme el proyecto avanza, lo que ya se ha implementado ha de adaptarse a un mejor conocimiento del problema que se está tratando de resolver. Corregir, adaptar, refinar, e incluso prevenir errores del pasado son tareas que ganan importancia conforme el producto se vuelve más complejo.
La deuda técnica es la codificación de la tarea de gestionar y minimizar la complejidad de un producto tecnológico.
Como en la construcción de edificios, un producto tecnológico requiere limpieza, organización, reparaciones y reconstrucción, de tal manera que permita ser adaptado a nuevos usos o a herrramientas más modernas. E igual que ocurre en la construcción, el mantenimiento suele dejarse de lado.
La trampa del mantenimiento
Al menos en teoría, realizar tareas de mantenimiento es sencillo: requiere un conocimiento ya adquirido, tratar con componentes ya conocidos y procesos ya implementados. En la práctica, la dificultad de mantener software es la misma que la que mantener una dieta sana: no apela a un impulso tan humano como la novedad, y exige pensar a largo plazo.
Mantenimiento suele volverse prioritario únicamente cuando algo se rompe.
La trampa es la siguiente: se construye un producto nuevo; conforme pasa el tiempo, se vuelve más complejo y frágil; no le damos el mimo que necesita, porque es algo que no justifica dejar de prestar atención al día a día; eventualmente, algo crítico se rompe y precipita la decisión de construir un producto nuevo.
En lugar de reparar aquello que está roto, buscamos nuevas alternativas después de haber aguantado trabajar con productos demasiado complejos durante tanto tiempo. Nuestra relación con la tecnología, a menudo, es una suerte de enfermedad autoinmune.
La intersección entre lo urgente y lo importante
¿Cómo puede una empresa salir de ese círculo vicioso? En primer lugar, entendiendo que funcionalidad y mantenimiento son conceptos análogos: mientras sea necesario refinar una funcionalidad, ésta no puede darse por finalizada.
En segundo lugar, observando que la deuda técnica es a menudo resultado de un conocimiento incompleto del problema, y por tanto poniendo en manos del equipo de desarrollo toda la información que sea posible obtener.
Y en tercer lugar, definiendo con precisión y coherencia el problema en base a esa información.
En la intersección entre el desarrollo de la funcionalidad del presente y las herramientas para construir las del mañana está la verificación de que cambios en la funcionalidad cumplen con la definición actual del problema a resolver.
Implícito en esta idea está el concepto de experimentación: la capacidad de encontrar la solución óptima para un problema está fuertemente ligada a la capacidad de probar soluciones alternativas, mediante cambios con un nivel aceptable de riesgo y una mentalidad de "paso a paso".
El mito de Sísifo
En la mitología griega, Sísifo es castigado por los dioses a subir una piedra de gran tamaño a lo alto de una colina, solo para verla caer y volver a subirla de nuevo por toda la eternidad. Es el arquetipo de aquellas personas que, de manera invisible, se dedican a mantener la infraestructura de todo lo que nos rodea, luchando contra el inevitable desgaste.
No está todo perdido. En La Filosofía del Pensamiento Recursivo, Manfred Kopfer sugiere que, para escapar de su castigo, Sísifo debe rascar la cima cada vez que la alcanza, llevándose un pedazo de la montaña colina abajo hasta la ladera. Sólo así será capaz de eventualmente limar la altura que ha de subir hasta anularla, momento en el cual su castigo habrá terminado.
Esta idea me sugiere que, después de todo, Sísifo, y con él todos aquellos que se dedican a cuidar de lo que ya funciona, no están siendo castigados, sino puestos a prueba.
Tú, que eres responsable de hacer que nada se mueva, ¿puedes mover una montaña? Tú, que eres responsable de que nada cambie, ¿puedes poner el tiempo a tu favor?
Entérate de las últimas novedades un poco más rápido
Escribo en torno a una vez por semana, sobre el impacto de la programación en las áreas no tecnológicas de las empresas. Es gratis.