Unseren diesjährigen Sommerurlaub verbrachten wir im schönen Hundehaus am Reinhardswald. Dieses hat unter anderem den großartigen Vorteil, dass es keinerlei Netzabdeckung gibt – das heisst, kein Internet, es sei denn, man fährt 20km weiter ins nächste Dorf. So gab es also nur uns, unsere Hunde, unsere Kameras, gutes Essen und Trinken, eine märchenhafte Natur und ganz viel Zeit für die Seele.

So ein Urlaub ohne Internet ist (insbesondere für jemanden, der den hoffnungsvollen Aufstieg und späteren Niedergang des Internet live erlebt hat) was ganz Feines. Doch irgendwann hatte ich doch das Bedürfnis, ein Bild von meiner treuen Olympus Pen E-P5 auf mein iPhone zu transferieren, um es dort zu bearbeiten und (wenn wir dann mal wieder im nächsten Dorf wären) an einen guten Freund zu schicken.

Naiv wie ich bin startete ich hierzu die von Olympus bereitgestellte „Oi Share App“ und wurde dabei wieder einmal an die schmerzliche Tatsache erinnert, dass es sich bei einem ganz erschreckend hohen Anteil von Apps heutzutage um schlecht gemachte Kackscheiße handelt.

Bestandsaufnahme

Wenn Sie, lieber Leser, über 40 Jahre alt sind, dann haben Sie eventuell noch bewusst eine Zeit erlebt, in der Computerprogramme im Großen und Ganzen eine gewisse Qualität aufweisen konnten. In den letzten Jahren ist die Qualität von Computerprogrammen und hier insbesondere von „Apps“ spürbar in den Keller gegangen.

Natürlich sind die im folgenden zu analysierenden Probleme nicht nur ein Problem der Olympus-App, doch diese ist für sich gesehen ein wunderschönes Beispiel dafür, was heutzutage bei der Softwareentwicklung alles schief geht:

  1. Die App zeigt erstmal eine vollkommen sinnlose Online-Umfrage an, ohne deren Ausfüllen sie nicht gestartet werden kann (ergo: ins nächste Dorf fahren, um eine App, die dazu gedacht ist, in der großen weiten Wildnis Fotos von der Kamera aufs Fon zu übertragen, überhaupt erstmal zum Funktionieren zu kriegen)
  2. Kein einziges der User-Interface-Elemente der App hält sich an irgendwelche Standards. Der Hauptschirm scrollt nicht (diverse Untermenüs, die viel weniger anzeigen, aber schon), die Buttons sind riesig und reagieren viel zu empfindlich, die App ist immer im Night Mode, und insgesamt fühlt sich die App auf dem iPhone wie ein Fremdkörper an… als wäre sie von jemand gemacht, der nicht die leiseste Ahnung von der Plattform hat.
  3. Das alles wäre zu verschmerzen, wenn sie denn funktionieren würde. Tut sie aber nicht. Es braucht insgesamt sechs Versuche, bis die App es schafft, eine Verbindung zu meiner (10cm entfernten) Kamera aufzunehmen. War die Verbindung einmal da, so klappte das Übertragen eines Bildes von meiner (immer noch 10cm entfernten) Kamera nur jedes dritte Mal, alle anderen Versuche werden vorzeitig mit „Übertragungsfehler“ abgebrochen, in einem Fall ging die Verbindung auch schon mal komplett flöten und es brauchte eine Neuinstallation der App, um wieder mit der Kamera reden zu können.
Olympus-App: Ich habe aus Versehen das „Tutorial“ angewählt (weil der Hauptschirm nicht scrollt), dann links oben auf „Schließen“ getippt und bekomme im Anschluss diesen Dialog angezeigt. Wer so etwas verbricht, hat von Apps keine Ahnung. Aber jede Wette, in irgendeinem Meeting fiel der Satz: „Der Kunde will das so!“

Wie gesagt, es wäre jetzt ein leichtes, über Olympus herzuziehen und zu mutmaßen, die konnten sich einfach keine vernünftige App leisten und hätten halt jemand fragen sollen, der sich damit auskennt. Aber das Problem ist: gefühlte 80% aller Apps haben mittlerweile ähnliche Probleme, Tendenz steigend.

