Kurz gesagt, weil das Verschmelzen oft ein anderer Ort ist, an dem etwas schief gehen kann, und es nur einmal schief gehen muss, damit die Menschen Angst davor haben, es erneut zu tun (wenn Sie so wollen, einmal zweimal schüchtern gebissen).
Nehmen wir also an, wir arbeiten an einem neuen Bildschirm für die Kontoverwaltung, und es stellt sich heraus, dass im Workflow für neue Konten ein Fehler entdeckt wurde. OK, wir gehen zwei getrennte Wege - Sie beenden die Kontoverwaltung und ich behebe den Fehler mit "Neue Konten". Da wir uns beide mit Konten befassen, haben wir mit sehr ähnlichem Code gearbeitet - vielleicht mussten wir sogar dieselben Codeteile anpassen.
Momentan haben wir zwei verschiedene, aber voll funktionsfähige Versionen von Software. Wir haben beide einen Commit für unsere Änderungen ausgeführt, wir haben unseren Code beide pflichtbewusst getestet und sind unabhängig davon sehr zuversichtlich, dass wir eine großartige Arbeit geleistet haben. Was jetzt?
Nun, es ist Zeit zu fusionieren, aber ... Mist, was passiert jetzt? Wir könnten sehr gut von zwei funktionierenden Software-Sätzen zu einem vereinheitlichten, schrecklich kaputten Teil einer neu fehlerhaften Software übergehen, bei der Ihre Kontoverwaltung nicht funktioniert und neue Konten kaputt sind und ich nicht einmal weiß, ob der alte Fehler noch vorhanden ist .
Vielleicht war die Software schlau und es gab einen Konflikt und bestand darauf, dass wir sie anleiten. Scheiße, ich setze mich hin und sehe, dass Sie einen komplexen Code hinzugefügt haben, den ich nicht sofort verstehe. Ich denke, es widerspricht den Änderungen, die ich vorgenommen habe ... Ich frage Sie, und wenn Sie eine Minute Zeit haben, überprüfen Sie, und Sie sehen meinen Code, den Sie nicht verstehen. Einer oder beide von uns müssen sich die Zeit nehmen, sich hinzusetzen, eine ordnungsgemäße Zusammenführung vorzunehmen und möglicherweise die ganze Sache noch einmal zu testen, um sicherzustellen, dass wir sie nicht kaputt gemacht haben.
In der Zwischenzeit schreiben 8 andere Typen Code wie die Sadisten, die sie sind. Ich habe ein paar kleine Fehlerbehebungen vorgenommen und sie eingereicht, bevor ich wusste, dass wir einen Zusammenführungskonflikt hatten sind für den Nachmittag weg oder stecken in einer Besprechung oder was auch immer. Vielleicht sollte ich einfach mal Urlaub machen. Oder Karrieren wechseln.
Um diesem Albtraum zu entkommen, haben einige Menschen große Angst vor Engagement (was gibt es sonst noch Neues?). In solchen Szenarien sind wir natürlich risikoscheu - es sei denn, wir glauben, dass wir scheißen und es trotzdem vermasseln werden. In diesem Fall handeln die Leute mit rücksichtsloser Hingabe. Seufzer
Hier bitteschön. Ja, moderne Systeme wurden entwickelt, um diesen Schmerz zu lindern, und es sollte möglich sein, einfach zurückzutreten und zu rebasieren und zu debasieren und freebase und hanglide und so weiter.
Aber es ist viel mehr Arbeit, und wir möchten nur den Knopf auf der Mikrowelle drücken und ein 4-Gänge-Menü zubereiten, bevor wir Zeit haben, eine Gabel zu finden, und alles fühlt sich so unerfüllt an - Code ist Arbeit, es ist produktiv, es ist Sinnvolles, aber anmutiges Zusammenführen zählt einfach nicht.
Programmierer müssen in der Regel ein großartiges Arbeitsgedächtnis entwickeln und dann die Tendenz haben, alle Junk - und Variablennamen und das Scoping sofort zu vergessen, sobald sie das Problem gelöst haben, und einen Zusammenführungskonflikt (oder schlimmer noch: a falsch gehandhabte Zusammenführung) ist eine Aufforderung, an Ihre Sterblichkeit erinnert zu werden.