Inhaltsverzeichnis
Vor einiger Zeit habe ich angefangen, eine neue App zu entwickeln: PawsUnited Walk. Eigentlich wollte ich dabei auch ein paar Dinge aufräumen und Code, den ich in mehreren Projekten brauche, in ein eigenes Framework auslagern. Daraus wurde allerdings deutlich mehr.
Plötzlich war ich mitten in einer kleinen Modernisierung meiner Apps: Das PawsUnitedKit entstand, ältere Teile wurden überarbeitet, ObservableObject wurde durch @Observable ersetzt und irgendwann stand die Entscheidung im Raum, die Projekte konsequent auf iOS 18+ auszurichten.
Und dabei ist mir etwas anderes aufgefallen: Wie sehr sich Programmieren verändert hat – und wie sehr sich auch meine eigene Art zu programmieren verändert hat.
PawsUnitedKit und der Wechsel zu @Observable
Ich wollte zunächst einfach Code, den ich in mehreren Projekten benötige, zentral in meinem eigenen PawsUnitedKit wiederverwendbar machen. Doch beim Auslagern und Aufräumen sind mir laufend weitere Möglichkeiten zur Verbesserung aufgefallen.
Unter anderem habe ich meine Apps von ObservableObject auf das moderne Observation-Framework mit @Observable umgestellt. ObservableObject war lange der übliche Weg, um Änderungen an Daten in einer SwiftUI-App sichtbar zu machen. Mit @Observable wird vieles schlanker und einfacher – aber der Wechsel ist selten nur eine Zeile Code.
Sobald ich an einer Stelle etwas umgestellt hatte, zog sich die Änderung durch mehrere Teile des PawsUnitedKit und schliesslich auch durch die Apps. Dabei musste ich mich auch intensiver mit dem @MainActor beschäftigen – also damit, welche Teile meiner App auf dem für die Benutzeroberfläche vorgesehenen Ausführungskontext laufen müssen.
Das zwang mich, genauer hinzuschauen. Und genau das gefällt mir an solchen Umbauten (braucht aber manchmal auch Zeit und Nerven…): Eine scheinbar kleine technische Änderung bringt mich dazu, innezuhalten und zu prüfen, was sich rundherum eigentlich noch verbessern oder vereinfachen lässt.
Im allerersten Entwurf waren meine Apps noch für ältere iOS-Versionen ausgelegt. Aus verschiedenen Gründen habe ich mich dann entschieden, mich auf iOS 18+ zu beschränken. Dadurch wurden einige der modernen Möglichkeiten plötzlich viel sinnvoller.
Was zunächst wie eine kleine Aufräumaktion aussah, hat also einiges nach sich gezogen.
Wie ich das Programmieren gelernt habe
Wenn ich darüber nachdenke, wie ich heute programmiere, muss ich manchmal schmunzeln. Ich habe unter anderem mit Assembler an der Fachhochschule angefangen – wem ist das noch ein Begriff? 😉 Das ist inzwischen über 20 Jahre her – und ja, vieles musste ich erst wieder neu lernen und auffrischen. Aber ich habe es immer gemocht, also kein Drama. 😄
Danach kamen weitere Sprachen wie C, C++ oder Java dazu. Auch mit Verilog habe ich Erfahrungen gesammelt. Das war noch einmal etwas ganz anderes: Während klassische Programmiersprachen Anweisungen im Wesentlichen nacheinander (seriell) ausführen, beschreibt man mit Verilog Hardware, bei der vieles gleichzeitig (parallel) passiert.
Damals musste man sehr viel genauer wissen, was eigentlich im Hintergrund passiert. Speicher war nicht einfach etwas, um das sich das System schon kümmern würde. Man musste sich viel stärker damit auseinandersetzen, was im Speicher liegt, wie Daten verarbeitet werden und was der eigene Code tatsächlich bewirkt.
Auch der Compiler war weniger hilfreich als heute. Fehler zu finden konnte mühsam sein, und wenn man nicht weiterkam, gab es vor allem eines: Handbücher.
Man hat nachgeschlagen, ausprobiert, wieder nachgeschlagen und sich langsam durchgearbeitet.
KI gab es in diesem Sinn natürlich noch nicht.
Was sich seither verändert hat
Heute ist Programmieren eine ganz andere Erfahrung.
Der Compiler hilft mir enorm dabei, Fehler zu finden und Probleme früh sichtbar zu machen. Moderne Programmiersprachen und Frameworks nehmen mir viele Dinge ab, um die ich mich früher selbst kümmern musste. Um den Speicher muss ich mich beispielsweise kaum noch Gedanken machen.
Und dann ist da natürlich noch KI.
Meine iOS-Apps entwickle ich inzwischen mit modernen Werkzeugen und mit Unterstützung von KI. Ich muss nicht mehr für jede Frage ein Handbuch durchsuchen oder mich durch unzählige Forenbeiträge arbeiten. Ich kann die KI fragen, mir einen Lösungsansatz geben lassen und diesen anschließend weiterentwickeln.
Das verändert den gesamten Entwicklungsprozess.
Aber eine gute Antwort ist nicht automatisch eine richtige Antwort.

