Hot Take: Die Trennung von UI-Stack und Backend-Stack ist ein großer Grund, warum Softwarequalität die letzten Jahre abnimmt.

Gerade wieder eine Ausschreibung gesehen: Gesucht wird jemand mit Spring Boot Erfahrung, Angular / Typescript und Flutter.

Vielleicht bin ich ja auch ein bisschen langsam, aber Java, Spring Boot und das ganze Ökosystem sind komplex. Ich kann mir einfach nicht vorstellen, diese drei Technologien ähnlich tief zu verstehen und bei den Entwicklungen mitzuhalten

@javahippie Ist das nicht eher konsequent der völlig widersinnigen Entscheidung, diese Teams zu trennen?
@odrotbohm Da würde ich nachfragen wollen, was "Teams zu trennen" bedeutet. Front- und Backenddevs in zwei verschiedenen organisatorischen Einheiten? Oder die Skills in einem Team klar aufzutrennen?
@javahippie Siehe die andere Antwort an Nils und dich. Man will eigentlich keine separaten Teams, sondern Entwickelnde mit unterschiedlichen Expertisen. Als ich jung war ging das unter Schlagwort „Crossfunktionale Teams“ durch.

@odrotbohm @javahippie Das sehe ich tatsächlich anders. Für mich ist das UI Nutzer eines wohldefinierten Dienstes, der vom Back-End erbracht wird. Die Trennung finde ich nicht nur nicht problematisch, sondern extrem vorteilhaft für die Architektur.

Die Front- und Backend-Entwickler sollten organisatorisch trotzdem Teil eines crossfunktionalen Konstrukts sein, aber innerhalb dieses Konstrukts finde ich getrennte Entwicklung der Komponenten sehr vorteilhaft.

@zappes @javahippie Nehmen wir mal kurz an, das wäre so. Gibst du mir 1. recht, dass das Frontend das Backend braucht, um ein Feature (für die Enduser:in) schlussendlich zu liefern? Gibst du mir 2. recht, dass das Backend das Frontend braucht, um ein Feature zu liefern?

Wenn a && b, dann haben wir eine zyklische Abhängigkeit und das Ding ist quasi eins, weil die positiven Effekte der Trennung sich auf das Wohlfühly der Entwickelnden beschränken und alle anderen mit den negativen rumschlagen.

@odrotbohm @javahippie Meine persönliche Vorgehensweise als Architekt ist es, zunächst mal den zu automatisierenden Businessprozess zu verstehen und ordentlich zu dokumentieren - BPMN goes brrrrrr.

Von da aus geht es weiter zur Umsetzung des Frontends mit Mock-Services für das Backend, bis die UX zusammen mit den Anwendern stabilisiert wurde. Entwicklung der Services erfolgt dann parallel zur Frontenderstellung, wo Funktionen bereits klar genug sind.

@odrotbohm @javahippie Das gibt einem einerseits ein paar schöne, parallelisierbare Pipelines. Dann erzeugt es es wohldefinierte Services. Und man kriegt eine interne API, die gut genug ist, um das Frontend tatsächlich in verschiedenen Varianten bauen zu können - ggf. mit kleinen BFF dazu, die bestimmte Abfragemuster (meist für Stammdaten) in optimierter Form für das jeweilige UI liefern können.