Wenn ich mit Entwicklern sogar der mittleren Semester rede, dann stelle ich immer wieder fest, dass die weder von der Architektur, noch von effizienten Datenstrukturen und Algorithmen eine Ahnung haben.
Müllaufsammlung ist beispielsweise sowas, wo viele gar nicht so richtig zu verstehen scheinen, was das ist, und wie Speicherallokation eigentlich funktioniert. Oder warum man bei der Netzwerkprogrammierung zustandslose Kommunikation verwendet und warum nicht. Oder wie ein Prozessor überhaupt Instruktionen abarbeitet. Oder wie teuer Fadenkontextschaltung ist.
Ja, durch den explosionsartigen Anstieg der Nachfrage nach Software-Entwicklern wurde zwischendurch mal wirklich jeder genommen, der nur die Ausdauer hatte mehrere Stunden am Tag vor einem Bildschirm zu sitzen; (kommt mir vor). Da ist ja jetzt endlich eine Trendwende zu erkennen (kommt mir vor).
Ich sehe da ehrlich gesagt überhaupt keine Trendwende. Das tiefe Interesse für die Hintergründe ist bei den Berufseinsteigern absolut nicht mehr so, wie das vor zwei Jahrzehnten der Fall war. Ich glaube mittlerweile, da einer sehr exotischen Nische anzugehören: Die Generation vor mir war noch eher im "ach, Computer brauche ich nicht, ich gehe in den Garten" verhaftet, die nach mir ist Konsument der Technik und ich glaube, dass ich das Glück hatte, wirklich noch tief in die Materie einsteigen zu dürfen.
Wenn ich mir anhöre was bei Kongressen grade so vorgetragen wird, habe ich eher das Gefühl, dass die Industrie den Software-Entwickler an sich als Auslaufmodell ansieht.
Außer bei ein paar Konzernen in den USA sollen Firmen lieber Lizenzen für eine Cloud-Umgebung einkaufen, in der die benötigte Applikation dann mit KI-Hilfe zusammengeklickt wird.
Aber Software Entwickler schreiben ja nicht nur Code, sondern sie übersetzen das was die Kunden sagen zu wollen zu dem was die Kunden wirklich wollen.
Mein letztes Beispiel für warum klicken nicht funktioniert.
Ich arbeite gerade mit einem Kunde, der sich seine Website mit Wordpress zusammen geklickt hat:
A) das kann nicht ansatzweise was ein custom build System könnte
B) es ist viel komplexer, weil man sich alles zusammen hacken muss um leichte Probleme zu lösen
C) es ist teurer, sie zahlen mehrere hundert Euro für hosting.
Mein ganzer Kram lebt auf einer 1U colloc für unter 100€/Jahr
D) security! Erste Sache die ich gemerkt habe war, dass die Logs öffentlich waren. Man sah aber zum Glück nur Name, Email, Geburtstage, Wohnadresse...
Also mir ging's auch so, dass ich das alles kaum auf dem Schirm hatte, als ich nur in Sprachen mit Garbage-Collection unterwegs war. Die Sprachen geben dir ja teilweise überhaupt keine Handhabe, um zu sehen oder zu beeinflussen, wie/wo/wann Speicher alloziert wird.
Hier auf Arbeit gilt es in GC-Sprachen sogar als Best Practice, dass man mit Immutable Datentypen arbeitet, d.h. explizit die Datentypen dupliziert, wenn man ein Feld verändern will, weil die GC-Sprachen es sonst extrem einfach machen, dir in Multithreading-Kontexten in's Bein zu schießen.
Oftmals sind es eben auch Server-Anwendungen, die man programmiert, wo man dann tendenziell einfach einen dickeren Server draufwirft, falls es mal Performance-Probleme geben sollte. Aber klar, wenn man dann mal keine Server-Anwendung programmiert, verwendet man trotzdem die Sprache, die man gewohnt ist.
Sogar CLIs werden hier teilweise mit GC-Sprachen geschrieben, wo ich mir mittlerweile nur noch denke, dass man nichts Bekloppteres machen kann. Jedes mal, wenn man einen Befehl auslöst, dackelt da eine Java/Python/sonstwas-Runtime los, nur um dann eine halbe Sekunde später festzustellen, dass der Benutzer nur die --help wollte, also einmal ausgeben und dann die Runtime wieder zurück in den Schuppen stellen.
Also nichtmutierbare Datentypen sind schon nett, wenn die Programmiersprache denn passt. Das ist jetzt auch nicht neu und gschmackig, sondern schon seit mindestens 66 Jahren normal. Das Problem liegt wohl eher bei Java/Python und den Personen, die es bedienen. Müllabfuhr ist jetzt auch nicht prinzipiell schlecht, das Problem ist ziemlich genau das selbe, das auch eine echte Müllabfuhr im echten Leben erzeugt: Wenn es eine Tonne gibt in die ich mein Problem werfen kann, und dann ist es weg, habe ich plötzlich nichts mehr das mich daran hindert, doppelt so viel Problem in die gleiche Tonne zu werfen und auf einmal haben wir das:
Daran ist aber weder die Banane, noch die Müllabfuhr schuld, sondern die Industrie und die Konsumenten.