En resumen, porque la fusión es a menudo otro lugar para que algo salga mal, y solo tiene que salir mal una vez para que la gente tenga mucho miedo de volver a lidiar con eso (una vez mordido dos veces, si lo desea).
Entonces, supongamos que estamos trabajando en una nueva pantalla de administración de cuentas, y resulta que hay un error descubierto en el flujo de trabajo de Nueva cuenta. De acuerdo, tomamos dos caminos separados: finaliza la Gestión de cuentas y soluciono el error con Cuentas nuevas. Dado que ambos estamos lidiando con cuentas, hemos estado trabajando con un código muy similar, tal vez incluso tuvimos que ajustar los mismos fragmentos de código.
Ahora, en este momento tenemos dos versiones de software diferentes pero totalmente funcionales. Los dos nos hemos comprometido con nuestros cambios, los dos hemos probado nuestro código debidamente e, independientemente, estamos muy seguros de haber hecho un trabajo increíble. ¿Ahora que?
Bueno, es hora de fusionarse, pero ... mierda, ¿qué pasa ahora? Podríamos pasar de dos conjuntos de software en funcionamiento a uno, un software unificado y horriblemente roto de software con errores nuevos en el que su Gestión de cuentas no funciona y las Cuentas nuevas no funcionan y ni siquiera sé si el error anterior todavía está allí .
Tal vez el software era inteligente y decía que había un conflicto e insistió en que le demos orientación. Bueno, mierda, me siento para hacerlo y veo que has agregado un código complejo que no entiendo de inmediato. Creo que está en conflicto con los cambios que he hecho ... Te pregunto, y cuando tienes un minuto lo compruebas y ves mi código que no entiendes. Uno o ambos tenemos que tomarse el tiempo para sentarnos, hacer una fusión adecuada y posiblemente volver a probar todo el proceso para asegurarnos de no romperlo.
Mientras tanto, otros 8 chicos están cometiendo código como los sádicos que son, hice algunas pequeñas correcciones de errores y las envié antes de saber que teníamos un conflicto de fusión, y seguro que parece un buen momento para tomar un descanso, y tal vez usted están fuera por la tarde o estancados en una reunión o lo que sea. Quizás debería tomarme unas vacaciones. O cambiar de carrera.
Y así, para escapar de esta pesadilla, algunas personas tienen mucho miedo al compromiso (¿qué más hay de nuevo, de verdad?). Naturalmente, somos reacios al riesgo en escenarios como este, a menos que pensemos que apestamos y lo vamos a arruinar de todos modos, en cuyo caso las personas comienzan a actuar con un abandono imprudente. suspiro
Ahí vas. Sí, los sistemas modernos están diseñados para aliviar este dolor, y se supone que es capaz de retroceder y rebajar y degradar fácilmente y freebase y hanglide y todo eso.
Pero todo es más trabajo, y solo queremos presionar el botón en el microondas y hacer una comida de 4 platos antes de que tengamos tiempo de encontrar un tenedor, y todo se siente tan insatisfactorio: el código es trabajo, es productivo, es significativo, pero manejar con gracia una fusión simplemente no cuenta.
Los programadores, como regla, tienen que desarrollar una gran memoria de trabajo, y luego tienden a olvidar de inmediato todos esos nombres basura y variables y el alcance tan pronto como hayan terminado el problema, y manejando un conflicto de fusión (o peor, un fusión mal manejada) es una invitación para recordar su mortalidad.