Wartbarkeit kompakt: 200 Tipps und Ressourcen

Artikel vom 5. April 2018. ISSN 1614-3124, #59. Schwerpunkt: (RSS-Feed für alle Themen).

Vor einigen Monaten habe ich mit A List Apart zusammengearbeitet, um unser Feld ein paar Fragen zum Thema Wartbarkeit zu stellen: Was hilft der Wartung von Websites? Was ist hinderlich? Und auf was fĂĽr Ressourcen greifen Entwickler zurĂĽck, um Wartbarkeit zu verbessern?

Das Ziel war, einen wesentlich besseren und praktisch orentierteren Blick als zuvor zu gewinnen, als wir wenig mehr als ein paar Thesen hatten, die ein Jahrzehnt vorher entstanden waren. Das Ergebnis der Umfrage war dann eine Liste von 134 Antworten mit mehr als 500 Datenpunkten die alle gesichtet, normalisiert, umformuliert, sortiert und getestet wurden, um einen neuen FĂĽhrer zu formen, einen neuen und umfassenderen FĂĽhrer zu Wartbarkeit im Internet.

Jeden einzelnen Punkt auszuführen, würde ein ganzes Buch zum Thema bedeuten; und auch wenn ich gerne ein anderes probiert hätte, wollte ich das Thema doch erst in einer Art präsentieren, die leichter zu überfliegen und verdauen ist. Kategorisierung war dabei nicht durchweg trivial, Redundanz mag ebenfalls vorliegen, aber mit Ihrer und des Feldes Hilfe – Anregungen werden dankbar angenommen – können wir das Vorliegende weiter ausbauen und als Basis benutzen, wenn es sich um eins dreht: Wartung und Wartbarkeit.

Aleta säubert ihr Königreich wie eine gute Hausfrau.

Abbildung: Wartung eines Königreichs, politisch weniger korrekt als die einer Code-Basis. (Copyright King Features Syndicate, Inc., vertrieben durch Bulls.)

Im Folgenden werden die Begriffe »Wartung« und »Wartbarkeit« frei verwendet. Wie zu vermuten ist, bezieht sich »Wartung« auf den Akt des Wartens, »Wartbarkeit« auf den Grad der Einfachheit (oder die Möglichkeit), Code zu warten. Dazu gilt: Ausnahmen bestätigen die Regel. Manchmal kommt es auf Projekt und Situation an, und persönlich pflichte ich nicht jeder Aussage bei. Zuletzt: Das Ergebnis beinhaltet mehr als 200 Punkte und Ressourcen, und dennoch nicht genug.

Inhalt

  1. Die 9 Säulen der Wartbarkeit
    1. Haben Sie ein klares Bild von Wartung
    2. Planen Sie
    3. Machen Sie’s selbst
    4. »Keep It Simple«
    5. Halten Sie sich an Standards und empfohlene Vorgehensweisen
    6. Verwenden Sie Prozesse
    7. Kennen und gebrauchen Sie Ihre Werkzeuge
    8. Dokumentieren Sie
    9. ĂśberprĂĽfen Sie
  2. Ressourcen
    1. Artikel &c.
    2. Magazine &c.
    3. Leute
    4. Firmen und Organisationen
    5. BĂĽcher
    6. Veranstaltungen

Die 9 Säulen der Wartbarkeit

Es gibt grob neun Aspekte zu Wartung und Wartbarkeit.

Für den Markup-Fachmann: Alle Punkte wurden in Satz- und Absatzform wiedergegeben, um ihnen Gewicht zu geben. Wie andere Beiträge auf dieser Website wird auch dieser Beitrag aktualisiert und vielleicht noch durch Beispiele ergänzt, um ihn auf längere Sicht relevant zu halten.

Haben Sie ein klares Bild von Wartung

Verstehen Sie den Wert von Wartbarkeit und Wartung.

Haben Sie das groĂźe Ganze im Blick (und vermeiden Sie, durch Details abgelenkt zu werden).

Vermeiden Sie unnötige Änderungen. »Veränderungen sind unvermeidbar, und dennoch gibt es Veränderungen, die vermeidbar sind.« (Dies ist eine alte Idee.)

Adaptieren oder definieren Sie allgemeine Verantwortungsverhältnisse. Vermeiden Sie, dass Außenseiter dazwischenfunken.

Stellen Sie ein Wartungsbudget bereit.

Stellen Sie sicher, Wartungskompetenz und -erfahrung aufzubauen und einzustellen.

Definieren Sie Prozesse und Abläufe.

Bieten Sie Motivation und Anreize, zu warten.

Machen Sie Wartung zur Priorität.

