Fünfhundertzehn

Neulich meldete sich ein Kunde, für den ich einmal ein paar Progrämmchen geschrieben hatte, ganz aufgeregt bei mir. Einige Funktionen an diesen Programmen funktionierten plötzlich nicht mehr.

Eigentlich beschränke ich meine Arbeit derzeit fast ausschließlich auf die Leitung der IT-Abteilung, und nehme keine eigenen Aufträge an. Aber dies war ein Fall für Support oder Maintenance.

Es stellte sich heraus, dass bestimmte Webdienste eines dritten Anbieters, die ich eingebunden hatte, nicht mehr verfügbar waren. Nach einigen Recherchen erfuhr ich, dass sich die Internetadresse schlicht und einfach geändert hatte.
Ich hatte die URL damals zwar nicht hardcodiert, sondern konfigurierbar angelegt. Aber es gab auch keine Nutzerschnittstelle (war dem Kunden damals zu teuer gewesen), mit der der Kunde die URL leicht hätte selbst ändern können.

Wir kamen überein, dass es am einfachsten und schnellsten wäre, wenn ich persönlich beim Kunden (der etwa eine Bahnstunde entfernt von hier seinen Sitz hat) vorbeikäme, um dort direkt händisch in einigen Dateien und an entsprechenden Registrystellen die Änderungen vorzunehmen.
Also verbrachte ich den gestrigen Tag größtenteils bei diesem Kunden. Meine Termine bei Novosyx konnte ich verschieben, bzw. ausfallen lassen. Ich konnte die Anpassungen ziemlich straightforward und ohne größere Probleme durchführen. Es ist halt immer wieder lästig, zu warten, bis der zuständige Admin gnädig genug ist, einem die nötigen Rechte zuzuteilen.

Wie auch immer, die ganze Aktion ist für den Kunden natürlich nicht billig. So überlegt er jetzt, ob er den Programmen nicht doch noch eine Benutzerschnittstelle für die Konfiguration spendieren soll. Soll er sich mit dem Überlegen ruhig Zeit lassen. Derzeit kann ich das höchstens mit niedrigster Priorität annehmen, also als Auftrag, an dem ich nur arbeite, wenn ich nichts dringenderes zu tun habe.

Es gibt immer wieder Fälle, in denen Dritthersteller Änderungen an Betriebssystem, Compiler, Libraries, APIs, sonstige Schnittstellen, oder wie hier Internetadresse, etc. machen, und dann funktioniert irgendetwas nicht mehr so, wie ursprünglich, ohne dass man selbst als Softwareentwickler irgendeine Änderung gemacht hätte. So etwas ist absolut ärgerlich. Die Rückwärtskompatibilität mit älteren Produkten sollte eigentlich erhalten bleiben.
(OK, ich weiß selbst, dass es Fälle geben kann, in denen das aus wichtigen und einsehbaren Gründen nicht möglich ist. Aber dann sollten die Hersteller das zumindest rechtzeitig und so deutlich wie möglich an ihre Kunden und Anwender kommunizieren, einschließlich Vorschlägen, wie sich die Software mit dem niedrigst möglichen Aufwand umstellen lässt.)
Noch ärgerlicher ist es allerdings, wenn man zeitgleich durchaus Änderungen an seinen Sourcen vorgenommen hat. Wenn etwas dann nicht wie erwartet funktioniert, nimmt man zuerst an, dass der Fehler selbstverschuldet ist, und sucht erst mal da, bis man irgendwann – meist mittlerweile völlig entnervt – auf die Änderungen des Drittanbieters stößt.
So ähnlich ist es mir vor einiger Zeit zum Beispiel bei der Änderung der Twitter-API ergangen, als meine Tweets plötzlich nicht mehr eingebunden waren. Bei meinem Blog war mir das ja noch fast egal, aber bei meiner geschäftlichen Website trat das Problem auch auf.
Da ich an meiner Website allerdings an dieser Stelle länger nichts geändert hatte, fand ich ziemlich schnell heraus, dass das Problem bei Twitter lag, und konnte dann nach der neuen API (nicht ohne diverse Probleme, aber letzendlich doch) meine Timeline einbetten.

Über Anne Nühm (breakpoint)

Die Programmierschlampe.
Dieser Beitrag wurde unter Uncategorized abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

4 Antworten zu Fünfhundertzehn

  1. engywuck schreibt:

    und da regen sich die Leute auf, wenn Linus darauf besteht, dass Änderungen am Kernel rückgängig gemacht werden, die auch nur ein Programm „kaputtmachen“ – egal wie „schön“ der neue Code ist.

    Microsoft schleppt auch schon Jahrzehnte Schnittstellen mit sich rum, die *eigentlich* nicht mehr benötigt würden und mit einem Recompile behoben werden könnten – teilweise auch Dinge, die immer als „internal“ deklariert waren. Aber wenn mit dem neuen Betriebssystem auf einmal Altprogramme nicht mehr funktionieren verkauft sich so ein Betriebssystem halt schlechter…

    Dass Schnittstellen extrem volatil sind ist je erst mit dem Internet so richtig aufgekommen – oder täuscht da meine Wahrnehmung?

    Like

    • breakpoint schreibt:

      Es ist auch erstaunlich, dass MS auch unter 64bit noch 32bit-Anwendungen unterstützt. 16bit dagegen läuft nicht mehr (aber wozu gibt es VMs?)

      Änderungen von Schnittstellen sind halt immer ärgerlich, ganz egal ob Betriebssystem, Internet, oder was auch immer, und manchmal muss man sich eben damit rumschlagen.

      Like

      • engywuck schreibt:

        Dass Windows unter 64bit keine 16bit-Anwendungen unterstützt liegt letztlich an AMD. Die haben damals bei der Entwicklung des „amd64“ entschieden, dass vom 64-bit mode („long mode“) aus der „real mode“ der 16-bitter nicht mehr verfügbar ist. Insbesondere ist damit der „virtual 8086 mode“ nicht mehr verfügbar – und genau den benutzt Windows für 16-bit unter Win-32bit.

        Theoretisch würden wohl reine 16-bit protected mode Programme laufen, aber erstens wäre das verwirrend und zweitens sind mir keine bekannt 🙂

        Somit wäre ein komplettes Emulations-layer nötig, das volle Umsetzung aller möglichen 16-bit Programme durchführt. Und das nur wegen einigen legacy-Anwendungen (OK, auch bei uns in der Firma waren noch welche im Einsatz — z.B. ein Entfernungsrechner für den Versand mit Streckenkilometern von 1992…). Allerdings hätten dann auch alle 16-bit-Spiele unterstützt werden müssen, und gerade die Spieleprogrammierer waren manchmal recht „kreativ“, was die Verwendung von Opcodes und den Zugriff auf Systemgeräte anging.
        Dann doch besser komplett streichen und das kommunizieren als „wir ham da was reingebastelt, aber es kann seltsame unvorhersagbare Fehler zeigen“

        Like

  2. Pingback: breakpoint’s Wayback Archive #27 //1841 | breakpoint

Hinterlasse einen Kommentar