Wie kann ein Softwareentwickler im Bereich Software Architektur mehr Erfahrung sammeln?
Es hilft mir, neue Programmiersprachen zu lernen und es ist ein Vorgang, der bei mir mehr als genug WOW-Bomben zündet. Die besten Ideen kommen, wenn man den eigenen Kontext verlässt und in einen neuen Kontext gerät, in dem alles viel überraschender ist.
Kontext ist hier wirklich 80 IQ-Punkte wert (das sieht man daran, dass Amateure in Sprachen wie Erlang z.B. ganz anständige Systeme bauen können, während sie in Java durch Codeinflation und Selbstzweifel untergehen).
Man sollte sich Lisp, Smalltalk und co. ansehen (insbesondere Erlang, wenn man im Webbereich oder mit vernetzten Systemen zu tun hat) und darin eine Zeit lang programmiert haben.
LISP
Lisp ist per Definition die ausdrucksstärkste Programmiersprache, die es gibt.
Es ist wichtig, den metazirkulären LISP-Interpreter eval auf Seite 13 des LISP Manuals
einmal gründlich verstanden zu haben, denn er fasst die gesamte Programmierwelt in "einem Augapfel" zusammen. Eine ausführliche Ausarbeitung gibt es auf dieser Seite: Lisp as the Maxwell’s equations of software
Die gesamte Welt der Computer – auf einer DIN-A4 Seite zusammengefasst (etwa so wie man durch Verstehen der Maxwell-Gleichungen sich den elektrischen, optischen und Funktechnologien wie Energieerzeugung, Elektromotoren, drahtlose Kommunikation, Linsen, Radar etc. bemächtigt)!
Der Eval-Interpreter ist heute die konzeptionelle Grundlage für die Umsetzung der meisten Programmiersprachen.
UNIX
Das frühe UNIX-System war gut entworfen (die Designer waren mit diesen Ideen etwas spät auf dem Markt, aber es sollte jeder zumindest einmal mit deren Denkweise vertraut gewesen sein: Unix-Philosophie – Wikipedia
).
Weitere Literatur
The Design of Design: Essays from a Computer Scientist von Fred Brooks, der auch die Projektanleitung The Mythical Man Month schrieb
Notes on the Synthesis of Form und Pattern Languages von Alexander Christopher
Computation: Finite and Infinite Machines von Marvin Minsky
Building Large Knowledge-Based Systems von Douglas Lenat
The Art of the Metaobject Protocol von den PARC Leuten
A Plea for Lean Software
und alles andere von Wirth (auch Oberon und Oberon OS sind viele Blicke wert)
Sketchpad
von Ivan Sutherland (in nur einem Jahr wurde es geschrieben und hat alles von Simulation bis zu Objektorientierte Programmierung)
Architecture Machine
und Soft Architecture Systems von Nicholas Negroponte

(Negroponte's Bücher werden nicht mehr gedruckt, deshalb habe ich die Scans die mir vorlagen durch einen OCR gejagt und das Ergebnis hochgeladen. Mir liegt auch das zweite Buch der Soft Architecture Systems vor und wenn jemand Lust hat es auch via OCR zu verarbeiten, wäre ich mehr als entzückt ihm die PDF zuzusenden)
Allgemein würde ich Bücher wie die Gossamer Odyssey hinzufügen, die nichts mit Computer zu tun haben, aber den "MacCready Sweetspot" und das Konzept der "ersten scheiß Prototypen" verkörpern. In den ersten Wochen haben die nämlich mehr "Flugzeug-Tests" durchgeführt, als jeder andere in jahrzehntelangen Zeitabschnitten vor ihnen.
Wir müssen nämlich immer annehmen, dass wir immer dabei sind, perfekt das falsche Problem zu lösen. Siehe auch Getzels' Notiz über Problemfinden über Problemlösen
und Arthur Koestler's Act of Creation.
Kurz: Werde ein Pilot in der Ideenlandschaft, statt einer Ameise.
(Du kannst dein ganzes Leben in JavaScript, PHP, Python, Rust, Go, Swift, C++, Linux... verschwenden, ohne irgendetwas über die größere Welt von Computer verstanden zu haben)