Vermeiden Sie »Urknall«-Wartung, wenn alles zur selben Zeit aktualisiert werden muss.

Setzen Sie klare Wartungsziele und -vorgaben.

Achten Sie auf überhöhte Langsamkeit (wenn »das Ändern der Richtung ewig dauert, sich zu verfestigen, was sich dann auf vielen Ebenen in partiellen Änderungen manifestiert – aka Lavafluss«).

Bestimmen und delegieren Sie Wartungsverantwortlichkeiten. Vermeiden sie unklare Verantwortlichkeiten. Vermeiden Sie »zuviele Köche«. Ordnen Sie nicht engagierte Inhaltseigner neu zu.

Rotieren Sie das Team (ĂĽber die Code-Basis).

Tragen Sie sich Erinnerungen ein (fĂĽr Aktualisierungen und Wartung).

Prokrastinieren Sie nicht.

Revidieren Sie wenn möglich.

Seien Sie klug – aber nicht zu klug.

Wenn nötig, erzwingen Sie Wartung.

Planen Sie

Verstehen Sie Organisation und Projekte. Verinnerlichen Sie Mission und Zweck. Durchdringen Sie BedĂĽrfnisse und Notwendigkeiten.

Kennen Sie alle Prioritäten.

Konzentrieren Sie sich. Vermeiden Sie Explosionen von Skopus und Funktionalität.

Hüten Sie sich vor den Erwartungen der falschen Leute – zum Beispiel den HTML-Kenntnisse von Nutzern oder CMS-Redakteuren.

Strukturen Sie die Arbeit; vermeiden Sie Chaos und Unorganisation.

Definieren Sie Website-Konzepte und -Ziele.

Achten Sie auf eine gute Balance.

Berücksichtigen Sie die Lebensspanne jedes Projekts. Denken Sie an die Zukunft: »Wie kann ich dies so schreiben, das ein Entwickler dies auch in fünf Jahren noch versteht?«

Erstellen Sie Pflege- und Wartungspläne.

Gestehen Sie ausreichend Zeit fĂĽr Wartung zu.

Arbeiten Sie technische Schulden ab.

Sprechen Sie von vornherein ĂĽber die Wartung von Funktionen.

Stellen Sie sich auf Komplexität ein.

Bereiten Sie sich auf Alterungsprobleme vor (»je reifer ein Projekt wird, desto größer werden die Probleme, die durch schlechte [oder] nicht mehr angemessene Entscheidungen verursacht wurden«).

Machen Sie’s selbst

Vermeiden Sie Outsourcing (»[…] und vom internen Team zu erwarten, einfach so zu wissen, wie man die wachsende Sammlung von Skopusverformung und Abkürzungennehmen […] davon abhält, Feuer zu fangen und niederzubrennen«).

Schreiben Sie Code wenn möglich neu – oder schneiden Sie zu.

Vermeiden (»wenn etwas selbst entwickelt werden kann, entwickeln Sie es«) oder machen Sie minimalen Gebrauch von Plugins und »Boilerplates«.

Beschränken Sie den Gebrauch von Drittwerkzeugen (um Support- und Sicherheitsprobleme zu vermeiden).

Vermeiden Sie, Drittwerkzeuge (zu stark) anzupassen.

Aber: Improvisieren Sie nicht; vermeiden Sie, dass temporäre Fixes permanent werden.

»Keep It Simple«

Gebrauchen Sie nur, was absolut notwendig ist.

Bevorzugen Sie Einfachheit, nicht Flexibilität. (Benutzen Sie Ihr eigenes Urteilsvermögen.)

Vermeiden Sie übereifriges, »pixel-perfektes« Design (und entsprechend viel CSS).

Seien Sie klar und konsistent.

Vermeiden Sie Text- und Code-Exzesse.

Vermeiden Sie Wiederholung.

Achten Sie auf Ausnahmen und Sonderfälle (wie zum Beispiel CMS-Eingabemöglichkeiten für Spezial-Markup). Aber: Vermeiden Sie verfrühte Konsolidierung und Abstraktion (nur »wenn Sie zumindest drei oder vier Anwendungsfälle haben«, da »eine schlechte Abstraktion viel schwerer zu warten ist als keine Abstraktion«).

Schreiben Sie menschenlesbaren Code, gebrauchen Sie dann einen Build-Schritt, um ihn zu optimieren.

Halten Sie sich an Standards und empfohlene Vorgehensweisen

Arbeiten Sie diszipliniert. Seien Sie nicht nachlässig.

Seien Sie nicht zu pragmatisch. Nehmen Sie nicht immer den leichtesten Weg. Vermeiden Sie Programmieren à la »Kopieren und Einfügen«. Vermeiden Sie »Aktualisieren durch Anhängen«. Vermeiden Sie kurzfristige Fixes.

