¿Cómo continúan desarrollándose los ingenieros localmente a medida que la pila crece en su producto?

Como desarrollador de IBM, tengo algo de experiencia con productos de pila bastante grandes. Creo que la clave para una productividad exitosa del desarrollador es doble.

Componente
Especialmente en un producto grande, mantener una separación limpia de componentes en el producto puede ayudar con la productividad del desarrollador. Por ejemplo, cada parte de un sistema grande debe poder entenderse y desarrollarse por sí mismo. Es posible que no proporcione mucho valor para el usuario final por sí solo, pero cada componente debe tener un límite API limpio y las interacciones entre los componentes deben ser comprensibles (e idealmente probadas automáticamente). Suponiendo que el producto grande está hecho de muchas partes bien definidas, es fácil para un desarrollador mejorar una parte completamente local de su máquina. Un buen conjunto de pruebas automatizadas para cada componente garantizará que los cambios realizados de forma aislada no rompan todo el producto.

Automatización DevOps
La componente en sí misma es realmente la respuesta a su pregunta, pero sin una buena automatización de prueba no puede brindarle toda la confianza que necesita para realizar cambios en cada componente de forma independiente. Cuando se trata de ver el impacto de uno de los cambios en un producto grande, los avances recientes de la automatización de implementación (avanzado por la tendencia DevOps) pueden facilitarlo. Si un producto grande adopta la práctica de implementar todo el sistema desde la automatización y un conjunto de componentes, entonces no es un gran salto realizar un cambio en un solo componente e implementar una versión personalizada de todo el producto con solo su solución. Esto no es práctico para un desarrollo rápido, pero es un gran control de cordura antes de compartir sus cambios con el equipo.

Desafortunadamente, el desarrollo de software a gran escala es difícil. Para mantener un sistema grande estable y ágil, es aconsejable invertir en cosas como muy buena automatización de pruebas, automatización de implementación, contratos API.