Clever Code

Was ist Clever Code, welche Nachteile entstehen dadurch und welche Maßnahmen helfen dagegen?

Wissen kompakt: Clever Code ist ein Synonym für eine vordergründig raffinierte Art, Software zu entwickeln, die jedoch für eine professionelle Softwareentwicklung nicht empfehlenswert ist.

Clever Code – Software scheinbar schlau entwickeln

Clever Code klingt im ersten Augenblick positiv, oder? Es klingt nach einem Teil einer Software, der besonders elegant ein Problem löst. Oder nach einem Algorithmus, der per Zauberhand eine komplizierte Aufgabe meistert. Natürlich sollte eine Software clever programmiert werden, aber der Begriff „Clever Code“ meint etwas anderes: er beschreibt den Versuch von Programmierern, Herausforderungen extra schlau zu meistern. Auf individuelle Art, besser und klüger als alle anderen Entwickler ein Problem gelöst hätten. Leider vergessen Programmierer, die versuchen Clever Code zu programmieren, drei zentrale Aspekte der Softwareentwicklung:

  • Das Hauptziel der Softwareentwicklung ist es, mit wenig Aufwand nützliche Software zu erstellen.¹ 
  • Software sollte für andere Softwareentwickler lesbar, änderbar, erweiterbar und wartbar sein. In anderen Worten: die Prinzipien und Praktiken von Clean Code sollten genutzt werden.
  • Technische Schulden erschweren die Weiterentwicklung von Software.

Natürlich ist es möglich, Codezeilen zu verfassen, die 10% schneller geparst werden können und das Schreiben solcher Codezeilen könnte im positiven Wortsinne clever sein. Wenn jedoch gleichzeitig aber der Aufwand steigt, diese Codezeilen zu produzieren, wenn es für andere Softwareentwickler schwieriger wird, diesen Code zu lesen, zu verstehen und ggf. zu verändern, dann ist das alles andere als clever. Dann ist es kontraproduktiv.

Clever Code ist nicht Clean Code

„Programming is not like being in the CIA, you don’t get credit for being sneaky“ hat es Steve McConnell bereits 2004 in seinem Buch „Code Complete“² ausgedrückt. Frei in Deutsch übersetzt: „Programmieren ist nicht wie bei der CIA, man bekommt keine Anerkennung dafür, dass man raffiniert ist“. Und genauso ist es. Bei der Softwareentwicklung geht es um

  • Wandelbarkeit,
  • Korrektheit,
  • Produktionseffizienz und
  • kontinuierliche Verbesserung.

Dieses Fundament an Werten ist die Grundlage für die Entwicklung von Clean Code. Und Clean Code ist das Gegenteil von Clever Code.

Die Motivation für Clever Code

Was ist die Motivation von Programmierern, Code besonders clever entwickeln zu wollen? Verschiedene Motivationen sind denkbar, u.a.

  • der Anspruch, der Beste sein zu wollen, und damit der Versuch, eine „besondere“ Lösung zu implementieren.
  • ein falsches Verständnis von guter Softwareentwicklung.
  • der Versuch, sich selbst unverzichtbar zu machen.
  • fehlende Erfahrung bei der Entwicklung von Software.
  • ein interner Wettbewerb mit Kollegen.
  • weil es Spaß machen kann.

Maßnahmen gegen Clever Code

Es gibt einige Möglichkeiten, Maßnahmen gegen die Entwicklung von Clever Code zu ergreifen:

  • die Entwicklung von Software in Teams, also bspw. in Form von Pair Programmings oder Mob Programmings (vor der Implementierung).
  • die Definition von eindeutigen Coding und Dokumentationsrichtlinien (ebenfalls vor der Implementierung).
  • die Durchführung eines Software Walkthroughs bzw. ein Peer-Review (während der Implementierung).
  • die Durchführung von Refactorings zur Beseitigung (nach der Implementierung).

 

Clever Code - nur auf den ersten Blick positiv

Was macht t2informatik?

Was macht t2informatik? Ein Klick und Sie wissen s.

Impuls zum Diskutieren:

Es gibt genau einen Bereich, bei dem die Entwicklung von Clever Code erstrebenswert ist: Code Golf.

Hinweise:

[1] Ziele der Softwareentwicklung
[2] Code Complete

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

Wissen kompakt: Was ist SWEBOK?

Was ist SWEBOK?

Wissen kompakt: Wie funktioniert Code Golf?

Wie funktioniert Code Golf?