Seien Sie konsistent.

Beschränken Sie Abhängigkeiten auf ein Minimum, und vermeiden Sie ganz besonders komplexe und versteckte Abhängigkeiten. Vermeiden Sie enge Code-Kopplung.

Verwenden Sie (und zerlegen Sie Websites in) wiederverwendbare Komponenten und Module.

Strukturieren Sie Code. Halten Sie Strukturen beschreibend: Verwenden Sie nützliche Nomenklaturen und Namensschemata, verlinken Sie nur ein Stylesheet und Skript, gebrauchen Sie funktionale oder generische Stylesheet- und Skriptnamen. »Nesten« Sie HTML vernünftig; spezifizieren Sie keine Medientypen im Markup.

Halten Sie Logik so sauber wie möglich (vermeiden Sie zum Beispiel verschachtelte ifs).

Trennen Sie Belange und »Concerns« (besonders CSS von JavaScript). Verwenden Sie kein »inline« CSS oder JavaScript.

Seien Sie sich in CSS der Implikationen von weitreichenden Selektoren bewusst.

Verwenden Sie normalisierte Datenbanken (»Datenbanken zu verwenden, in denen Sie Daten leicht einfügen/aktualisieren können, anstatt Code anzupassen, bedeutet, dass Sie später keinen Code anpassen müssen«).

Machen Sie von einem einseitigen Datenfluss Gebrauch (anstatt globale Zustände zu verändern).

Seien Sie sich »unsichtbarer« Konventionen und Standards bewusst (zum Beispiel mit WCAG).

Verwenden Sie Code-Konventionen (Styleguide) und -Richtlinien (Code-Konsistenz). Verwenden Sie konsistente EinrĂĽckung und Schachtelung.

Verwenden Sie Namenskonventionen.

Vermeiden Sie in JavaScript lange Funktionen und gebrauchen Sie statt dessen kurze mit wenigen Parametern.

Wissen Sie in CSS, wann !important zu gebrauchen ist.

Seien Sie vorsichtig mit globalen Event-Listenern und Selektoren.

Befolgen Sie professionelle Standards und Praktiken. Wenden Sie das Single-Responsibility-Prinzip an. Verfolgen Sie testgetriebene Entwicklung. Bevorzugen Sie objektorientierte Programmierung. Verwenden Sie PHP-Standard-Empfehlungen. Arbeiten Sie mit Namensräumen. Gebrauchen Sie »Immediately-Invoked Function Expressions« (IIFE).

Wiederholen Sie sich nicht.

Schreiben Sie HTML gemäß seiner Bedeutung.

Bereinigen Sie CSS und JavaScript.

Verwenden Sie dieselben Prinzipien über Projekte hinaus (»so dass es leicht ist, zwischen ihnen zu wechseln«).

Machen Sie Backups.

Halten Sie Inventur.

Benutzen Sie die Pfadfinder-Regel (à la, nach Robert C. Martin, »hinterlassen Sie alles besser, als sie es vorgefunden haben« und »übergeben Sie ein Modul immer sauberer, als Sie es geladen haben«).

Vermeiden Sie »geheimnisvollen« Code (»Entwickler, die es absichtlich schwer machen, ihre Arbeit zu verstehen, vielleicht in der Annahme, dass sie das unverzichtbar macht«).

Verwenden Sie Prozesse

Kommunizieren Sie, besonders während der Designphase (»das größte Hindernis für Wartbarkeit […] ist, das Argument gewinnen zu wollen, dass technische Schuld &c. so wichtig wie die Entwicklung neuer Features ist«).

Setzen Sie kontinuierliche Integration ein.

Etablieren Sie Prinzipien und Standards, und setzen Sie diese durch (wie in »seien Sie sorgsam mit dem, was Sie hinzufügen und großzügig bei dem, was Sie wegnehmen«).

Etablieren Sie Routinen.

Entwickeln Sie im Tandem.

Organisieren Sie Code so, als ob er unter öffentlicher Aufsicht und Kritik stände (wie ein Open-Source-Projekt).

Setzen Sie agile und Scrum-Methoden ein.

Testen Sie (auf Regressionen), aber vermeiden Sie unvernünftige Testanforderungen. Achten Sie auf kritische Geräte.

Setzen Sie Wartungs- und Aktualisierungsroutinen auf, und folgen Sie diesen.

Automatieren Sie.

Kennen und gebrauchen Sie Ihre Werkzeuge

Verwenden Sie Qualitätswerkzeuge.

