Die explosionsartige Entwicklung von Speicher- und Rechenkapazitäten hat uns nicht nur gutgetan.
*Geschrieben von meinem Arbeitsschoßoben, der gefühlt immer auf Anschlag läuft*
Die explosionsartige Entwicklung von Speicher- und Rechenkapazitäten hat uns nicht nur gutgetan.
*Geschrieben von meinem Arbeitsschoßoben, der gefühlt immer auf Anschlag läuft*
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.
Mal ganz polemisch gesagt ist das bei grob 99% aller Anwendungen auch kein Problem.
Polemisch akzeptiere ich diese Aussage, aber nur polemisch.
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.
Hoffenlich liege ich damit falsch.
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.
Kannste ja mal versuchen. Mehr als was in der Komplexität einer Todo-App kriegt ein Benutzer ohne Erfahrung auch nicht mit einer KI hin.
Die Industrie sieht das bestimmt so.
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…
Das sind 200 Mark. 400 Ostmark. 4000 Ostmark aufm Schwarzmarkt.
Von den bisherigen [email protected]-Pfostierungen hätte man 0.001236 % der DDR entschulden können.
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.