2019-12-12 6 Minuten

Ich habe 8 Stunden nach 1 Cent gesucht (bis jetzt)

Achtung, dieser Blogpost ist nichts für schwache Nerven.

Es gibt Dinge, die sind allen Personen in einer Branche klar, aber für jede externe Person unmöglich schwer zu verstehen.

Zum Beispiel, dass ich einmal 4 Stunden gebraucht habe, um in einer Tabelle in einer Applikation eine (In Zahlen: 1) Spalte hinzuzufügen.

Jeder Programmierer hat hier eine Geschichte, die genau so absurd klingt. Alle Anderen verstehen nicht, warum. Damals lag es daran, dass ich im Konzern eine – ich nenne es inzwischen Sackgassen-Technologie – verwendet habe. Die war so neu, dass mein Rechner sie nicht einmal geschafft. 15 Minuten Wartezeit, bis ich meine Änderungen testen konnte, waren keine Seltenheit.

Ein Sackgassen-Skill ist ein Skill, den du nirgends außerhalb deiner aktuellen Anstellung anwenden kannst. Ich habe die Technologie seit damals nicht einmal irgendwo gesehen. Hätte ich damals lieber etwas Sinnvolles gelernt.

Aber Vorsicht: Diese Skills finden sich überall. Aus meiner Sicht nur Zeitverschwendung, die zu lernen.

Und so passiert’s dann auch einmal, dass man – bis auf allen Ebenen die Änderung implementiert ist – 4 Stunden auf so einem Task hat.

Es ist so interessant:

  • In 8 Stunden kann ich ein komplettes neues Feature programmieren.
  • Ich kann aber auch 8 Stunden nach 1 Cent suchen

Die Parallelen zum Projektmanagement sind klar erkennbar.

Wie du vielleicht schon ahnst, ist die Geschichte mit dem Cent kein fiktives Beispiel. Wenn ich in den nächsten Absätzen ein wenig ausfällig werde: Entschuldigung.

Eine einfache Rechnung

Es ist eigentlich eine simple Rechnung:

  • 45 Euro kostet das Produkt
  • 10 Euro Rabatt
  • 5 Euro Shipping

Na? Was ist das Ergebnis?

Richtig: 40 Euro und 1 Cent.

Das war der Fehlerreport, mit dem ich konfrontiert war. 1 Cent zu viel auf der Rechnung, und im System.

Ich so:

Und die Buchhaltung des Kunden so:

Na gut. Das klingt schon nach einem super interessanten Bug. Not. Aber ich versteh schon. Kann man nicht bringen, da einfach einen Cent mehr drin zu haben.

Wo kämen wir denn da hin!?

Das kann ich dir schon sagen, wo wir hinkämen:

Absolutes Chaos.

Das ist es doch, was uns Menschen von den Tieren unterscheidet? Ordnung. Kontrolle. Eine gesellschaftliche Struktur. Dass auf der Rechnung nicht zufällig 1 Cent mehr steht.

Debugging

Aber tatsächlich macht mich der Fehler natürlich unrund. Ich als Endkunde würde so etwas auch komisch finden. Ich beginne also, den Fehler zu suchen.

In meinem Kopf bildet sich bereits eine Schätzung: in einer Stunde sollte das erledigt sein. Rein, Fehler fixen, raus. Ich lächle gerade über meine Naivität.

Schritt für Schritt versuche ich nachzuvollziehen, wie der Fehler entstehen kann. Dabei beginne ich natürlich bei meinem eigenen Programmcode. Na klar, den Fehler vermutet man zuerst einmal bei sich.

Schließlich verwenden wir eine extrem bekannte Shoplösung (WooCommerce) – da ist die Wahrscheinlichkeit einfach höher, dass dieses Problem ein Fuck-Up von uns ist.

Irgendwie merke ich aber bald, dass wir an keiner Stelle in die Berechnung von Summen, Steuern oder Gutscheinen eingreifen.

Meine Suche verschiebt sich in den Quellcode der Shoplösung, die ich nicht selbst programmiert habe.

Es sieht nicht gut aus: Selbst wenn ich den Fehler finde, ich werde unter keinen Umständen in ein System eingreifen, das so als Ganzes ausgeliefert wird. Warum? Ich habe keine Ahnung von der Materie. Jede Änderung, die ich mache, hat sehr wahrscheinlich hundert Sideffects.

Meine Versuche, den Fehler zu finden, machen trotzdem Fortschritte.

Es gibt nichts komplexeres, als Zahlen zu Runden

Ich finde heraus, dass der Cent entsteht, weil das System ein wenig… eigenartig rundet.

Und was ich noch herausfinde: Der Fehler entsteht erst, wenn eine Bestellung 1 Mal gespeichert wird. Ist sie neu im System, passt alles. Sobald ein User im System ein Mal auf “Aktualisieren” klickt, wird der Cent erschaffen.