Setzen Sie Technologie von der Stange ein (zum leichter Start und für bessere Hilfe). Aber, benutzen Sie nur gut unterstützte Software; vermeiden Sie exotische, esoterische, undokumentierte Werkzeuge und Methoden; hängen Sie sich nicht zu sehr an Drittwerkzeuge; vermeiden Sie neue Technologien um neuer Technologien Willen.

Verwenden Sie ein System zur Versionsverwaltung.

Verwenden Sie ein Content-Management-System (CMS).

Verwenden Sie ein JavaScript-Framework (um fokussiert zu bleiben und Anti-Patterns zu vermeiden). Ziehen Sie dazu wiederverwendbare Bibliotheken heran, die leicht erweiterbar sind.

Machen Sie von einem komponentenbasierten System Gebrauch. Kombinieren Sie Skripte und Stylesheets 1:1.

Verwenden Sie einen Präprozessor (wie Sass or LESS).

Verwenden Sie einen Paketmanager (der veraltete Pakete anzeigen kann) und Paketverwaltungswerkzeuge.

Verwenden Sie Build-Tools (um zu automatisieren).

Verwenden Sie ein Werkzeug zur Verwaltung von Abhängigkeiten.

Verwenden Sie eine Pattern-Bibliothek mit Grid- und Schriftensystem fĂĽr Code- und Design-Patterns.

Verwenden Sie Vorlagen (Templates).

Vermeiden Sie Abhängigkeit von Systemen, die keine Vorschau- oder Testumgebung bieten.

Verstehen Sie Ihre Werkzeuge. Bleiben Sie bezüglich Änderungen auf dem Laufenden (»das beste Werkzeug ist oftmals das, was Sie in der Hand halten«).

Verstehen Sie die Systemarchitektur.

Deaktivieren Sie (unbenötigte) Funktionen.

Aktualisieren Sie, regelmäßig.

Deaktivieren Sie unbenutzte und ungewartete Drittwerkzeuge.

Benutzen Sie hin und wieder gar keine Werkzeuge.

Dokumentieren Sie

Sprechen Sie darĂĽber, was warum gemacht wird.

Dokumentieren Sie, detailliert und verständlich, »in-line« und »in-file«. Dokumentieren Sie die Architektur; Arbeiten und vorhergegangene Arbeiten; Aktualisierungen und Versionen; Entscheidungen; Standardabläufe.

Kommentieren Sie Code (»hinterlassen Sie kleine Notizen für ›Sie selbst [und Ihre Kollegen] in der Zukunft‹«).

Verweisen Sie auf offizielle Dokumentation.

ĂśberprĂĽfen Sie

Konzentrieren Sie sich auf Qualität.

Betreiben Sie angemessene Code-Hygiene.

Sehen Sie allen Code gegen.

Loggen Sie.

Überwachen Sie. Überwachen Sie die ganze Code-Basis, insbesondere unbenutzten Code (Code Rot). Überwachen Sie Performance. Überwachen Sie Werkzeuge, und vermeiden Sie Werkzeuge, die nicht benötigt werden. Überwachen Sie alles. (Dies ist nicht im Sinne von Benutzerüberwachung zu verstehen.)

Auditieren Sie regelmäßig. Lassen Sie Qualitätstests laufen. Nehmen Sie Proben, um Qualitätsprobleme zu finden. Prüfen Sie auf nicht funktionierende Links. Auditieren Sie alles.

Ressourcen

Besondere Ressourcen, die in der ursprünglichen Wartbarkeitsumfrage erwähnt wurden. (Die Originaltitel wurden beibehalten.)

Artikel &c.

Magazine &c.

Leute

Firmen und Organisationen

BĂĽcher

Veranstaltungen

Mit groĂźem Dank an alle Teilnehmer der Umfrage.

War dies nützlich oder interessant? Teile (toote) diesen Beitrag, oder lad mich vielleicht auf einen Kaffee ein. Danke!

Ăśber mich

Jens Oliver Meiert, am 30. September 2021.

Ich bin Jens, und ich bin ein Engineering Lead und Autor. Ich habe als technischer Leiter für Firmen wie Google und als Engineering Manager für Firmen wie Miro gearbeitet, bin W3C und WHATWG verbunden und schreibe und prüfe Fachbücher für O’Reilly und Frontend Dogma.

Mit meinem aktuellen Umzug nach Spanien bin ich offen für eine neue Führungsposition im Frontend-Bereich. Beachte und empfehle gerne meinen Lebenslauf oder mein LinkedIn-Profil.

Ich experimentiere gerne, nicht nur in der Webentwicklung, sondern auch in anderen Bereichen wie der Philosophie. Hier auf meiert.com teile ich einige meiner Ansichten und Erfahrungen.