Softwareentwicklung: Software ist kein Selbstzweck

Software ist kein Selbstzweck

In der Softwareentwicklung stellt man sich als Entwickler gerne vor, ein Magier zu sein, welche mit reiner Willenskraft aus dem Nichts einzigartigen Code beschwört. Schnell ist dieser "einzigartige Code" für ein Unternehmen aber eine Last. Man merkt dann später, dass die geschaffene Funktionen intransparent und nicht wartbar sind.

Generell gilt: Wenn jemand, dass komplexe was er tut, nicht in einfachen Sätzen erklären und begründen kann, hat er das Problem nicht erfasst.

Aus den Jahren der Erfahrung habe ich einige Leitsätze formuliert, die mir in den letzten Jahren geholfen hätten. Leider habe ich die Fehler alle selber gemacht, aber vielleicht ist jemand schlauer und kann aus meinen Erfahrungen lernen.

  • Schreibe den Code so, das ein anderer ihn versteht. Auch dein zukünftiges selbst ist ein anderer, denn er wird nicht mehr wissen, warum du dieses oder jenes gemacht hast
  • Sauberer Code ist allerdings auch kein Selbstzweck (schönerer Code des schönen Codes willen ist sinnlos), man will etwas erreichen und das auch wirtschaftlich Perspektive. Das gilt für die meiste Software, denn abgesehen von Kryptografischen oder mathematischen Problemstellungen geht es im Entwickleralltag darum Busisness-Cases abzubilden.
  • „Congnitive-Load“ : Das wichtigste ist das ein Mensch den Code versteht. Denn ein hoch optimierter Code wird durch Komplexität schnell falsch verstanden und dann falsch erweitert, bzw. aufgrund seiner Komplexität dann mit Patches umgebaut (oder neugebaut), weil das Grundprinzip nicht nachvollziehbar ist. Damit ist der Nutzen dann verschwunden.
  • Verstehe das Problem: Frontend Frameworks, MongoDb, JobQueues, BI-Software, etc. sind toll, aber lösen die dein eigentliches Problem?
  • Ein HTML Tag ist ein HTML Tag, eine sort() Funktion ist eine sort() Funktion. Kannst du diese in deinem Code nicht mehr verwenden, weil alles nur noch abstrahiert ist, dann ist das der falsche Weg.
  • Mein Code ist nicht besser als der anderer Projekte. Schreibe kein eigenes Framework/Tools, verbessere existierende.

Article relase date: / Last update: