¿Cómo Hacer Crecer un Sistema?
La semilla de un árbol contiene la idea del adulto pero no realiza completamente la forma y potencia del adulto. El embrión crece. Se vuelve más grande. Se parece más al adulto y tiene más usos. Eventualmente da fruto. Más tarde, muere y su cuerpo alimenta a otros organismos.
Tenemos el lujo de tratar el software de esa manera. Un puente no es así; nunca hay un puente bebé, sino simplemente un puente sin terminar. Los puentes son mucho más simples que el software.
Es bueno pensar en el software como algo que crece, porque nos permite hacer un progreso útil antes de tener una imagen mental perfecta. Podemos obtener retroalimentación de los usuarios y usarla para corregir el crecimiento. Podar las ramas débiles es saludable.
El programador debe diseñar un sistema terminado que se pueda entregar y usar. Pero el programador avanzado debe hacer más. Debes diseñar un camino de crecimiento que termine en el sistema terminado. Es tu trabajo tomar un germen de una idea y construir un camino que lo lleve de la manera más suave posible a un artefacto útil.
Para hacer esto, debes visualizar el resultado final y comunicarlo de una manera que el equipo de ingeniería pueda emocionarse. Pero también debes comunicarles un camino que vaya desde donde están ahora hasta donde quieren estar sin grandes saltos. El árbol debe permanecer vivo todo el tiempo; no puede estar muerto en un momento y resucitar más tarde.
Este enfoque se captura en el desarrollo en espiral. Se utilizan hitos que nunca están demasiado lejos para marcar el progreso a lo largo del camino. En el entorno ultra competitivo de los negocios, es mejor si los hitos se pueden lanzar y ganar dinero lo antes posible, incluso si están lejos de un punto final bien diseñado. Uno de los trabajos del programador es equilibrar la recompensa inmediata contra la recompensa futura eligiendo sabiamente un camino de crecimiento expresado en hitos.
El programador avanzado tiene la triple responsabilidad de hacer crecer el software, los equipos y las personas.
Creo que subestimas la importancia aquí. No se trata solo de sistemas, sino también de algoritmos, interfaces de usuario, modelos de datos, y así sucesivamente. Es absolutamente vital tener un progreso medible hacia objetivos intermedios mientras trabajas en un sistema grande. Nada es tan malo como el horror especial de llegar al final y descubrir que todo simplemente no va a funcionar (mira el reciente desastre del Sistema de Noticias para Votantes). Incluso iría más allá y lo declararía como una ley de la naturaleza: ningún sistema grande y complejo puede implementarse desde cero, solo puede evolucionar de un sistema simple a un sistema complejo en una serie de pasos intencionales.
A lo cual solo se puede responder Fiat lux (hágase la luz).
Siguiente ¿Cómo Comunicarse Bien?
Last updated