Programmiersprachen für Einsteiger
Python, Java oder C++: Welche Sprache zum Einstieg passt und was objektorientierte Programmierung bedeutet.
Gute Software entsteht selten durch clevere Einzellösungen, sondern durch Entscheidungen, die auch in zwei Jahren noch nachvollziehbar sind.
Python, Java oder C++: Welche Sprache zum Einstieg passt und was objektorientierte Programmierung bedeutet.
Black-Box gegen White-Box, Teststufen, testgetriebene Entwicklung und sinnvolle Automatisierung.
Wie aus einer Änderung im Repository eine geprüfte Auslieferung wird.
Wann Eigenentwicklung sinnvoll ist und wann eine fertige Lösung die bessere Wahl bleibt.
Lizenzen, Sicherheit und die Frage, was quelloffene Software im Unternehmen wirklich kostet.
Eine Schnittstelle ist ein Versprechen an alle, die sie nutzen. Anders als interner Code lässt sie sich nicht beliebig ändern, sobald jemand darauf aufbaut. Deshalb lohnt sich hier Sorgfalt am meisten.
Bewährte Grundsätze: eindeutige, vorhersagbare Benennung; klare Fehlermeldungen, die den Grund nennen und nicht nur einen Zustandscode; Versionierung von Anfang an, damit Änderungen möglich bleiben; und Rückwärtskompatibilität als Standardfall. Neue Felder hinzuzufügen ist unproblematisch, bestehende umzubenennen bricht jeden bestehenden Aufruf.
Eine oft übersehene Frage ist die Behandlung großer Ergebnismengen. Eine Abfrage, die heute zwanzig Einträge liefert, liefert in zwei Jahren womöglich zwanzigtausend. Seitenweise Ausgabe von Beginn an erspart einen späteren, unangenehmen Umbau.
Die häufigste Ursache langsamer Anwendungen liegt nicht im Code, sondern in der Art der Datenbankzugriffe. Zwei Muster treten besonders oft auf.
Das erste ist die wiederholte Einzelabfrage: Eine Liste wird geladen, danach folgt für jeden Eintrag eine weitere Abfrage. Bei zehn Einträgen fällt das nicht auf, bei zehntausend steht die Anwendung. Die Lösung ist das gemeinsame Laden in einer Abfrage.
Das zweite ist der fehlende Index. Ohne passenden Index muss die Datenbank die gesamte Tabelle durchsuchen. Der Abfrageplan zeigt genau das an und ist das wichtigste Diagnosewerkzeug. Zu viele Indizes bremsen allerdings jede Änderung, weshalb Indizes gezielt und nicht vorsorglich angelegt werden.
Ebenfalls hilfreich: nur die Spalten abfragen, die tatsächlich gebraucht werden, und Zusammenfassungen von der Datenbank berechnen lassen statt in der Anwendung.
Agile Vorgehensweisen beruhen auf einer einfachen Beobachtung: Anforderungen ändern sich, und je später eine Fehlannahme auffällt, desto teurer ist sie. Kurze Zyklen mit lauffähigen Zwischenergebnissen liefern früher Rückmeldung.
In der Praxis geht dieser Kern häufig verloren. Übrig bleiben Rituale ohne Wirkung: tägliche Besprechungen als Statusbericht an eine Leitungsperson, Schätzungen, die zur Zielvorgabe umgedeutet werden, Rückblicke ohne Konsequenz. Die brauchbare Prüffrage lautet nicht, ob alle Zeremonien stattfinden, sondern ob das Team schneller erfährt, dass es falsch liegt.
Die Grundausstattung ist überschaubar und unabhängig von Sprache und Projektgröße: eine Entwicklungsumgebung mit gutem Verständnis für den Code, Versionskontrolle mit Git, ein automatischer Formatierer, um Stilfragen ein für alle Mal zu beenden, eine statische Analyse für typische Fehlerklassen und ein Abhängigkeitsverwalter mit Prüfung auf bekannte Schwachstellen.
Entscheidend ist weniger die Auswahl als die Verbindlichkeit: Werkzeuge, die nur einzelne Personen nutzen, verändern nichts. Erst wenn Formatierung und Prüfung automatisch in der Pipeline laufen, wirken sie.