Da stellt sich die Frage: Was ist da los? Hätten die alle jemand fragen sollen, der sich damit auskennt? Gibt es vielleicht überhaupt niemanden, der sich damit auskennt?

Und die Antwort ist leider: Doch, es gibt sie noch, die Leute, die sich damit auskennen. Aber die haben schon lange nichts mehr zu sagen.

Wie konnte es dazu kommen?

Um diese Frage vernünftig beantworten zu können, lade ich Sie, lieber Leser, zu einem kleinen Gedankenexperiment ein.

Stellen Sie sich einmal vor, Sie wären ein Tischlermeister.

Sie können super mit Holz umgehen, sogar wahre Kunstwerke schaffen. Sie wissen von den verschiedenen Sorten von Holz, wie sie sich bei Hitze, Kälte, und Feuchtigkeit verhalten, Sie wissen wie und mit welchen Werkzeugen man sie am besten bearbeitet, was man tun und was man lassen sollte.

Das einzige Problem ist: Sie können Ihre Gabe nicht so gut verkaufen. Sie möchten mit Holz arbeiten und nicht mit Menschen reden. Es läuft wesentlich besser für Sie, wenn andere das tun. Wenn sich jemand darum kümmert, Kunden für Sie zu finden und die Kunden so zu behandeln, wie sich die Kunden das wünschen; ihnen nicht irgendwas komisches vom Holzwurm und Douglasie und Tanne und Feuchtigkeit und Hanglage erzählt sondern einfach mit einem Lächeln klar macht, dass die Renovierung der Terrasse 50.000€ kosten wird.

Und so tun Sie sich mit jemanden zusammen, der Ihre Werke und Dienstleistungen verkauft, im Folgenden der „Verkäufer“ genannt.

Eine Zeitlang läuft es mit dem Verkäufer echt gut. Die Aufträge gehen hoch, die Umsätze sowieso. Und Ihr Verkäufer kommt nach und nach auf den Trichter, dass da noch wesentlich mehr rauszuholen ist. Und so tut er sich mit anderen Verkäufern zusammen, und es findet ein reger Erfahrungsaustausch statt, man geht auf internationale Konferenzen und ist wichtig, man redet von Effizienz und Velocity und sucht nach immer neuen Möglichkeiten, denjenigen, der die eigentliche Arbeit macht, noch gewinnbringender einzusetzen.

Natürlich entgeht Ihrem Verkäufer nicht die Ironie, dass er im Grunde genommen nicht die leiseste Ahnung von Ihrer Arbeit hat. Deshalb holt er sich Co-Verkäufer und Berater und Co-Verkäufer-Berater dazu, die alle mal irgendwie was mit Tischlern zu tun hatten, oder selbst gescheiterte Tischler sind, und die ihm Berichte darüber erstellen, was gearbeitet wurde, und wieviel Zeit dazu gebraucht wurde, und ob das nun gut oder schlecht war.

Und weil es sich für ihn mit der Zeit tatsächlich so anfühlt als wäre es die Wahrheit, behauptet Ihr Verkäufer dem Kunden gegenüber eines Tages, dass er den Tisch oder das Bett oder die Terrasse oder den Dachstuhl erschaffen hätte. Nicht Sie, sondern er. Er und seine Co-Verkäufer und Berater und Co-Verkäufer-Berater-Berater. Denn schließlich haben die ja all diese tollen Dinge herausgefunden, die Ihnen den letzten Spaß an der Arbeit nehmen Sie noch effizienter arbeiten lassen.

Zum Beispiel, dass zwei bis vier aneinander gekettete Tischler die Arbeit viel besser ausführen können als einer allein. Weil sie sich gegenseitig korrigieren wenn jemand einen Fehler macht, und weil dann niemand auf die Idee kommt, seine Arbeit einfach nicht zu machen. Hat mal irgendein Verkäufer auf einer Konferenz in Amerika gehört, also muss es ja wohl wahr sein.

