Overengineering

Was ist Overengineering, wo liegen Gründe und was sind die Folgen?

Mehr muss nicht besser sein

Overengineering beschreibt eine Situation, in der ein Produkt robuster konstruiert wird oder mehr Merkmale aufweist, als es für seinen Verwendungszweck notwendig ist oder vom Anwender erwartet wird. In der Folge steigen die Aufwände und Kosten in der Entwicklung, in der Wartung und der Pflege. Die Entwicklungsdauer und möglicherweise auch die Fehlerwahrscheinlichkeit des Produkts nehmen zu. Häufig werden Lösungen zudem komplizierter in der Bedienung und die Performance der Lösung leidet.

Auch bei Dienstleistungen gibt es dieses Phänomen und selbst bei Prozessen wird der Begriff des Overengineerings oft verwendet; immer dann, wenn ein Prozess unnötig komplex oder ineffizient ist. In solchen Fällen wird auch gerne von einem Overkill gesprochen.

Gründe für Overengineering

Es gibt verschiedene Gründe für ein 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.

 

Overengineering

Das richtige Maß zwischen Over- und Underengineering

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.

 

Dienstleister gesucht?

Softwareentwicklung aus Berlin

Hinweise:

Hier finden Sie ergänzende Informationen aus unserer Rubrik Wissen kompakt:

Wissen kompakt: Was ist Gold Plating?

Was ist Gold Plating?

Wissen kompakt: Was ist das YAGNI-Prinzip?

Was ist das YAGNI-Prinzip?