• IT-Karriere:
  • Services:

Es gibt Wege, katastrophale Programmausfälle zu vermeiden

Als Softwareentwickler streben wir danach, robuste, fehlerfreie Systeme zu entwickeln, die man jahrelang einfach laufen lassen kann, ohne manuell einzugreifen. Nach diesem Maßstab ist das Pensionsfonds-Skript sicher ein voller Erfolg.

Stellenmarkt
  1. Rems-Murr-Kliniken gGmbH, Winnenden
  2. DAVASO GmbH, Leipzig

Die harte Realität ist aber, dass alles eines Tages kaputtgeht. Alles wird irgendwann aktualisiert werden müssen. Zum Beispiel:

  • weil Ihr System Hardware braucht, die nicht mehr produziert wird,
  • weil Ihr System über Abhängigkeiten verfügt, die nicht mehr gültig sind,
  • weil Ihr System über Abhängigkeiten mit schwerwiegenden Sicherheitslücken verfügt - und die einzigen Patches sich auf rückwärts-inkompatiblen Versionen befinden,
  • weil die Anwendung auf Grundlage bestimmter Annahmen entwickelt wurde, die nicht mehr zutreffen,
  • oder einfach: weil die Welt sich verändert hat und die Anwendung sich mit ihr verändern muss.

Egal, was der Grund ist: Veränderung ist unvermeidlich. Die Frage ist nur, wie schmerzhaft sie sein wird, wenn sie schließlich nötig wird.

Golem Akademie
  1. Python kompakt - Einführung für Softwareentwickler
    19./20. April 2021, online
  2. C++ Clean Code - Best Practices für Programmierer
    7.-11. Juni 2021, online
Weitere IT-Trainings

Wenn Sie ein System haben, an dem aktiv gearbeitet wird, muss eine Veränderung nicht allzu schmerzhaft sein. Wenn Sie jedoch ein System haben, das über mehrere Jahre oder sogar Jahrzehnte völlig ignoriert wurde, gibt es viele Dinge, die katastrophal schiefgehen können.

  • Die Menschen, die das System programmiert haben, sind möglicherweise nicht mehr im Unternehmen,
  • der Quellcode ist verlorengegangen,
  • die neuen Entwickler wissen nicht, wie man den Quellcode richtig kompiliert, um die ausführbare Datei zu erzeugen, oder
  • wie man die neue ausführbare Datei verteilt, oder
  • wie die ausführbare Datei korrekt gestartet wird, mit allen, korrekt konfigurierten Flags, oder
  • wie die Architektur und Implementierung des Codes zu verstehen ist, oder
  • wie die Invarianten und impliziten Annahmen zu verstehen sind, die der Code braucht, um zu funktionieren, oder
  • wie automatisierte Tests auszuführen sind, oder
  • wie das Debugging bei Testfehlern funktioniert, oder
  • wie man Fehler im Produktionsbetrieb behebt, oder
  • wie man Zugriff auf Logs und Metriken erhält.

Wenn Sie versuchen, alle oben genannten Punkte zu dokumentieren, wird das helfen. Ihre Dokumentation wird aber große Lücken enthalten. Umfassende Dokumentation ist kein Ersatz dafür, sich die Hände schmutzig zu machen.

Ein müßiger Geist

Einen engagierten Entwickler zu haben, der für diese Dinge verantwortlich ist, ist ein guter erster Schritt. Aber das reicht nicht.

Dokumente werden die Menschen nur so lange lesen, bis sie sich langweilen. Sie werden außerdem nicht die gleichen Erkenntnisse daraus ziehen wie aus eigener Erfahrung - und durch das Lösen echter Probleme.

Wenn Menschen gebeten werden, etwas zu prüfen, ist die Wahrscheinlichkeit groß, dass sie es einfach schnell absegnen, um sich dann auf andere, neuere und schönere Projekte zu konzentrieren - oder dass sie es einfach nur aussitzen. Ohne echte Herausforderungen und wenn keine Ergebnisse gefordert werden, werden viele den Weg des geringsten Widerstands gehen.

Wenn Sie wirklich vermeiden wollen, dass Ihre Software vor sich hin rottet, ist der einzige Weg, ständig in Bewegung zu bleiben. Auch wenn es unnötig oder riskant erscheint. Denn der beste Weg, Ihr institutionelles Wissen und Ihre Fähigkeiten aufzubauen, zu erhalten und zu verifizieren, besteht darin, ständig Änderungen vorzunehmen und Ihre Fähigkeit zu testen, diese Änderungen erfolgreich umzusetzen. Der Tag, an dem Sie aufhören, sich zu bewegen, ist der Tag, an dem Ihr institutionelles Wissen anfängt zu verfallen.

Handbuch für Softwareentwickler: Das Standardwerk für professionelles Software Engineering

Selbst sich im Kreis zu bewegen ist, so lächerlich es auch klingt, besser als komplette Untätigkeit. Realistisch betrachtet gibt es aber ohnehin immer etwas, das Systembetreuer tun können, um vorwärts zu kommen - selbst wenn es nur in winzigen Schritten ist.

