Diese Fallstudie ist anonymisiert. Wir bauen interne Systeme, deshalb beschreiben wir die Art des Systems und warum es entstand, nicht für wen.
Die Ausgangslage
Der Kunde ist ein mittelständisches Fertigungsunternehmen. Ware kommt an, durchläuft die Produktion, wird verpackt, gelagert und an Kunden versandt. Jeder dieser Schritte wurde bereits festgehalten, allerdings auf Papierformularen, in Tabellen und in den Köpfen einiger erfahrener Leute.
Das Problem waren nicht fehlende Informationen, sondern dass die Teile nicht zusammenhingen. Der Wareneingang wusste nicht, welche Produktion das Material verbraucht hatte. Das Produktionsprotokoll wusste nicht, was die Produktion gekostet hatte. Eine einfache Frage, etwa wo eine Charge gelandet ist oder was ein Produktionsmonat wirklich gekostet hat, bedeutete, dass jemand Papiere einsammelte und das Bild von Hand zusammensetzte.
Was wir gebaut haben
Eine Webanwendung, die auf den Smartphones und Tablets läuft, die im Betrieb ohnehin vorhanden sind, dazu einen Verwaltungsbereich für die Leitung. Sie basiert auf Supabase: eine Postgres-Datenbank für die Datensätze, Authentifizierung und Rollen für die Zugriffssteuerung, Speicher für Fotos und Belege und serverseitige Funktionen für Berechnungen, die nicht im Browser laufen dürfen.
Die Anwendung deckt die Hauptabläufe ab:
- Wareneingang. Eingehende Ware wird mit Charge, Haltbarkeit, Menge und Lagerplatz erfasst, mit Fotos und Unterschrift direkt auf dem Gerät.
- Produktionsprotokolle. Jeder Lauf hält fest, was hineinging, was herauskam und was unterwegs verbraucht wurde. Ausgänge sind mit den Eingängen verknüpft, aus denen sie entstanden, sodass sich jede Charge in beide Richtungen verfolgen lässt.
- Warenausgang. Ausgehende Sendungen werden mit Kunde, Transportangaben und Unterschrift bei der Übergabe erfasst.
- Planung und Qualitätsnachweise. Schichtplanung und die routinemäßigen Prüfungen, die die Qualitätssicherung verlangt, jeweils als Dokument exportierbar.
- Produktionskosten. Das System führt die Bestandteile der Produktionskosten zusammen, sodass die Leitung die Kosten aus denselben Datensätzen sieht, die im Betrieb entstehen, statt aus einer separaten Tabelle.
Rollen bestimmen, wer was sieht. Wer im Betrieb arbeitet, bekommt die Bildschirme für seine Aufgabe und nicht mehr; die Leitung bekommt den Überblick. Formulare speichern beim Tippen, denn ein halb ausgefüllter Datensatz auf dem Tablet darf nicht durch eine abgebrochene Verbindung verloren gehen.
Wie es im Alltag funktioniert
Die Leute erfassen ihre Arbeit dort, wo sie passiert, auf dem Gerät in der Hand, statt auf Papier, das später jemand abtippt. Eine Charge lässt sich über die Verknüpfungen in den Daten von der Anlieferung bis zum Kunden verfolgen. Am Ende eines Zeitraums prüft und schließt die Leitung ihn ab, und ein abgeschlossener Zeitraum behält eine Momentaufnahme der zugrunde liegenden Werte, damit spätere Änderungen die Geschichte nicht still umschreiben.
Praktisch heißt das: Niemand tippt mehr Papierprotokolle in Tabellen ab, und Fragen, die früher einen Nachmittag Sucherei kosteten, beantwortet das System.
Was wir gelernt haben
Ein fehlender Wert darf nie wie eine Null aussehen. Jede Berechnung, die von Stammdaten abhängt, etwa von Preisen oder Sätzen, die sich mit der Zeit ändern, muss zwischen „kostet nichts“ und „wir wissen nicht, was es kostet“ unterscheiden. Behandelt ein System fehlende Daten still als null, bleiben die Zahlen plausibel und niemand merkt etwas. Wir machen fehlende Eingaben sichtbar und sperren Berechnungen, nach denen Menschen bezahlt werden, bis die Eingaben vollständig sind.
Prüfen, ob beide Hälften einer Funktion verbunden sind. Eine Eingabemaske und die Berechnung, die sie nutzen soll, können mit wachsendem System auseinanderlaufen. Bevor man annimmt, dass falsch eingegeben wird, sollte man prüfen, ob die Eingabe die Berechnung tatsächlich erreicht und ob die Hilfe in der App das System so beschreibt, wie es wirklich funktioniert.
Regeln rund ums Geld brauchen Leitplanken, nicht nur Formeln. Einstellungen, die Unsinn ergeben würden, sollten sich nicht speichern lassen, unvollständige Datensätze sollten sagen, was fehlt, und Ergebnisse, die die Bezahlung betreffen, werden nach der Bestätigung gesperrt. Solche Leitplanken entstehen meist in den ersten Monaten echter Nutzung, deshalb planen wir eine zweite Iteration ein und betrachten den Start nicht als Ende.
Für das Gerät und den Menschen bauen. Große Touch-Flächen, wenige Felder pro Bildschirm und automatisches Speichern zählen im Lager mehr als jeder optische Feinschliff.
Welche Leistung das ist
Das ist individuelle Softwareentwicklung: ein System, das sich danach richtet, wie ein bestimmtes Unternehmen annimmt, produziert und versendet, statt eines generischen Produkts, dem sich der Ablauf anpassen müsste. Wenn Ihr Betrieb auf Papierformularen und Tabellen läuft, die nicht miteinander sprechen, ist das genau die Art Problem, für die dieser Ansatz gedacht ist.