Ich habe mich kürzlich für agile Praktiken in der Softwareentwicklung interessiert und seitdem habe ich viele Artikel gesehen, die darauf hinweisen, dass diese Praktiken reduzierte Gesamtkosten ermöglichen.
Die Logik dahinter sieht normalerweise so aus: Wenn sich Ihre Anforderungen ändern, können Sie diese Änderung im nächsten Sprint-Backlog widerspiegeln. Dies führt zu geringeren Kosten, da das Entwerfen und Implementieren der neuen Funktion zeitlich eng beieinander liegt Die Kosten sinken nach der bekannten Regel, dass es umso teurer ist, diese Anforderungen zu erfüllen, je später Sie Änderungen an Ihren Anforderungen vornehmen müssen.
Mittlere bis große Softwareprojekte sind jedoch komplex. Eine plötzliche Änderung der Anforderungen bedeutet nicht, dass Sie keine anderen Teile Ihres Systems berühren müssen, um diese Anforderung zu erfüllen. In vielen Fällen muss die Architektur erheblich geändert werden, was auch bedeutet, dass Sie alle Funktionen, die auf der älteren Architektur basieren, erneut implementieren müssen. Der ganze Punkt der reduzierten Kosten verschwindet hier irgendwie. Wenn eine neue Anforderung einen neuen unabhängigen Teil des Systems erfordert, ist dies natürlich kein Problem. Die alte Architektur wächst einfach, sie muss nicht überdacht und neu implementiert werden.
Und das Gegenteil. Wenn Sie einen Wasserfall verwenden und plötzlich feststellen, dass eine neue Anforderung eingeführt werden muss, können Sie Ihr Design ändern. Wenn die vorhandene Architektur geändert werden muss, gestalten Sie sie neu. Wenn es nicht wirklich damit zu tun hat, sondern nur einen neuen Teil des Systems einführt, dann erledigen Sie die ganze Arbeit, hier kein Problem.
Trotzdem scheint mir der einzige Vorteil, den agile Entwicklung hat, darin zu bestehen, dass Funktionen zwischen Sprints vollständig erstellt werden, und für viele Leute und Projekte ist dies nicht kritisch. Darüber hinaus scheint Agile insgesamt zu einer schlechten Softwarearchitektur zu führen, da Features irgendwie aufeinander abgestimmt werden. Agile Teams kümmern sich nur darum, dass ein Feature funktioniert, nicht wie es funktioniert. Wenn Systeme mit der Zeit immer komplexer werden, erhöhen agile Entwicklungspraktiken das Chaos in der gesamten Produktarchitektur, was letztendlich zu höheren Kosten führt, da es immer schwieriger wird, Änderungen vorzunehmen, während Sie mit dem Wasserfall Ihre Architektur perfektionieren können bevor Sie etwas veröffentlichen.
Kann mir bitte jemand zeigen, wo ich hier falsch liege, weil offensichtlich viele Leute in Produktionsumgebungen agil arbeiten, also muss ich mich irgendwo irren.