Oder, dass man normale und traditionell erprobte Arbeitsweisen einfach mal über den Haufen wirft und was ganz anderes ausprobiert. Denn „über den Tellerrand schauen“ ist ganz wichtig, hat irgendjemand rausgekriegt. Und Tischler dürfen auf keinen Fall zu lange in ihrer „Komfortzone“ verbleiben, weil, äh, blätter, weil das halt so ist.

Oder dass ein Tischler sich auf keinen Fall spezialisieren darf. Wir brauchen keine meisterliche Arbeit, sondern nur jede Menge austauschbare Leute, die alles so ein bisschen aber nichts richtig können. Weil, dann, äh, kann der eine die Arbeit des anderen machen, äh, und man ist dann viel flexibler, äh ja.

Weil aber die meisten dieser tollen neuen Ideen, die unter dem wohlklingenden Namen „agiles Tischlern“ zusammengefasst werden, totaler Schwachfug sind, kommt es immer wieder zu Spannungen und Unzufriedenheiten, insbesondere bei den aneinander geketteten Tischlern. Um diesem Umstand abzuhelfen, werden neue und hoch bezahlte Spezialkräfte eingestellt, die man Tisch Master nennt, und die dafür Sorge tragen, dass alle glücklich und zufrieden sind, selbst wenn sie totalen Schwachfug machen müssen.

Eines Tages schließlich kommt ihr Verkäufer, der mittlerweile das Doppelte Ihres Gehalts verdient und eigentlich nur noch über Co-Verkäufer und Tisch Master mit Ihnen kommuniziert, zu ihnen und sagt: „Hör mal, ich hab gesehen, in China, da gibt es ganz tollen billigen Kunststoff. Von den gleichen Typen, bei denen wir auch unsere ganzen Werkzeuge kaufen. Der wird speziell angestrichen, dann sieht der aus wie Holz, den Unterschied merkt niemand. Können wir nicht das in Zukunft verwenden, statt Holz? Ich war auf einer Konferenz von denen, da gab’s ganz leckere Schnittchen, also muss das was taugen!“

Und natürlich sagen Sie: „Lieber Verkäufer, ich habe bis jetzt wirklich alles mitgemacht, was Du von mir wolltest. Aber jetzt ist die Grenze erreicht. Sag mal, merkst Du überhaupt noch was? Hast Du noch alle Tassen im Schrank? Holz ist Holz und Kunststoff ist Kunststoff, und wir machen hier was Vernünftiges. Keinen Billig-China-Kunststoff-Scheiß.“

Doch Ihr Verkäufer lässt nicht locker. Und irgendwann sagt er: „Pass auf, wir probieren das jetzt aus mit dem China-Kunststoff. Alle anderen machen das, und die sind deshalb viel billiger als wir. Wir können uns das nicht mehr leisten, mit Holz zu arbeiten. Du kannst ja gehen, wenn’s Dir nicht passt, vor der Tür stehen sie Schlange, weil, tischlern kann ja bekanntlich jeder, gerade erst stand’s wieder im SPIEGEL – ‚Kinder im Kindergarten lernen jetzt tischlern‘, oder so ähnlich…“

Tja, und plötzlich sitzen Sie da, angekettet an zwei andere Tischler, und feilen und sägen seit Wochen mit vollkommen ungeeignetem Werkzeug an einem Stück klebrigen und stinkenden Kunststoff herum, um ein Ergebnis zu erhalten, das Sie vor wenigen Jahren noch mit Holz und in Eigenregie innerhalb von drei Tagen hingekriegt hätten. Und Sie fragen sich, was eigentlich aus dem ehemals hoch angesehenen Beruf des Tischlers geworden ist, und wie Sie diesen Schwachsinn bis zur Rente durchstehen sollen.

Der Kunde aber bekommt einen wackligen Eckschrank aus Plastik, der vollkommen scheiße aussieht, sich vollkommen scheiße anfühlt und bei der ersten größeren Belastung mit einem lauten Wumms in sich zusammenstürzt. Und was das Allerschlimmste ist: Er findet das normal, denn die Zeit, in der Schränke schön waren und funktioniert haben, die hat er nie erlebt.

