t2informatik » Wissen kompakt » Overengineering

Overengineering

Mehr muss nicht besser sein

Overengineering – oder auch Over-Engineering – beschreibt ein Phänomen, dass Produkte in einer höheren Qualität entwickelt werden, als dies zum gegenwärtigen Zeitpunkt von Kunden und Anwendern gefordert wird. In der Folge steigen die Aufwände und Kosten in der Entwicklung, und die Lösungen werden komplizierter in der Bedienung sowie in der Wartung und Pflege. Die Entwicklungsdauer und möglicherweise auch die Fehlerwahrscheinlichkeit des Produkts nehmen zu. Häufig leidet auch die Performance der Lösung.

Es gibt verschiedene Gründe für Overengineering:

  • Das Streben nach Perfektionismus, denn erst wenn ein Produkt auch Feature X und Y unterstützt, ist es in der Wahrnehmung der Designer und Entwickler eine perfekte Lösung.
  • Die Unkenntnis der tatsächlichen Wünsche und Bedürfnisse der Kunden, aufgrund mangelnder Kommunikation mit Stakeholdern und lückenhaften Prozessen zur Anforderungserhebung.
  • Die Orientierung an vorhandenen Lösungen am Markt und das damit einhergehende Gefühl, ähnliche Basis- und Leistungsmerkmale liefern zu müssen.
  • Anforderungen können sich ändern und neue Technologien erscheinen, die frühere Designentscheidungen in Frage stellen. In diesem Wissen entwerfen System- und Softwarearchitekten gerne Lösungen, die Erweiterungsmöglichkeiten oder Schnittstellen bereitstellen, die derzeit noch nicht benötigt werden.

In der Praxis der Produktentwicklung ist es schwierig, das richtige Maß zwischen Overengineering und Underengineering zu finden. Wo liegt die Grenze zwischen guten Design und zu viel Design? Wie lässt sich bei einem Code-Review herausfinden, welche Teile konkret benötigt werden und welche bereits für zukünftige, imaginäre Anforderungen realisiert wurden? Bei der Entwicklung von Produkten empfiehlt es sich sicherlich,

  • Lösungen nicht generischer zu machen, als sie sein müssen,
  • Erweiterungsmöglichkeiten nur dann vorzusehen, wenn es sehr wahrscheinlich ist, dass sie zukünftig benötigt werden,
  • und frühzeitig Feedback von Kunden und Anwendern einzuholen.
“Das Fachwissen zu Softwarearchitekturen, die Expertise in der Softwareentwicklung und die sehr flexible Arbeitsweise waren ideal für uns.“
„Ich brauche Freiheit und Vertrauen. Und ich möchte Verantwortung übernehmen und dabei Spaß haben!“
Share This