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.