Ungefähr das ist es, was mit der Olympus-App passiert ist. Und mit tausenden von anderen Apps auch.

Crossplatform statt Holz

Natürlich ist es in der Realität ein wenig komplizierter. Nur ein Beispiel: Was in meiner Tischler-Geschichte das Holzimitat aus China ist, das ist in der richtigen Welt die sogenannte Crossplatform-Bibliothek und trägt Namen wie „Cordova“, „Xamarin“, „Flutter“ oder „ReactNative“.

Crossplatform-Bibliotheken wurden erfunden, um den Programmieraufwand für unterschiedliche Plattformen (in diesem Fall iOS und Android) nur einmal betreiben zu müssen. Eine App für zwei grundverschiedene Plattformen, die trotzdem nur einmal programmiert werden muss – das ist der feuchte Traum aller Projektmanager und Chefs, in Wirklichkeit ist das Versprechen aber hauptsächlich Augenwischerei, die am Ende entweder a) mehr Aufwand macht oder b) für qualitativ minderwertige Apps sorgt, oder c) beides.

Denn jede Plattform bringt ihre ganz eigene, unverwechselbare Semantik mit – ihre eigene Art und Weise, wie sie gerne programmiert werden möchte. Das ist, wie wenn zwei Länder eine unterschiedliche Kultur haben: Japan ist anders als Texas. Man benimmt sich anders und man redet anders. Das ist ganz einfach so. In Fachkreisen nennt sich das „native Programmierung“ – die Programmierung des Systems, so wie es die Systemarchitektur vorsieht (und, nein, ReactNative hat nichts mit nativer Programmierung zu tun). Sowohl von Apple (iOS) als auch Google (Android) gibt es umfangreiche Dokumentation, Hilfen und Richtlinien, die bei richtigem Einsatz dafür sorgen, dass sich eine App auf dem entsprechenden Gerät richtig und vertraut anfühlt und die möglichen Fehlerquellen reduziert werden.

Crossplattform-Bibliotheken umgehen diese Richtlinien, indem sie ihren eigenen Einheitsbrei an Vorgehensweisen quasi über das vorhandene System stülpen. Und weil das nie so gut funktionieren kann wie native Programmierung, kommt jedes Jahr ein neues Crossplattform-Framework auf den Markt, das (jetzt angeblich diesmal aber garantiert wirklich!) die Probleme der vorigen Systeme ein für alle mal lösen soll – was natürlich nie auch nur im Ansatz der Realität entspricht.

Siehe unser Freund, die Olympus App: Es ist eigentlich kein Problem, unter iOS ein scrollendes Menü mit funktionierenden (sprich, nicht auf wischende Bewegungen reagierende) Buttons zu programmieren. Ich würde den Implementierungsaufwand für ein korrekt funktionierendes OiShare-Hauptmenü auf ca. 1 Stunde schätzen. In Wahrheit brauchten die Entwickler aber schätzungsweise zwei Wochen, um das Menü auf Android und iOS mit dem gleichen Code anzuzeigen und dafür zu sorgen, dass es sich auf beiden Plattformen äquivalent kacke verhält.

Das ist natürlich nur ein Beispiel von ganz vielen. Sigmas Raw-Bildbearbeitung „Sigma Photo Pro“, die ich vor Ewigkeiten hier mal kurz besprochen habe, ist ein weiteres typisches Beispiel: Nichts funktioniert richtig, kein Menüelement sieht wie gewohnt aus, die native Auflösung („Retina-Display“) des Macintosh wird nicht unterstützt, die Benutzeroberfläche ist quälend langsam und die ganze Zeit am Abstürzen, und warum? Weil das Teil mit Xamarin programmiert wurde statt richtig.

„Sigma Photo Pro“ in Aktion. Für den Fachmann ist leicht zu erkennen, was passiert ist: Holzimitat statt Holz.

