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. Sachbearbeiterinnen / Sachbearbeiter (w/m/d) - Cyber-Sicherheit in Smart Home und Smart Cities
    Bundesamt für Sicherheit in der Informationstechnik, Bonn
  2. Softwareentwickler C# .NET (m/w/d)
    Dentsply Sirona, The Dental Solutions Company(TM), Bensheim bei Darmstadt
Detailsuche

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. SAMBA Datei- und Domänendienste einrichten: virtueller Drei-Tage-Workshop
    7.–9. März 2022, Virtuell
  2. First Response auf Security Incidents: Ein-Tages-Workshop
    4. März 2022, Virtuell
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


xUser 23. Mär 2021

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

Typhoonx 20. Mär 2021

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

Typhoonx 20. Mär 2021

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

Marwonline 19. Mär 2021

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

Elkarlo 19. Mär 2021

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



Aktuell auf der Startseite von Golem.de
Resident Evil (1996)
Grauenhaft gut

Resident Evil zeigte vor 25 Jahren, wie Horror im Videospiel auszusehen hat. Wir schauen uns den Klassiker im Golem retro_ an.

Resident Evil (1996): Grauenhaft gut
Artikel
  1. Streaming: Chromecast erhält spezielle Youtube-Fernbedienung
    Streaming
    Chromecast erhält spezielle Youtube-Fernbedienung

    Die Steuerung von Youtube auf einem Chromecast soll mit einer neuen Funktion deutlich komfortabler werden.

  2. Studie: Kinder erhalten Smartphone meist zwischen 6 und 11 Jahren
    Studie
    Kinder erhalten Smartphone meist zwischen 6 und 11 Jahren

    Nur eine sehr geringe Minderheit der Eltern will ihrem Kind erst mit 15 Jahren ein Smartphone zur Verfügung stellen.

  3. Google: Kopfhörer verlieren Google-Assistant-Support auf iPhones
    Google
    Kopfhörer verlieren Google-Assistant-Support auf iPhones

    Wer Google Assistant am Kopfhörer benutzen will, ist künftig auf ein Android-Gerät angewiesen.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • Saturn-Advent: Samsung Portable SSD T5 1 TB 84€ • ViewSonic VX2718-2KPC-MHD (WQHD, 165 Hz) 229€ • EPOS Sennheiser GSP 670 199€ • EK Water Blocks Elite Aurum 360 D-RGB All in One 205,89€ • KFA2 Geforce RTX 3070 OC 8 GB 1.019€ • Alternate (u. a. AKRacing Core SX 269,98€) [Werbung]
    •  /