Für nicht wenige Entwickler*innen gleicht die Frage nach dem richtigen Vorgehen einer philosophischen Grundsatzfrage. So setzen die einen auf die Arbeit mit komfortablen Anwendungsbibliotheken, während andere für die möglichst reine Programmierkunst plädieren und beim Codeaufbau echte „Handarbeit“ bevorzugen. Unser Blogbeitrag zeigt nicht nur die Vor- und Nachteile beider Vorgehensweisen, er macht auch deutlich, dass für ein gutes Endprodukt letztlich eine andere Perspektive entscheidend ist.
Framework vs. „From Scratch“ – Eine Einführung aus dem Hausbau
Die Entwicklung eines neuen Softwareproduktes ist vergleichbar mit dem Neubau eines Hauses. Steht der grundlegende Bauplan, kann das Haus entweder von Grund auf Stein aufgebaut werden oder aber es kommen einzelne Fertigbauelemente, wie beispielsweise ein Fertigkeller oder gleich ein ganzes Set aus vorgefertigten Bauelementen zum Einsatz. Hoher Aufwand und maximale Individualität stehen einer effizienten, aber auch standardisierten Bauweise gegenüber.
In ähnlicher Weise stehen auch Produktentwickler*innen vor der Frage, ob sie bei der Programmierung eines Produktes (möglichst) alle Elemente von Grund auf neu, also „From Scratch“, gestalten wollen oder auf vorgefertigte Bibliotheken zurückgreifen.
So müssen für einen Onlineshop z. B. verschiedene Datenbanken angelegt, Berechtigungsverwaltungen definiert, Abläufe programmiert und Oberflächendesigns angelegt werden. Entwickler*innen können dabei entweder jede Anforderung selbst gestalten oder auf Komponenten unterschiedlicher Frameworks, wie .NET Core, Symfony oder Spring Boot, setzen. Beide Vorgehensweisen haben dabei, wie beim Hausbau, eindeutige Vor- und Nachteile.
Produktentwicklung mit Frameworks: Vor- und Nachteile
Der größte Vorteil von Frameworks besteht vor allem darin, dass Entwickler*innen auf einen gut eingefahrenen Zug aufspringen und so einfach und schnell Fortschritte erzielen können. Dennoch lassen sich mit Frameworks nicht alle Probleme lösen.
Vorteile
- Schnelle Fortschritte: Gerade zu Beginn eines Softwareprojektes ermöglichen Frameworks ein äußerst effektives Arbeiten.
- Profit durch Schwarmintelligenz: Nicht immer ist es notwendig, alle Probleme selbst zu lösen. So bieten viele Frameworks eine solide Antwort für Herausforderungen, die andere Entwickler*inner bereits erfolgreich gelöst haben.
- Trends nutzen: Viele Frameworks greifen neue Trends auf dem Markt auf. Entwickler*innen bieten Frameworks so die Möglichkeit, Entwicklungen mit wenig Aufwand selbst zu testen.
- Expertisen nutzen: Viele Frameworks werden von den großen Playern am Markt verantwortet (wie z. B. .NET Core von Microsoft). Entwickler*innen können so Frameworks nutzen, die für spezielle IT-Umgebungen besonders gut geeignet sind.
|
Nachteile
- Abhängigkeiten entstehen: Wer auf Frameworks zurückgreift, gibt damit in der Regel wesentliche Komponenten des Produktes aus der Hand. Dies kann zum Problem werden, wenn z. B. in späteren Entwicklungsphasen einzelne Bibliotheken nicht mehr gepflegt werden und dies dazu führt, dass große Teile des eigenen Codes neu angepasst werden müssen.
- Fehlende Kompatibilität: Nicht immer harmonisieren alle eingesetzten Bibliotheken untereinander. Vor allem bei großen und umfangreichen Projekten kann das zu einer Herausforderung werden.
- Fehlende Lösungen: Nicht immer lässt sich für jedes Problem auch eine entsprechende Bibliothek finden. Entwickler*innen sollten also ohnehin dazu bereit sein, einzelne Teile des Codes selbst zu programmieren.
|
Produktentwicklung „From Scratch“: Vor- und Nachteile
Liegt das eigene Produkt wie ein großes leeres Blatt auf dem „Entwicklungstisch“, so bietet dies ein hohes Maß an Freiheit. Mit dem Ehrgeiz, möglichst das ganze Blatt selbst gestalten zu wollen, ist allerdings ein immenser Aufwand verbunden.
Vorteile
- Maximale Freiheit: Der größte Vorteil einer Produktentwicklung „von der Pike auf“ lässt sich einfach und kompakt zusammenfassen: Keine Frameworks, keine Vorgaben. Die Codestruktur kann völlig frei gestaltet werden.
- Hohe Übersichtlichkeit: Jedes Framework bringt auch unnötigen Ballast mit in den Code, da es immer auch nicht zwingend notwendige Elemente enthält. Wer seine Anwendung „from scratch“ entwickelt, kann seinen Quellcode daher schnell und übersichtlich halten.
- Volle Kontrolle: Wer seinen Code (überwiegend) selbst programmiert, kennt auch dessen Eigenheiten. Böse Überraschungen treten entsprechend seltener auf.
|
Nachteile
- Enormer Aufwand: Schon die Entwicklung einzelner Standardfunktionen können mehrere Tage Aufwand bedeuten. Wer Produkte in großen Teilen „From Scratch“ erstellen will, muss deshalb ein hohes Zeitpensum in den Entwicklungsprozess investieren.
- Verlangsamte Entwicklung: Der hohe Zeitaufwand einer From-Scratch-Programmierung kann dazu führen, dass das Produkt nur sehr langsam vorankommt. Neue Trends und Anforderungen können so evtl. erst verspätet abgebildet werden.
|
Framework oder „From Scratch“ – das ist nicht die Frage!
Programmierungen via Framework bieten ebenso wie eine Programmierung überwiegend „From Scratch“ erhebliche Vor- und Nachteile. So kann durch „From Scratch“ zwar eine hochoptimierte Applikation erstellt werden, neue Funktionalitäten können jedoch nur langsam eingefügt werden. Im Gegenzug kann eine sehr bibliothekenlastige Anwendung zwar schnell neue Funktionalitäten einbinden, dafür kann sich der Wartungsaufwand im Laufe der Zeit aber immer weiter erhöhen.
Programmierer*innen sind deshalb gut beraten, nicht in ideologische Grabenkämpfe zwischen Frameworks und „From Scratch“ zu verfallen. Stattdessen sollte abseits aller persönlichen Vorlieben überlegt werden, wie das angestrebte Produkt zum Zweck einer möglichst positiven Nutzererfahrung so effizient wie möglich realisiert werden kann, ganz gleich, ob dafür Frameworks genutzt oder Codefunktionen selbst programmiert werden.
Fazit: Gute Entwickler*innen können Spagat
In der Praxis hat es sich in unseren Projekten bewährt, die Produktentwicklung mit Frameworks zu beginnen, die eingesetzten Tools aber immer wieder kritisch zu überprüfen und zu bewerten.
Es gilt zu evaluieren, warum eine notwendige Aufgabe mit dem verwendeten Tool am besten realisiert werden kann.
Wird deutlich, dass gerade für sehr spezifische Aufgaben keine passende Bibliothek zu finden ist, sollte der Bau von einzelnen Komponenten selbst in Angriff genommen werden.
So kann der Spagat zwischen einer ebenso effizienten wie bedarfsgerechten Produktentwicklung gemeistert werden.