Sie könnten Ihre Umgebung aktualisieren, um die neuesten Versionen aller Abhängigkeiten zu verwenden:

  • zum Beispiel die Migration von JDK 8 auf 11 oder
  • Sie aktualisieren Ihre JVM, um den G1-Garbage-Collector anstelle von CMS zu verwenden, oder
  • Sie aktualisieren den GCC-Compiler von Version 5 auf 7 oder
  • Sie upgraden Ihre Datenbank von Postgres 9.5 auf Postgres 11 oder
  • Sie aktualisieren Ihr AWS SDK von Version 1.10 auf 1.11 oder
  • Sie installieren die neueste Linux-Distribution auf Ihren Rechnern.

In schwerwiegenden Fällen, in denen Ihre Abhängigkeiten hoffnungslos veraltet sind, können Sie prüfen, ob Sie auf einen neueren Stack migrieren können:

  • zum Beispiel von Sparc zu x86 oder
  • von Solaris zu Linux.

Sie können Ihre Entwickler fordern, indem Sie auch die Anwendung aktualisieren:

  • zum Beispiel, indem noch vorhandene Bugs und Sonderfälle angegangen werden,
  • die automatisierte Testsuite gestärkt wird,
  • technische Schulden bereinigt werden,
  • Leistungsoptimierungen vorgenommen werden,
  • neue Funktionen implementiert werden oder
  • der Code schrittweise überarbeitet wird, um ihn lesbarer zu machen.

All das ist zwangsläufig mit vorübergehenden Risiken und scheinbar unnötigen Kosten verbunden. Zwangsläufig werden Ihre Entwickler dabei Fehler machen und Bugs einbauen. Deswegen scheint es sehr verlockend, einfach gar nichts zu tun. Nach dem Motto: "Wenn es nicht kaputt ist, muss es auch nicht repariert werden."

Wenn das betreffende System nur eine minimale Funktion für das Geschäft hat, mag das sogar die rationalste Lösung sein. Aber bei jedem unternehmenskritischen System wird diese Vernachlässigung von einem kleineren, vorübergehenden Risiko zu einem dauerhaften, katastrophalen Risiko. Nämlich dem Risiko, dass Ihr System eines Tages dringend debuggt oder aktualisiert werden muss, aber niemand dazu in der Lage ist.

Für jedes unternehmenskritische System ist es unerlässlich, institutionelles Wissen und Fähigkeiten zu erhalten. Der einzige Weg, das zu tun, ist kontinuierliches Training. Ihr (Unternehmens-)Gehirn ist ein Muskel. Benutzen Sie ihn oder verlieren Sie ihn.

Auch zu diesem Thema:

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 IT in Unternehmen: Wie sich Softwareverrottung verhindern lässt
  1.  
  2. 1
  3. 2


Anzeige
Hardware-Angebote

xUser 23. Mär 2021 / Themenstart

Schau mal in die anderen Threads. Viele Entwickler scheinen das mit den sich...

Typhoonx 20. Mär 2021 / Themenstart

Man kann ehrlich gesagt mit guter Planung auch die Komplexität aus Prozessen abbauen und...

Typhoonx 20. Mär 2021 / Themenstart

Das sehe ich so ähnlich das es kein "best practise" gibt. Aber gerade beim Strukturieren...

Marwonline 19. Mär 2021 / Themenstart

Einige Teile aus dem Beitrag sind 1:1 identisch mit dem Vortrag, der auf den CLT2021 von...

Elkarlo 19. Mär 2021 / Themenstart

Ich kann das nur bestätigen: 2014 habe ich auf ein Routing ein Mini-Script geschrieben...

Kommentieren


Folgen Sie uns
       


Samsung Galaxy S21 Ultra vorgestellt

Das Galaxy S21 Ultra ist das Topmodell von Samsungs neuer S21-Reihe und unterscheidet sich deutlich von den beiden anderen Modellen.

Samsung Galaxy S21 Ultra vorgestellt Video aufrufen
Programm für IT-Jobeinstieg: Hoffen auf den Klebeeffekt
Programm für IT-Jobeinstieg
Hoffen auf den Klebeeffekt

Aktuell ist der Jobeinstieg für junge Ingenieure und Informatiker schwer. Um ihnen zu helfen, hat das Land Baden-Württemberg eine interessante Idee: Es macht sich selbst zur Zeitarbeitsfirma.
Ein Bericht von Peter Ilg

  1. Arbeitszeit Das Sechs-Stunden-Experiment bei Sipgate
  2. Neuorientierung im IT-Job Endlich mal machen!
  3. IT-Unternehmen Die richtige Software für ein Projekt finden

Weclapp-CTO Ertan Özdil: Wir dürfen nicht in Schönheit und Perfektion untergehen!
Weclapp-CTO Ertan Özdil
"Wir dürfen nicht in Schönheit und Perfektion untergehen!"

Der CTO von Weclapp träumt von smarter Software, die menschliches Eingreifen in der nächsten ERP-Generation reduziert. Deutschen Perfektionismus hält Ertan Özdil aber für gefährlich.
Ein Interview von Maja Hoock


    Fiat 500 als E-Auto im Test: Kleinstwagen mit großem Potenzial
    Fiat 500 als E-Auto im Test
    Kleinstwagen mit großem Potenzial

    Fiat hat einen neuen 500er entwickelt. Der Kleine fährt elektrisch - und zwar richtig gut.
    Ein Test von Peter Ilg

    1. Vierradlenkung Elektrischer GMC Hummer SUV fährt im Krabbengang seitwärts
    2. MG Cyberster MG B Roadster mit Lasergürtel und Union Jack
    3. Elektroauto E-Auto-Prämie übersteigt in 2021 schon Vorjahressumme

      •  /