So. Das einzige Problem: Damit die Bestellung überhaupt abgeschlossen werden kann, muss sie ja aktualisiert werden.

Mein Vertrauen in das System ist aber immer noch so hoch, dass ich das Problem versuche, zu isolieren. Vielleicht liegt es an irgendeiner Konfiguration, die wir gemacht haben?

Ich installiere ein komplett neues WordPress mit der Shoplösung, in der Hoffnung…

Gute Frage… mit welcher Hoffnung eigentlich?

  • Das der Fehler trotzdem auftritt, und ich Schuld dem System geben kann?
  • Dass der Fehler nicht auftritt, und ich so endlich das Problem insgesamt lösen kann?

Schau, was dann passiert ist (Achtung, dieses Video ist nichts für schwache Nerven!):

Ich freue mich. Der Fehler liegt nicht bei uns. Ich freue mich aber auch nicht. Weil irgendjemand muss den Shopbetreibern erklären, dass wir keine sinnvolle und einfach zu implementierende Option haben, diesen Fehler zu fixen, bis ein Update unserer Shoplösung kommt.

Internet to the rescue

Im Github (eine Versionierungs -und Teamsoftware für Developer) des Projektes finde ich schnell einige Diskussionen, wo Developer meines, oder ein ähnliches Problem haben.

Fun Fact: Die Fehler begannen mit einem Eintrag, der da lautet: „Kleine Verbesserungen beim Runden“. Kenne ich. Da willst du nur eine kleine Änderung machen, und plötzlich hast du die Büchse der Pandora geöffnet. Ein Klassiker.

Aber ich finde sogar eine kurzfristige Lösung: Gepostet vor 2 Stunden.

Ich probiere sie, und es funktioniert.

Die Lösung ist, vor der Berechnung der Summen die Rundung auf 4 Kommastellen umzustellen, und nach der Berechnung sie wieder auf 2 zu resetten.

So ist die Berechnung präzise, und im Shop werden trotzdem nur die 2 Kommastellen verwendet. Wenn du dir jetzt ans Hirn greifst: Zurecht.

An diesem Punkt realisiere ich 3 Dinge:

  1. Das Problem wird nicht so schnell verschwinden
  2. Steuersätze, Rabatte und Shipping sind ein paar der komplexesten Dinge, die man so berechnen kann.
  3. Wie zur Hölle kann eine so weit verbreitete Shoplösung so eine miese Implementierung der Summenberechnung haben? Ich meine, YOU HAD ONE JOB. Zwei verschiedene Berechnungsvarianten von ein und dem selben Ding. Was kann denn schon schief gehen?
Ich, bei der Fehlersuche

 

Na gut. Auf jeden Fall implementiere ich die “Lösung”. Ein paar Tage funktioniert’s, und dann tritt das nächste Problem auf.

Zum Glück ist der Bug Report inzwischen auf Github schon mit “bereits gelöst” vermerkt. Er wird in der nächsten Version enthalten sein.

Technologierisiko

Das ist eine der Situationen, die einfach für alle unzufriedenstellend ist. Und die sehr gut zeigt, mit welchem – entschuldige das Wort – Bullshit man sich als Programmierer oft herumschlagen muss.

Bin ich unzufrieden? Fuck yeah.

Habe ich viel zu viele Stunden investiert, die ich nie wieder kriegen werde? Jup.

Würde ich den Shop wieder so programmieren? 100%. Für diesen Kunden ist WordPress/WooCommerce die beste Lösung.

Inzwischen gibt es die Testversion der neuen Version, die funktionieren sollte. Ich habe sie bereits installiert, es sieht schlecht aus.

To be continued. 8 Stunden and counting…

Aber damit ich nicht so alleine bin mit diesem Problem: Wo ist dir so etwas schon einmal passiert? Gibt es solche Situationen in deiner Profession auch? Kommentiere unten, lass uns eine Selbsthilfegruppe machen! ⬇️

Von Hackern, Wordpress, SEO & Co

  • Wo kommt mein Spam her?
  • Wie leicht ist es, eine Wordpress Seite zu hacken?
  • Wie Umzugsfirmen ihre Gaunereien mit SEO umsetzen

...wöchentlich in deiner Inbox! 🚀

2 Kommentare

  1. Hallo Martin!
    Herzerwärmend, ich bin den selben Weg gegangen 😀
    Bei unserem Kunden wurde das Problem dann gelöst durch deaktivieren der Option
    „Steuern auf der Ebene der Zwischensumme runden, statt pro Position zu runden“ bei Einstellungen > Mehrwertsteuer.
    Dennoch ist das ein ziemlich unnädiger Bug, der hoffentlich bald gelöst wird, des kaus jo ned sei…!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.