¿Cómo se evita una situación de ramificación cuando se trabaja con grandes organizaciones?
Trabajamos con varias organizaciones financieras grandes cuyo enfoque es no llevar actualizaciones al software, sino solo parches de seguridad altos / críticos y funcionalidad personalizada. Estas organizaciones solo tomarán parches y versiones personalizadas entre las principales actualizaciones. Las actualizaciones importantes pueden estar separadas por años y conllevar altos costos. Este enfoque hace que (la empresa de software) tenga una rama de nuestro código por cliente principal, lo que conlleva todos los costos e ineficiencias de la ramificación a largo plazo.
Mis preguntas a la comunidad son:
- ¿Ha experimentado enfoques similares de aceptación de actualizaciones por parte de sus clientes?
- ¿Qué sugerencias tiene para ayudar a trabajar con este enfoque?
- ¿Qué sugerencias tiene para ayudar a cambiar los enfoques de las organizaciones para tomar actualizaciones de software?
Respuestas:
Como Michael mencionó, ofrezca una solución estándar basada en versiones / números de lanzamiento, con una vida útil razonablemente larga para su industria (tal vez entrelazada con una o más versiones intermedias de vida útil más corta, si tiene sentido para sus clientes típicos).
Ofrezca a sus clientes la opción de embarcarse en esta ruta de lanzamiento estándar, tal vez con un plazo de migración decente.
Si insisten en una estrategia de soporte de sucursal totalmente personalizada, simplemente cárgueles en consecuencia, para cubrir adecuadamente todos sus costos adicionales por ofrecer dicho soporte totalmente personalizado, solo tiene sentido comercial. Algunos clientes migrarán para reducir sus costos (lo que lo ayudará a reducir la cantidad de sucursales personalizadas), otros no.
La facturación de soporte variable, que crece progresivamente con la antigüedad de las versiones de lanzamiento desde las cuales se originan las sucursales personalizadas, también puede ser un incentivo para que los clientes migren a sucursales más nuevas más rápido, ayudando a cerrar más rápidamente las sucursales personalizadas más antiguas. Esto puede ayudar a reducir la cantidad de sucursales personalizadas por cliente, si tiene clientes que ejecutan simultáneamente varias versiones de su software.
Asegúrese de no caer en la trampa de realizar fusiones completas de ramales desde / hacia cualquiera de las ramas de lanzamiento (tanto estándar como personalizado), todos los cambios a ellos deben ser desarrollados individualmente o arreglos combinados seleccionados.
Debido a que cada una de estas ramas divergerá gradualmente entre sí, la cantidad de revisiones que requieren personalización / desarrollo individual crecerá exponencialmente (fallará la fusión simple de selección de cereza). Debe tener en cuenta el costo de desarrollo de estos.
Sin fusiones de sucursales (significativas) en la imagen, usted puede (y no puedo enfatizar su importancia lo suficiente) construir tuberías de CI / CD completamente automatizadas para estas sucursales, acompañado de un buen sistema de seguimiento / gestión de revisiones, lo que hace que la entrega de la revisión solo rutina (o casi).
fuente
¿Tal vez si mantiene sucursales por versiones en lugar de por clientes, podría ayudar a reducir su número?
De lo contrario, la única forma de alejarse de él es poder alojar el software usted mismo y cambiar a un modelo SaaS en el que pueda mantener solo una versión del mismo.
fuente