Start / Blog
Blog
Wissen aus der Praxis
Tutorials, Einordnungen und Neuigkeiten rund um unsere Seminare.
Monolith oder Microservices? Erst die Grenzen, dann die Verteilung
Microservices sind kein Synonym für moderne Architektur. Sieben Kriterien, mit denen du entscheidest, ob Monolith, modularer Monolith oder Services zu deiner Anwendung passen.
Weiterlesen →Jev oder ChatGPT, Claude und Gemini? Wann ein Modell nur entscheiden soll
Viele KI-Funktionen schreiben gar keinen Text, sondern sortieren, bewerten und leiten weiter. Sieben Kriterien, mit denen du einordnest, ob dafür fester Code, Jev oder ein LLM passt.
Weiterlesen →Terraform oder OpenTofu: Belege die Entscheidung, statt sie zu vermuten
Beide Werkzeuge stammen aus derselben Quelle, entwickeln sich aber getrennt. Warum ein leerer Plan noch kein Nachweis ist und wann der Rückweg endgültig zugeht.
Weiterlesen →Unit, Integration, Contract oder E2E? Die Menge ist die falsche Frage
Wie viele Tests welcher Art — darauf gibt es keine Antwort. Sieben Kriterien, mit denen du je Risiko entscheidest, auf welcher Ebene es zuerst zuverlässig auffällt.
Weiterlesen →Warum dein Angular-Effekt nur einmal läuft
Ein effect() liest ein Signal nach dem await — und feuert danach nie wieder. Warum das passiert und welches Mittel meistens das bessere ist.
Weiterlesen →Warum dein Forge-Beispiel aus dem Netz nicht mehr funktioniert
UI Kit gibt es in zwei Fassungen — und das Netz ist voll von der alten. Vier Merkmale, an denen du veralteten Forge-Code sofort erkennst.
Weiterlesen →Dein KI-Agent gehorcht keinen Regeln mehr — sondern Beschreibungen
In Copilot Studio wählt der Agent selbst, welchen Baustein er nutzt. Gesteuert wird er über einen Satz, den kaum jemand schreibt: was ein Baustein ausdrücklich nicht tut.
Weiterlesen →Wenn der KI-Agent einkauft: Dein Shopify-Kanal läuft schon
Agentic Storefronts sind für geeignete Shops ab Werk aktiv. Was das für deine Produktdaten heißt — und warum der Fließtext dabei zum Problem wird.
Weiterlesen →Copilot, Coding-Agent oder Workflow? Die Stufe ist kein Reifegrad
Die drei Begriffe liegen nicht auf einer Ebene. Sieben Kriterien, mit denen du entscheidest, welche Stufe zu deinen Aufgaben und deiner Codebasis passt.
Weiterlesen →Was ein KI-Agent in n8n wirklich tut
Ein Agent läuft je Anfrage mehrfach, nicht einmal — und jeder Lauf kostet. Warum das die Kostenrechnung, den Werkzeugschnitt und die Freigabe verändert.
Weiterlesen →Dreißig Monate: Was Baseline über Browserfunktionen sagt
HTML5 und CSS3 beschreiben Versionen, die es nie gab. Web Platform Baseline beantwortet die Frage, ob eine Browserfunktion einsatzreif ist, überprüfbar — und nennt dafür eine erstaunlich konkrete Zahl.
Weiterlesen →Chatbot, RAG oder KI-Agent? Die Frage steht meist falsch herum
Die drei Begriffe sind keine konkurrierenden Produkte, sondern Fähigkeiten. Sieben Kriterien, die für deinen Anwendungsfall wirklich entscheiden.
Weiterlesen →MCP ohne Sitzung: Warum jede Anfrage jetzt für sich steht
Mit der Revision 2026-07-28 verliert MCP den Handshake und die Sitzung. Was das für eigene Server bedeutet — und welche Annahme dabei am teuersten wird.
Weiterlesen →Die PromQL-Abfrage, die plausibel aussieht und falsch ist
Erst rate, dann sum — wer die Reihenfolge vertauscht, bekommt bei jedem Neustart einen Scheinausfall im Dashboard. Der Fehler wirft keine Meldung.
Weiterlesen →Spring Boot oder Quarkus? Die Frage, die kein Benchmark beantwortet
Startzeiten vergleichen ist einfach — und hilft bei der Entscheidung fast nie. Sieben Kriterien, die für deine Anwendung wirklich zählen.
Weiterlesen →SLSA Stufe 3 verlangt keine bitgleichen Builds
Zwei hartnäckige Annahmen über SLSA Build Level 3 kosten Projekte Monate: Reproduzierbarkeit sei Pflicht und der Build müsse offline laufen. Beides steht so nicht in der Spezifikation.
Weiterlesen →Die Property, die im Container nichts bewirkt
In Quarkus sind manche Konfigurationsschlüssel nach dem Build festgeschrieben. Wer sie im Deployment setzt, ändert nichts — und bekommt keine Fehlermeldung.
Weiterlesen →javax wird jakarta: der eine Sprung, der jede Datei berührt
Warum der Wechsel auf Jakarta EE 9 der teuerste Schritt der Modernisierung ist — und welche javax-Pakete dabei unbedingt stehen bleiben müssen.
Weiterlesen →Testcontainers 2: Der Import stimmt nicht mehr
Version 2 hat Artefaktnamen und Pakete umgestellt und die JUnit-4-Unterstützung gestrichen — was das für bestehende Integrationstests bedeutet.
Weiterlesen →OIDC: der Zugangsschlüssel, den niemand aufbewahren muss
Warum ein kurzlebiges Token aus der Pipeline sicherer ist als der Cloud-Schlüssel im Repository-Secret — und woran der Umstieg meistens hängt.
Weiterlesen →Additiv heißt nicht kompatibel
Ein neuer Wert in einer Aufzählung fügt nur hinzu und entfernt nichts. Trotzdem ist er für viele Consumer ein Bruch — und fällt erst in deren Produktion auf.
Weiterlesen →Die Zeile „Offen“: was ein Agent sonst für dich entscheidet
Wer offene Fragen nicht aufschreibt, bekommt sie beantwortet — nur nicht von einem Menschen. Warum die kürzeste Zeile einer Spezifikation die wichtigste ist.
Weiterlesen →Die Sandbox schützt den Rechner, nicht dein Repository
Codex kennt zwei Regler: was technisch möglich ist und wann gefragt wird. Wer nur den ersten kennt, verlässt sich auf einen Schutz, den es so nicht gibt.
Weiterlesen →Rootless-Container: Wem die Datei am Ende gehört
Ein Container ohne Administratorrechte verändert mehr als eine Zeile in der Konfiguration — sichtbar wird es am Eigentümer einer einzigen Datei.
Weiterlesen →Die Suche findet TW-4471-A statt TW-4471-B
Ähnlichkeitssuche misst Nähe, nicht Richtigkeit. Bei Teilenummern, Fehlercodes und Baujahren führt genau das zur falschen Antwort — mit Beleg.
Weiterlesen →Selbstheilende Tests: Wann der Agent reparieren darf — und wann nicht
Playwrights Healer repariert fehlgeschlagene Tests selbstständig. Das ist nützlich — und gefährlich, sobald niemand die Fehlerklasse bestimmt.
Weiterlesen →Grüne Tests, die nichts prüfen
Ein Coding-Agent schreibt in Minuten ein Testnetz für ungetesteten Bestandscode. Ob es trägt, zeigt sich erst bei der Gegenprobe.
Weiterlesen →Langsame PostgreSQL-Abfragen: Der teuerste Knoten ist selten der auffälligste
Warum eine funktionierende Abfrage trotzdem ein Problem ist — und welche Zeile im Ausführungsplan dir verrät, wo die Zeit wirklich hingeht.
Weiterlesen →Der Sprunglink, der nur scrollt
Ein Skip-Link zum Hauptinhalt ist schnell eingebaut — und funktioniert erstaunlich oft nur zur Hälfte. Der Grund ist ein einzelnes Attribut.
Weiterlesen →Spring Boot: Der Wert kommt nicht aus deiner Datei
Wenn eine Anwendung eine Einstellung ignoriert, liegt das selten am Code. Spring Boot liest Konfiguration aus vielen Quellen — und die stärkere gewinnt.
Weiterlesen →TypeScript 7: Nicht der Code entscheidet über den Migrationstermin
Du schätzt die Umstellung nach Dateien und Codezeilen — aber die Zeile, die den Termin verschiebt, steht in der package.json deiner Werkzeuge.
Weiterlesen →Tests nach dem Code: Warum sie den Fehler mit bestätigen
Ein Agent schreibt Tests zu fertigem Code — und schreibt jedes Missverständnis darin fest. Die Reihenfolge entscheidet, was am Ende geprüft wird.
Weiterlesen →Next.js 16: Aus middleware.ts wird proxy.ts — und das ist keine Kosmetik
Die Umbenennung korrigiert ein Missverständnis: Der Proxy lief nie an der Stelle, an der man ihn für Anmeldung und Rechte gebraucht hätte. Wer ihn als einzige Absicherung nutzt, hat keine.
Weiterlesen →Pinia: Warum dein Store nach dem Zerlegen aufhört, sich zu melden
Ein Pinia-Store lässt sich destrukturieren wie jedes Objekt — nur aktualisiert sich die Anzeige danach nie wieder. Kein Fehler, keine Warnung, nur eine tote Zahl auf dem Bildschirm.
Weiterlesen →N+1 in async SQLAlchemy: aus einem Performance-Problem wird ein Fehler
In synchronem Code lädt SQLAlchemy fehlende Beziehungen still nach — nur langsam. In async wirft es stattdessen eine Ausnahme. Das klingt nach Schikane und ist ein Frühwarnsystem.
Weiterlesen →Zwei Agenten, ein Ordner: warum Git-Worktrees das Problem lösen
Mehrere KI-Agenten gleichzeitig arbeiten zu lassen scheitert selten am Denken — sondern am gemeinsamen Dateisystem. Git hat dafür seit Jahren eine Antwort.
Weiterlesen →Domain Events: eine Tatsache melden, statt einen Auftrag zu erteilen
Wenn zwei Kontexte voneinander wissen müssen, hilft kein direkter Aufruf — sondern ein Ereignis, das nur sagt, was geschehen ist.
Weiterlesen →Das Monorepo entkoppelt eure Teams — beim Ausliefern nicht
Getrennte Projekte, getrennte Builds, getrennte dist-Ordner: Ein Angular-Monorepo fühlt sich unabhängig an. An einer Stelle täuscht das.
Weiterlesen →Closures: Was eine Funktion sich merkt
Warum eine Funktion Werte behält, die es eigentlich längst nicht mehr geben dürfte — und wozu das im Alltag gut ist.
Weiterlesen →Das vergessene static: wie eine innere Klasse den halben Kontext festhält
Ein einziges fehlendes Schlüsselwort bindet ein Objekt an seinen Erzeuger — mit Folgen für Speicher und Serialisierung, die erst im Betrieb auffallen.
Weiterlesen →Repository statt SQL im Code: eine Schnittstelle, die nichts von der Datenbank verrät
Wer Persistenz hinter eine Schnittstelle legt, gewinnt mehr als Austauschbarkeit — vor allem Tests, die ohne laufende Datenbank auskommen.
Weiterlesen →Server-State ist kein Client-State
Warum Daten vom Server sich nicht wie normaler Zustand verhalten — und was das für React-Anwendungen bedeutet.
Weiterlesen →WooCommerce: Die zweite Testbestellung ist die wichtigere
Zahlungsarten für den deutschen Markt auswählen, im Testmodus prüfen — und den Schritt nicht vergessen, an dem die meisten Shops Geld verlieren.
Weiterlesen →Projektvertrauen ist ein Ladeschutz, kein Sandkasten
Pi fragt beim Öffnen eines Repos nach Vertrauen. Was diese Frage absichert — und was eben nicht: der Unterschied zwischen Konfiguration laden und Dateien anfassen.
Weiterlesen →Threat Modeling: Vier Fragen vor der ersten Zeile Code
Bedrohungen findet man am Entwurf, nicht im fertigen System. Wie ein leichtgewichtiges Datenflussdiagramm und STRIDE das strukturiert machen.
Weiterlesen →ChatGPT im Unternehmen: Erst die Datenflüsse klären
Der Einsatz eines KI-Werkzeugs ist eine Entscheidung über Datenflüsse — nicht über Features. Was vor dem ersten produktiven Prompt geklärt sein sollte.
Weiterlesen →Claude Code: Was agentisches Coding im Alltag ändert
Ein Werkzeug, das die Codebasis liest, plant und Befehle ausführt — und warum der Wechsel weniger am Tippen liegt als am Kontext.
Weiterlesen →KI im Code Review: Die richtige Stufe im Ablauf
Ein Review-Bot am Pull Request ist nicht die erste Verteidigungslinie. Was vorher laufen muss — und was die KI dann tatsächlich beiträgt.
Weiterlesen →Panache: CRUD ohne den ewigen Boilerplate
Datenzugriff in Quarkus bleibt standardbasiert — JPA und Hibernate. Panache legt nur ein Muster darüber, das die immergleichen Methoden überflüssig macht.
Weiterlesen →React-Apps für Atlassian Forge: Was die Plattform abnimmt
Serverlos für Jira und Confluence entwickeln — Hosting, Auth und Datenspeicher kommen von Atlassian. Was das für den Projektaufbau bedeutet.
Weiterlesen →Reaktiv oder Virtual Threads? Eine Entscheidung pro Endpunkt
Quarkus läuft auf einer reaktiven Engine — aber du musst nicht alles reaktiv schreiben. Wann Mutiny passt und wann Virtual Threads der bessere Weg sind.
Weiterlesen →Sub-Agenten: Warum Delegieren den Kontext rettet
Recherche flutet das Kontextfenster. Sub-Agenten arbeiten in eigener Sitzung und liefern nur das Ergebnis zurück — mit spürbarer Wirkung auf lange Sitzungen.
Weiterlesen →Vitest: Tests, die sich die Vite-Config teilen
Ein Test-Runner, der dieselbe Konfiguration nutzt wie die App — und warum das mehr spart als die reine Laufzeit.
Weiterlesen →Warum Quarkus für Microservices überzeugt
Schneller Start, kleiner Speicher-Fußabdruck, Standards statt Speziallösungen — ein kurzer Blick auf die Stärken von Quarkus.
Weiterlesen →Willkommen bei Learning Master
Warum wir Entwickler-Seminare in kurze Modul-Videos zerlegen — und wie du am meisten davon hast.
Weiterlesen →