- Formale Ausbildung ist nützlich, um Fähigkeiten effizient zu vermitteln, hat aber Grenzen beim Entwickeln von Intuition für die Lösung unerwarteter Probleme
- Gezieltes iteratives Trial-and-Error (Algorithmus) ist der wichtigste Faktor zur Steigerung von Kompetenz, weil dabei im realen Einsatz Fehler gemacht und korrigiert werden
- In konkreten Beispielen haben verschiedene Persönlichkeiten wie Linus Torvalds und Margaret Hamilton durch das Erleben und Überwinden von Fehlschlägen außergewöhnliche Fähigkeiten entwickelt
- Mentoring ist ein wichtiger Beschleuniger, aber selbstgesteuerte Experimente und direkte Erfahrung sind letztlich der Kern echten Wachstums
- Zielgerichtetes Experimentieren, bei dem man aneckt, scheitert und Probleme selbst löst, ist die Grundlage echter Leistungssteigerung
Die Kraft hinter den besten Softwareingenieuren: gezieltes Trial-and-Error
Der Mythos Klassenzimmer
- Formale Ausbildung ist gut für die Vermittlung wertvollen Wissens, aber als auf Skalierbarkeit optimierter Prozess angelegt
- Komplexe Praxiserfahrung wird in gut aufbereitete Verfahren gegossen und so vermittelt, dass sie innerhalb eines Semesters abgeschlossen werden kann
- Dabei lassen sich die für die Praxis nötigen Grundfertigkeiten erlernen, doch beim Aufbau der Fähigkeit, in unerwarteten Krisen Probleme intuitiv zu lösen, gibt es klare Grenzen
- Wenn etwa um 3 Uhr nachts in einem echten Service ein Problem auftritt, reichen die im Unterricht gelernten Rezepte zur Lösung oft nicht aus
Echtes Wachstum durch direkte Konfrontation mit Problemen
Vorbilder aus der Praxis
- Linus Torvalds schrieb MINIX neu und erschuf dabei Linux
- Margaret Hamilton korrigierte im Apollo-Projekt Codeprobleme direkt in Echtzeit und prägte damit moderne Konzepte von Zuverlässigkeit
- Auch unzählige Open-Source-Maintainer sind gewachsen, indem sie ihre eigenen Laptops kaputtgemacht und wieder repariert haben
- Sie hörten nicht zuerst lineare Vorlesungen, sondern gelangten durch Fehlschläge und deren reale Auswirkungen zu tiefem Können
Warum Trial-and-Error besser ist als Rezepte
- Die Feedback-Schleife ist unmittelbar. Einen Crash anhand von Logs zu analysieren, führt zu viel schnellerem Lernen als ein Quiz
- Edge Cases treten in realen Umgebungen ganz natürlich auf, und man begegnet Nutzungsszenarien, die in Lehrmaterialien nicht vorstellbar sind
- Schwer erarbeitete Lösungen prägen sich tief ein. Sie werden zu Muskelgedächtnis
- Wenn es keinen bestehenden Leitfaden gibt, entfaltet sich Kreativität explosionsartig
Mentorschaft neu betrachtet: Ergänzung, kein Ersatz
- Gute Mentoren geben schnelles Feedback und erweitern den Horizont, aber letztlich ist man selbst die treibende Kraft hinter Experiment und Erfahrung
- Code Reviews sind wertvoll, weil sie Experimentergebnisse teilen, ersetzen aber direkte Erfahrung nicht
Gewohnheiten für selbstgesteuertes Experimentieren entwickeln
- Side Projects angehen, die einen bewusst ein wenig aus der Komfortzone bringen
- Alles instrumentieren, damit bei Fehlern analysierbare Daten vorliegen
- Constraints setzen, etwa keine Frameworks zu verwenden oder etwas innerhalb von 48 Stunden fertigzustellen, um kreative Problemlösung zu fördern
- Code veröffentlichen und sich externer Prüfung aussetzen
- Wöchentlich Retrospektiven festhalten, um Fehlerursachen und Lernerkenntnisse zu dokumentieren
Fazit
- Mentorschaft, Kurse, Blogs und Ähnliches wirken als Beschleuniger, aber echtes Können entsteht im harten Ringen mit der Praxis
- Die besten Ingenieure erzielen reale Problemlösung und Wachstum durch wiederholtes, freies und zielgerichtetes Trial-and-Error
- Die in diesem Prozess gewonnenen Erfahrungen werden zum größten Vermögenswert des zukünftigen Selbst
1 Kommentare
Hacker-News-Kommentar
Ich selbst bin autodidaktischer Entwickler und habe den Großteil meiner Karriere in Großunternehmen mit Kollegen verbracht, die Informatik studiert haben
Meiner Erfahrung nach lösen autodidaktische Entwickler ein gegebenes Problem am Ende, sofern sie intelligent genug sind
Informatikabsolventen versuchen es in völlig unbekannten Bereichen oft gar nicht erst (natürlich gibt es je nach Persönlichkeit Abweichungen, aber ich denke, das trifft auf etwa 85 % zu)
Bei hoher Unsicherheit kommen sie nicht voran
Letztlich passen Informatikabsolventen besser in Großunternehmen und arbeiten nach Mustern wie austauschbare Zahnräder
Autodidakten innovieren dagegen ständig, arbeiten darauf hin, ineffiziente Wiederholungen zu reduzieren, und diese originelle Haltung verunsichert ihr Umfeld
Aber genau diese Autodidakten liefern am Ende deutlich bessere Ergebnisse
Die meisten Entwickler scheinen Arbeitsplatzsicherheit und die Vermeidung von Unsicherheit höher zu gewichten als wirklich herausragenden Code
Viele formal ausgebildete Ingenieure gehen neue Probleme ebenfalls aktiv an
Das ist weniger eine Frage von Autodidaktik versus formaler Ausbildung als von Eigenschaften wie Neugier, Fleiß, Kreativität und Intelligenz
Autodidakten müssen diese Eigenschaften zwingend mitbringen, um erfolgreich zu sein, daher fallen sie in dieser Gruppe vielleicht stärker auf
Wenn formal ausgebildete Ingenieure diese Eigenschaften zusätzlich besitzen, neigen sie oft dazu, beide Gruppen zu übertreffen
Vermutlich ist der größte Unterschied die Persönlichkeit
Ich als autodidaktischer Entwickler habe vor allem mit Gewissenhaftigkeit gepunktet
Das technische "big picture" habe ich nicht besonders gut gesehen, dafür habe ich versucht, im Team die meisten Ergebnisse zu liefern
Ich habe innerhalb weniger Tage gleich drei Prototypen gebaut und in der Praxis getestet
Meine Kollegen mit Informatikstudium haben einmal am Whiteboard entworfen und den eigentlichen Code nur einmal geschrieben
Beide Ansätze wurden nie bei exakt derselben Aufgabe ausprobiert, daher ist schwer zu sagen, welche Ergebnisse besser gewesen wären
In meinem Kopf fühlte sich meine Methode wie der "praxisgetestete" Weg an
Es stimmt aber, dass der Informatik-Ansatz als ideal wahrgenommen wurde
Trotzdem denke ich, dass ich durch das Mentoring der Ingenieure mit Informatikstudium sehr viel gelernt habe
Nach etwa zehn Jahren Berufserfahrung gleichen sich die Wege ohnehin an, egal wie man gestartet ist, und man entwickelt eine ähnliche Intuition dafür, was die "richtige" Antwort ist
Vielleicht habe ich manches etwas verklärt oder verallgemeinert; es wäre gut, wenn andere das in Antworten ergänzen
Stimme zu
Die meisten Informatik-Curricula sind von der Praxis ziemlich weit entfernt, daher ist ein Abschluss kein unmittelbarer Indikator für Können
Aber dass 85 % der Informatikabsolventen unbekannte Probleme nicht lösen können, kann ich absolut nicht unterschreiben
Wenn es eine Stärke des Informatikabschlusses gibt, dann die, dass der ingenieurwissenschaftliche Track extrem anspruchsvolle Fächer enthält, die hohe intellektuelle Leistungsfähigkeit erfordern
Es ist schwer vorstellbar, dass jemand, der all diese Fächer bestehen kann, dann an tatsächlicher Softwareentwicklung scheitern soll
Gerade in wirklich schwierigen Entwicklungsbereichen haben im Gegenteil ziemlich viele Leute fortgeschrittene Informatikabschlüsse
Ich denke, diese Eigenschaften entstehen, wenn man ein tiefes Interesse an Software hat, und darunter sind viele Informatiker
Meiner Erfahrung nach findet bei Autodidakten eine natürliche Auslese statt
Anders gesagt: Wer als Autodidakt unbekannte Probleme nicht lösen kann, wird gar nicht erst eingestellt
Leute mit formaler Ausbildung sind meist durchschnittlich oder besser, aber nicht überwältigend
Wer sich alles selbst erschlossen hat und zusätzlich durch eine Hochschulausbildung validiert wurde, bringt wirklich enorme praktische Schlagkraft mit
Ich denke, der Kern ist nicht die Art des Lernens, sondern "Leidenschaft"
Wenn die Motivation schwach ist, sind die Grenzen unabhängig von der Lernform klar
Dieses Thema lässt sich auch nur schwer quantitativ diskutieren
Formale Ausbildung kann grundlegende Konzepte wie Mathematik, Hardware, Betriebssysteme und Compiler solide verankern
Autodidaktisches Lernen ist zielorientiert und kann daher dazu führen, dass Grundlagen übersehen werden
Wenn man nicht einmal weiß, was man nicht weiß, spart ein guter Mentor (Professor, hervorragendes Buch) enorm viel Zeit
Viele Ingenieure, mich eingeschlossen, durchlaufen sowohl formale als auch informelle Lernwege
Mit Leidenschaft baut man von selbst immer weiter Dinge und experimentiert auch jenseits formaler Ausbildung
Was wirklich großartige Ingenieure auszeichnet, ist nicht die Art ihrer Ausbildung, sondern eine klare Leidenschaft
Beispiele wie Linus oder Margaret waren letztlich ebenfalls Menschen mit enormem Lerntrieb
Als autodidaktischer Programmierer stimme ich dem voll zu
Ich habe seit den 8-Bit-Computern der 80er Jahre selbst gelernt und nie studiert
Als ich mit 19 meinen ersten regulären Job als Programmierer bekam, programmierte ich bereits seit 9 Jahren
Als die meisten ihren Abschluss machten, hatte ich schon fast 15 Jahre programmiert
Solche Leidenschaft und dieser Antrieb lassen sich kaum ignorieren
Auch heute, fast 40 Jahre später, habe ich noch immer dieselbe Freude an Software
Das Bauen an sich macht mir Spaß, ich lese weiter wissenschaftliche Arbeiten, verfolge Branchentrends und schreibe immer noch enorm viel Code
Allerdings finde ich es etwas schade, wenn man Autodidakten pauschal mangelnde Grundlagen unterstellt
Tatsächlich arbeiten sich viele Autodidakten auch tief in akademische Themen ein — es hängt wohl stark vom Bereich ab
Es mag an Zeit für systematisches Tiefenstudium fehlen, aber mit jahrzehntelanger Erfahrung haben manche sogar solidere Grundlagen als Leute, die nur studiert haben
Ich habe viel eingestellt und entlassen, und oft haben Autodidakten die besseren Ergebnisse geliefert
Letztlich haben sie einfach viel mehr "gemacht" — Leidenschaft treibt die Lernmenge massiv an
Der Punkt "wenn man nicht weiß, was man nicht weiß, ist jemand, der einen effizient anleitet, eine große Hilfe" trifft es genau
Ich bin irgendwo zwischen formaler und informeller Ausbildung
Höhere diskrete Mathematik und lineare Algebra habe ich nicht belegt, daher fehlt mir viel Hintergrundwissen
Ich weiß oft nicht einmal, nach welchen Stichworten ich suchen müsste
In manchen Bereichen braucht man wirklich Anleitung
Mit Ende 30 einen Tutor zu finden, der Vektormathematik in Programmen prüfen kann, ist wirklich schwer
Leidenschaft treibt Autodidaktik an, während man im Klassenraum womöglich weniger davon braucht, weil jemand ständig die Spur vorgibt
Außerdem gibt es nicht nur zielorientierte Autodidakten, sondern auch solche, deren Ziel es ist, die Funktionsweise des Systems selbst zu verstehen
Selbst wenn dich jemand zwangsweise ans Wasser bringt, heißt das nicht, dass du nicht auch aus eigener Kraft dorthin gelangen könntest
Der beständige Unterschied ist aus meiner Sicht: Autodidakten sind Menschen, die mindestens einmal aus eigener Kraft bis ans Wasser gegangen sind
Ich bin ein Mischtyp aus formaler Ausbildung und Selbststudium
Ich habe viele Uni-Kurse besucht, aber nicht gut genug in Prüfungen abgeschnitten, um einen Abschluss zu bekommen
Dass ich mir den Rest selbst beibringen konnte, war nur möglich, weil die Kurse das Fundament gelegt haben
Ich halte Uni-Kurse für wirklich großartig
Wenn ich gar nichts gewusst hätte, hätte ich mich allein nie in Dinge wie die Socket-API von C, bash-Projekte, verteilte Systeme, Datenstrukturen oder Algorithmen eingegraben
Tatsächlich habe ich viele Autodidakten und Bootcamp-Absolventen interviewt; sie neigen dazu, nur die Bereiche zu vertiefen, mit denen sie vertraut sind, oder bei akademischen Fragen schnell einzubrechen
Andererseits gibt es auch Leute aus dem Studium, die kaum wirklich programmiert haben und entsprechend schwach sind; selbst während des Studiums vergessen viele wieder, was sie früher gelernt haben
Ich denke, die beste Kombination ist, schon vor der Uni ein Stück weit programmiert zu haben
Man muss sich selbst an Problemen die Zähne ausgebissen haben, damit die theoretischen und eleganten Lösungen aus der Vorlesung wirklich zu den eigenen werden
Je öfter man etwa durch Fehler bei der Speicherverwaltung wie RAII leiden musste, desto tiefer versteht man solche Konzepte
Bootcamp-Absolventen und Autodidakten sollte man getrennt betrachten
Auch aus Bootcamps können fähige Leute kommen, aber bei vielen, die ich kenne, war es so, dass sie nicht selbstständig lernen konnten und statt Universität oder einem anderen Feld das günstigere Bootcamp gewählt haben
Früher gab es keine Bootcamps, und auch von Online-Kursen oder traditionellen Lernmethoden habe ich mich eher ferngehalten
Ich wollte einfach etwas Cooles bauen, und es war spannender, Probleme unabhängig zu lösen, als immer wieder nach Lehrbuch neu anzufangen
Dass ich mir als Jugendlicher C selbst beigebracht habe, lag daran, dass es etwas gab, das ich mit vorhandenem Material oder existierendem Code nicht erreichen konnte, ich dieses coole Ergebnis aber unbedingt wollte — also blieb mir nur, Foren zu durchforsten, Dokumentation zu lesen und es per Trial-and-Error herauszufinden
Wichtiger als die Lernmethode ist aus meiner Sicht der starke Wunsch zu lernen
Vor dem Studium war ich bereits fit in C und der Socket-API und hatte sogar Erfahrung mit Softwarelieferungen
Ein Freund von mir verdiente schon in der Schulzeit Geld mit dem Verkauf von Spielen für den C64
Wir beide waren neuen Absolventen im praktischen Programmieren weit voraus
Was mir fehlte, war eher Theorie wie Analysis, lineare Algebra und diskrete Mathematik; auch bei Datenstrukturen und Algorithmen gab es Lücken
Das Informatikstudium hat diese Lücken gefüllt, aber meine Programmierfähigkeiten selbst nicht verbessert
Die programmierbezogenen Kurse waren überhaupt nicht schwer; Mühe gemacht haben mir vielmehr Mathematik und Theorie
Das Informatikstudium hat mich zu einem ausgewogeneren Ingenieur gemacht, aber nicht zu einem besseren Entwickler
Früher an der Uni war die Stimmung im Informatikbereich genau das Gegenteil dessen, was man heute als Vorteile der Universität anführt
Ich habe mich aus genau diesen Gründen damals gegen Informatik als Studienfach entschieden (heute bin ich Senior-Entwickler in einem US-Tech-Unternehmen), und obwohl es sich um eine Eliteuniversität handelte, die nur die besten Noten aufnahm, waren Durchfallquote, Arbeitslosigkeit und die Haltung der Professoren allesamt miserabel
Natürlich haben manche Menschen viel aus der Universität mitgenommen, aber die Realität ist nicht überall so
Viele Informatikabsolventen, die ich in der Praxis getroffen habe, hatten große Schwierigkeiten mit Kommunikation, Geschäftsverständnis und Priorisierung von Arbeit
Oft konnten sie nur Code schreiben (und selbst das nicht besonders gut), und dass ein Informatikstudium allein vollständig auf die Praxis vorbereitet, ist eher selten
Im Gegenteil: Der universitäre Lehrstil ist für mich geradezu ein Paradebeispiel dafür, in der Komfortzone zu bleiben
Man muss auch anerkennen, dass Zugang zu und Kosten von Hochschullehre selbst eine soziale und ökonomische Klassenfrage sind
Und es gibt durchaus Autodidakten, die Dinge wie Socket-API oder bash-Projekte umfassend gemacht haben
Zur Einordnung: Autodidakten und Bootcamp-Absolventen sind völlig unterschiedliche Gruppen
In vorgegebenen Situationen wie Audition-artigen Interviews kann ich scheitern, aber wenn ich allein bin, löse ich reale Probleme gut
Das klingt vielleicht etwas altmodisch, aber ich gehöre auch zu der Generation, für die die Uni früher wirklich gut war
Wir haben Compiler, ein Toy-OS und GPS-Interfaces gebaut
Vor ein paar Jahren wurde ich an einer anderen Hochschule als Dozent eingeladen und war sehr enttäuscht
Der Lehrplan wirkte wie ein auf mehrere Jahre gestrecktes Bootcamp mit ein paar kaum relevanten Fächern obendrauf
Kaum Grundlagen, und abgesehen vom Algorithmenkurs drehte sich alles um React und Frameworks, die bei lokalen Startups gerade beliebt sind
(Edit: Im Lehrplan standen tatsächlich Kurse zu Business, Management, Geisteswissenschaften, Chemie, Umwelt, Entrepreneurship und E-Sport)
Es wirkt, als würden viele viel Energie darauf verwenden, den Mangel ihrer eigenen Ausbildung vor sich selbst zu rechtfertigen
Es gibt brillante Autodidakten und wenig kluge Menschen mit Abschluss, aber meiner eigenen Erfahrung nach hätte mir ein Informatikabschluss auf meinem Weg eher geholfen
Informatik ist im Kern nicht einfach nur Coding, genauso wenig wie Maschinenbau, wo je nach Beruf sehr unterschiedliche Erwartungen und Rollen gelten
Auch Maschinenbauingenieure sind bei kleineren Problemen wie einem Ölleck oder einem platten Reifen oft schlechter als Mechaniker
Trotzdem wertet man deshalb keinen Ingenieurabschluss ab
Auch ich stand am Anfang in der Fertigungshalle, hatte buchstäblich Öl an den Händen und konnte Dinge reparieren, die Techniker nicht lösen konnten, aber das lag an persönlicher Neigung und Neugier
Dass Autodidakten oft bessere Leistungen bringen, liegt daran, dass sie überhaupt die Motivation, Leidenschaft und Eigeninitiative mitbringen, Autodidakten zu werden
Letztlich wird man mit Neugier, Fokus und Disziplin überdurchschnittlich, egal ob formell oder informell gelernt
Dabei spielt auch Survivorship Bias eine Rolle — man sieht vor allem die Fälle, in denen Selbstlerner in der Praxis überlebt haben
Umgekehrt hätten gescheiterte Autodidakten mit ordentlichem Unterricht vielleicht besser abgeschnitten
Ich selbst mochte sowohl Informatik als auch Mathematikausbildung, hatte aber vom Format her das Gefühl, dass selbstgesteuertes Lernen besser zu mir passt
Das Wort "oft" ist letztlich nur eine hübsche Verpackung für Unschärfe
Ich bin Softwareentwickler und Dozent für Informatik an einer Universität
Die gemeinsame Eigenschaft wirklich erfolgreicher Ingenieure ist am Ende "Interesse" und "Leidenschaft"
Bei Autodidakten ist das Interesse am Gebiet naturgemäß hoch, ihre Motivation ist also bereits vorselektiert
Bei Absolventen ist das gemischter — wer nur auf den Abschluss aus war, kennt womöglich zwar theoretische Begriffe, ist praktisch aber schwer einzuschätzen
Autodidakten sind per Definition Menschen mit so starker Motivation und so großem Interesse, dass sie außerhalb bestehender Strukturen selbst lernen
Wissen kann man sich wie Kreise auf einer Tafel vorstellen
https://matt.might.net/articles/phd-school-in-pictures/
Der Kreis dessen, was man an der Universität lernt, ist überraschend klein und meist durch weitgehend identische Curricula begrenzt
Zum Beispiel bleibt keine Zeit, dmc-Algorithmen zu lehren (die in den besten Kompressionsalgorithmen eingesetzt werden)
Stattdessen wiederholt jeder nur den allgemeinen Standard-Lehrplan
Es gibt aber Menschen, die auch außerhalb dieses Kreises vorgedrungen sind
Genau solche Leute sind die besten Programmierer der Branche — sie kennen sogar seltene Algorithmen, die man sonst nur aus Papers kennt, und heben sich dadurch deutlich ab
Für Autodidakten gilt Ähnliches; auch sie können Wissenslücken in dem gemeinsamen Kreis haben, den alle lernen, und starten deshalb oft mit Eigenmotivation und Bescheidenheit
Aber der Kreis ihres Wissens ist organisch aus Leidenschaft gewachsen
Diese Leidenschaft ist aus meiner Sicht der stärkste Indikator für gute Ingenieursleistung
Anders gesagt: "Wer bereits gezeigt hat, dass er selbstständig entscheiden kann, was er lernen muss, und es dann auch tatsächlich lernt, ist in Rollen hervorragend, in denen genau diese Fähigkeit gefragt ist"
Torvalds hatte 1991, als die erste Linux-Version veröffentlicht wurde, kaum eine eigentliche Informatikausbildung erhalten
Sehe ich auch so
Wir hatten im Studium ebenfalls eine Aufgabe, bei der wir ein Multiprozess-OS in 68K-Assembler selbst schreiben mussten
Durch solche Erfahrungen konnte ich Struktur und Funktionsweise des Linux-Kernels viel leichter verstehen
Wenn man nicht einmal weiß, was ein Kernel ist, kann man gar nicht erst anfangen
Kürzlich habe ich versucht, mir ein numerisches Problem ohne Vorerfahrung selbst beizubringen (einen Sparse-LU-Solver bauen)
Am nützlichsten waren dabei nicht eigenes Herumimplementieren oder das Zerlegen bestehender Solver, sondern Vorlesungsunterlagen zu genau diesem Thema
Wenn man die ganze Vorlesung verfolgt, lernt man auch verwandte Konzepte kennen, die einem vorher gefehlt haben
In anderen Bereichen war es ähnlich: Universitäre Kursmaterialien waren oft von höchster Qualität
Wenn man behauptet, Uni-Unterricht sei unnötig, ist schwer zu erklären, warum ausgerechnet die besten Materialien oft aus der Universität kommen
Manche sagen zwar, Selberbauen sei am besten fürs Lernen, aber Universitätsprojekte bewerten den tatsächlichen Aufbau ja ebenfalls fast immer sehr stark
Stimme voll zu
Auch tiefgehende Fachbücher sind großartig, aber der Wert hängt komplett davon ab, mit welcher Haltung man an sie herangeht
Lernt man nur Theorie ohne jede Anwendung, verliert man schnell das Interesse und vergisst alles wieder
Lernt man Theorie dagegen im Zusammenhang mit einem realen Bedarf oder einer konkreten Aufgabe, wird sie sofort zu wertvollem Praxiswissen
Wenn jemand früh als Autodidakt schon viel Erfahrung gesammelt hat und dann an die Universität geht, ohne die Leidenschaft zu verlieren, kann er in kurzer Zeit Erstaunliches leisten
Unterm Strich ist Theorie natürlich wichtig
Aber wenn man erst etwas baut und danach die Theorie lernt, erkennt man viel klarer, worin die eigentlichen Einsichten bestehen