Trotzdem verstehen wollen
Ich finde, es schadet nichts, wenn man dennoch versteht, was man da eigentlich programmiert.
Auch wenn das KI-Tool eine Lösung liefert, schaue ich sie an und versuche sie nachzuvollziehen, statt sie einfach zu übernehmen. Warum funktioniert dieser Code? Was macht er eigentlich? Gibt es vielleicht eine bessere oder einfachere Lösung (was tatsächlich ab und zu der Fall ist)?
Gerade bei meinem PawsUnitedKit merke ich, wie wichtig dieses Verständnis ist. Wenn ich Code aus mehreren Projekten zusammenführe oder eine bestehende Struktur modernisiere, reicht es nicht, wenn etwas einfach nur funktioniert. Ich möchte auch verstehen, warum es funktioniert und welche Auswirkungen eine Änderung an anderer Stelle haben kann.
Nur so kann ich mich verbessern – und lerne wirklich dazu.
Vielleicht hat sich damit auch meine Rolle als Programmiererin verändert. Früher musste ich viel mehr selbst wissen und vieles selbst umsetzen. Heute kann ich einen Teil dieser Arbeit an Werkzeuge und KI abgeben. Dafür muss ich umso besser beurteilen können, was mir diese Werkzeuge liefern und ob das Ergebnis sinnvoll ist.
Vom Assembler zur KI
Wenn ich die Entwicklung einmal zusammenfasse, ist der Weg schon ziemlich erstaunlich:
Assembler → C → C++ → Java → Swift/SwiftUI → KI
Von Code, bei dem man sich sehr genau mit Speicher und Hardware auseinandersetzen musste, bis zu Werkzeugen, die mir heute bei der Entwicklung ganzer Anwendungen helfen können.
Dabei ist das eine nicht einfach durch das andere ersetzt worden. Vielmehr baut das Neue auf dem Alten auf.
Die Erfahrung aus den früheren Jahren hilft mir auch heute noch dabei, Code zu verstehen, Zusammenhänge zu erkennen und Fragen an die KI überhaupt sinnvoll zu stellen. Gleichzeitig eröffnen mir moderne Sprachen, Frameworks und KI Möglichkeiten, von denen ich früher nicht einmal hätte träumen können.
Beides gehört für mich zusammen: die Erfahrung von früher und die Möglichkeiten von heute.
Und vielleicht ist genau das die spannendste Veränderung am Programmieren: Nicht nur die Programmiersprachen und Werkzeuge haben sich verändert – sondern auch die Art, wie wir mit ihnen arbeiten.
Meine Apps
Aus dieser Entwicklung sind inzwischen mehrere eigene Projekte entstanden. Wenn du sehen möchtest, was ich daraus mache, kannst du dir meine Apps PawsUnited Go! und Jot Diary im App Store anschauen.
Und das nächste Projekt ist bereits in Arbeit: PawsUnited Walk soll sich ganz dem Spaziergang mit dem Hund widmen – als eine Art Tagebuch für unterwegs. Mehr dazu gibt es zu einem späteren Zeitpunkt. 😉
Wenn du selbst programmierst oder dich für die Entwicklung meiner Apps interessierst, freue ich mich über den Austausch.
●
Zum Schluss ein bisschen Nostalgie 🙂 – mein Crazy Bike. Ein selbstfahrendes Modell-Motorrad, das mit Sensoren einen Parcours bewältigen musste. Da gab’s auch einiges zu programmieren, aber das meiste mit einem Atmel ATmega – welchem genau, weiss ich nicht mehr. 😄