Bitte nicht falsch verstehen: Ich halte Crossplattform-Programmierung nicht grundsätzlich für falsch, nur in ca. 95% der Fälle. Es macht perfekt Sinn, die interne Logik einer Anwendung portabel zu programmieren, beispielsweise in C++ oder Python oder meinetwegen auch Java. Aber es hat überhaupt keinen Sinn, die grundliegend verschiedenen semantischen Ansätze der einzelnen Plattformen mehr schlecht als recht mit einer einzigen Übersetzungsschicht abzufrühstücken… dabei kann nur Murks rauskommen.

Tschüss, Apps

Man kann mir jetzt natürlich maßlose Übertreibung vorwerfen, aber dann muss ich dagegen halten: Ich bin eben nicht nur Musiker, Pferdepfleger und Hobbyfotograf, ich bin jetzt auch schon seit über 30 Jahren ein durchaus gefragter Softwareentwickler – die Chance ist tatsächlich sehr groß dass Sie, lieber Leser, wenigstens eine App auf Ihrem Smartphone haben, an deren Entstehung ich unmittelbar beteiligt war –, ich weiß, wovon ich rede, und ich habe am eigenen Leib mitbekommen, wie sich der Beruf des App-Entwicklers im Laufe der Jahre vom hochangesehenen und kreativen Spezialisten zum kritik- und phantasielosen Codesklaven wandelte.

Ich war Zeuge davon, wie „wir“ immer weniger gefragt wurden. Wie plötzlich Consultants und Coaches und sonstige Krawatten ankamen und damit begannen, uns vorzuschreiben, welche Werkzeuge wir wie anzuwenden haben. Wie wir im Scrum-Retro unseren Namen tanzen durften statt beispielsweise mal darüber zu reden, dass uns die Werbe-Abteilung gerade unsere schöne App kaputt macht indem sie uns zwingt, eine Rotz-Bibliothek plus Spyware nach der anderen einzubauen. Wie es plötzlich wichtiger wurde, dass wir bunte Zettelchen von A nach B schieben als dass wir schöne Software ablieferten („Das braucht nicht funktionieren, es ist nur wichtig, dass der Kunde sieht, dass Bewegung auf dem Board ist“). Und als ich schließlich selbst Consultant war, musste ich zusehen, wie Personen ohne jeglichen technischen Hintergrund plötzlich ganzen Entwicklungsabteilungen vorschrieben, welches Framework sie verwenden sollen, nur weil ihnen am Abend zuvor in der Kneipe irgend ein dahergelaufener Hipster erzählt hatte, dass man jetzt XYZ machen muss und damit ganz dolle Geld spart.

Alles am eigenen Leibe erlebt.

Das ist auch der Grund, warum es für mich nicht mit Apps sondern mit einem ganz neuen Thema weiter geht. Zwar hatte ich das große Glück, für einen Arbeitgeber zu arbeiten, der immer zu den Guten gehörte und sich jederzeit der hier dargelegten Problematik bewusst war, aber die Einschläge kommen immer näher, ich kann das ansteigende Wasser nicht mehr ignorieren, und <hier bitte eine Symbolik eurer Wahl einsetzen>.

Was genau die Zukunft bringt, das soll an dieser Stelle noch nicht verraten werden, aber ich freue mich darauf, etwas neues zu lernen und meinen Horizont tatsächlich zu erweitern. Und wer weiß, vielleicht werde ich auch irgendwann – wenn sich die derzeit bevorzugte Verfahrensweise endlich auch beim zahlenden Kunden als der enorme Holzweg entpuppt, der sie ist – zur App-Entwicklung zurückkehren.

Man soll ja nie nie sagen.

12

