Also diese Idee, nach x Jahren "ausgelernt" zu haben ist für mich nicht wirklich nachvollziehbar. Ok, als Straßenfeger hast Du das vielleicht, aber selbst da musst Du dann plötzlich mit neuen Geräten umgehen können oder neue Umweltauflagen "lernen" ...
Informatik ist eine sehr junges Fachgebiet. Daher ist da noch einiges mehr an Dynamik enthalten. Aber bei fast allen Fachbereichen ist es so, dass man ständig Neues dazu lernen sollte.
Wie hätte ich vor >20 Jahren "ausgelernt" haben können? Schau nur einmal, was in den letzten 20 Jahren alles entstanden ist. (Und das ist nur die Zeit nach dem Studium. Im Studium gab es noch kein UML und so ... Da hatte Booch gerade mal seine Booch Method vorgestellt die dann von unserer Uni auch direkt mit aufgegriffen wurde ...
Oder Microservices, die jetzt so groß bei Java kommen ... (Etwas, das es vom Ansatz her schon lange bei Windows gab. Das war bei Microsoft mit WCF lange die Idee ... Docker und so gab es da halt leider noch nicht ...)
Man kann sich natürlich überlegen: Braucht man das alles? Müssen Computer weltweit vernetzt sein? Muss man Geräte dabei haben, die immer vernetzt sind. Müssen diese schnell vernetzt sein oder was für Übertragungsraten braucht man? Nur um ein kleines Teilthema zu nehmen.
Aber spätestens bei Dingen, in denen High Tech eingesetzt wird, merkt man den Fortschritt. Moderne Simulationen, die heute laufen, waren lange undenkbar ...
Aber zurück zum Thema Neues lernen:
Eine gute, solide Ausbildung vermittelt einem aber die Grundlagen, die es einem ermöglichen, die tollen neuen Kühe, die dann jedes Jahr durchs Dorf getrieben werden, schnell zu verstehen, zu analysieren und ggf. auch umzusetzen.
Was die Komplexität angeht: Die Komplexität ist nun einmal gegeben. Die kann man nur begrenzt verstecken. Ansätze dazu gibt es viele. Kannst ja mal einfach nach Low-Code und No-Code Development schauen. Die Idee dahinter ist aber auch nicht wirklich neu und gab es schon in diversen Ausprägungen früher. Speziell im Bereich Datenbank-Entwicklung gab es ein paar Produkte...
Komplexität zu verstecken funktioniert aber nur sehr bedingt. Man kann Komplexität beseitigen durch Einschränkungen. Wenn ich klare Vorgaben mache, was geht und was eben per Design nicht geht, dann kann man recht weit kommen. Aber problematisch wird es, sobald man eben solche Vorgaben nicht hin nehmen will. Dann fahren solche Konstrukte sehr schnell gegen die Wand und führen sich selbst ad absurdum. Das war zumindest bei diversen Lösungen die Erkenntnis zu der ich gekommen bin.