6 thoughts on “Appgründe

  1. Da du ja nun schon eine Weile mit dieser Entwicklung haderst, bin ich sehr gespannt wohin dein Weg dann jetzt weiter geht. Ich hoffe du findest etwas das dich mehr erfüllt und wo du wieder Spaß dran hast!
    Fühl dich gedrückt!

    Astrid

  2. Ich bin ja ein Verfechter des Ansatzes der offenen Protokolle. Damit bekommen Apps dann Konkurrenz und in Folge dessen werden sie besser oder… halt nicht, aber dann hab ich die Konkurrenz.

    So, wie ich meine Sony Alpha in der Pampa per Kabel an mein billiges Android Tablet angeschlossen habe und eine Benachrichtigung mich fragte, ob ich das MTP Gerät jetzt mit dem Photo Importer öffnen wolle, und schon hatte ich die Bilder vor der Nase. Hätte ich das nicht gehabt, hätte ich eine Auswahl an Tools gehabt, die das dann besser tun. Und das selbe macht meine Linux Workstation daheim so und würde es auch meine Windows Installation tun, wenn ich einen Grund sähe, meine Kamera mit meinem grafischen Gamelauncher zu verbinden.

    Den Fehler sehe ich also darin, dass so viele Hersteller für ihre Dienste einen Walled Garden bauen und alle anderen aussperren, damit sie ja alleine mit ihren Kunden drin sind, welche sich dann auch auf die löchrige Picknickdecke setzen, die sich von selbst ein wenig zu bewegen scheint, weil es sonst halt nix anderes gibt. Klar, dass es da keinen Drang gibt, eine schönere Decke zu beschaffen.

    1. Ja, das mal eh aussen vor, denn dann stellt sich noch eine ganz andere, viel umfassendere Frage: Wäre das alles so gekommen, wenn mobile Betriebssysteme quelloffen und frei wären?
      (klar, wäre das Olympus-Protokoll offen, und könnte jeder das iPhone programmieren ohne von Apple einen Strick nach dem anderen in den Weg gespannt zu bekommen, dann gäbe es schon funktionierende Lösungen für alles, bis zum Abwinken. Davon wären zwar die meisten irgendwie freakig, aber sie würden das tun, was man möchte)
      Aber leider haben sich die User schon vor langer Zeit entmündigen lassen. ein Grund mehr, warum ich auf den ganzen mobile Rotz schon seit einiger Zeit immer weniger Lust habe.

  3. Guter und treffender Artikel, aber für mich stellenweise zu pauschalisiert. Pair Programming oder Mob Programming kann zum Beispiel oft hilfreich sein, wenn man allein bei einem Problem nicht weiter kommt.

    1. Teilweise hast Du sicherlich recht – Pair Programming kann seinen Nutzen haben, insbesondere wenn es um eine Domäne geht, wo Entwickler A voll den Durchblick hat und Entwickler B nicht so richtig.
      Was keinen Nutzen hat: Leute aus Prinzip und ohne jegliches Verständnis für ihre Arbeit zusammen am Bildschirm kleben lassen. Das ist Bevormundung und bringt keinen Mehrwert – im Gegenteil, es ermutigt Leute dazu, das System zu missbrauchen, sich selbst zu belügen und Schwächen zu verstecken, die man besser offensiv angehen würde. Ich habe Entwickler*innen erlebt, die schließlich mit stampfendem Fuß auf Mob Programming und sonstigen Coding-sozialen Aktivitäten bestanden („ich will Weiterbildung!“, „wir brauchen Meetups!“, „können wir nicht mal zusammen unsere DOD überarbeiten?“, „wir machen agile gar nicht richtig!“, „ich find‘ wir sollten alle regelmäßig zusammen spazieren gehen“), weil ansonsten rausgekommen wäre, dass es beim Programmieren ganz grundsätzlich mau aussieht, und dass ihre Kompetenzen in ganz anderen Bereichen liegen, die man dann vielleicht besser mal näher ergründet hätte (und in einem dramatischen Fall leider in Toxizität und Teamzersetzung, aber das ist ein eigenes Posting wert).
      Ich meine, miteinander reden kann oft hilfreich sein, wenn man allein nicht weiter kommt. Aber das braucht man m.E. nicht verklausulieren, das hat eher was mit gesundem Menschenverstand zu tun 😉

  4. Danke, danke, danke für diesen post! Endlich nennt jemand mal die Probleme beim Namen. Schade nur dass es nichts ändert.

Comments are closed.