Wenn ich Programmierer werden möchte, worauf muss ich achten? Was gibt es für Möglichkeiten und Unterschiede das zu lernen?
Das hängt natürlich von deinem Alter, deinen Vorkenntnissen, deiner Schulbildung usw. ab. Auch von deiner Motivation. Ich empfehle nicht, den Beruf zu ergreifen, nur, "weil man da ganz gut bezahlt wird".
Beim Programmieren gibt es von jeher ein Spannungsfeld zwischen Pragmatismus und der abstrakten, reinen Lehre. Meiner Meinung nach braucht man etwas von beidem, um erfolgreich zu sein. "Wenn du Schwierigkeiten beim Coden hast, lerne mehr Theorie; wenn du Schwierigkeiten beim Lernen der Theorie hast, code mehr." Das schlägt sich auch in der Ausbildung nieder.
Es gibt z.B. die Möglichkeit, diverse Zweige der Informatik an Universitäten und Fachhochschulen zu studieren. Inzwischen sind die Grade (Bachelor, Master) hier standardisiert, früher war das noch wesentlich undurchsichtiger. Dort gerät man auch fast zwangsläufig über Praktika, Jobbörsen, Kommilitonen etc. in Kontakt mit späteren Arbeitgebern, aktuellen Plattformen, möglichen Spezialisierungen etc. Allerdings ist es von der Programmierung, die man im Studium erlernt, oft ein weiter Weg bis zu der Softwareentwicklung, die in den Firmen betrieben wird. Viele der interessanten Themen werden "draußen" nur von wenigen Spezialisten bearbeitet, während das Gros der betrieblichen Softwareentwicklung häufig wiederkehrende Problemstellungen für immer neue Kunden und technische Umgebungen umsetzt. Frisch aus der Schule ist es nicht immer leicht, den Praxisbezug im Studium zu erkennen.
Andersherum kann man auch eine Ausbildung zum Fachinformatiker für Anwendungsentwicklung anstreben. Diese findet schon in einem Unternehmen statt, mit realen Anforderungen, pragmatischer Herangehensweise und Werkzeugen/Umgebungen, die auch bei anderen Projekten eingesetzt werden. Die Erfahrung in echten Projekten ist das, was einem späteren Arbeitgeber oft am wichtigsten ist. Die "Keine Berufserfahrung für Anfänger ohne Berufserfahrung" Klammer kann zwar manchmal greifen, Kontakte und die vielfach beschrienen "Softskills" helfen hier aber. Der Markt ist auch immer noch nicht gesättigt, so dass man mit etwas Hartnäckigkeit schon einen Ausbildungsbetrieb findet, wenn man durchblicken lässt, dass man die Mühe wert ist. Überdurchschnittliche Schulzeugnisse sind hier vielleicht hilfreich, aber auch Hobbytätigkeiten und allgemeine PC-Affinität. Es werden hier Lücken in deinem Wissen über Theorie bleiben, die du nach Möglichkeit aus eigenem Interesse füllen solltest.
Auch als Autodidakt kann man sich am Markt versuchen. Um ehrlich zu sein, sind die Zeiten, in denen man als Teenie mit PHP Kenntnissen Shopsysteme für Großkunden hinlegen konnte aber weitgehend vorbei. Trotzdem: Wenn du drin bist, bist du drin. Hast du Projekterfahrung vorzuweisen und Fertigkeiten im Umgang mit einer zeitgemäßen Umgebung erlangt (woher auch immer), tritt der Titel meist in den Hintergrund, zumindest was deine Chancen angeht, eingestellt zu werden. Alles immer unter der Maßgabe, dass du halbwegs weißt, was du da machst. Als Seiteneinsteiger mit einem Hintergund in Physik, Maschinenbau etc., wo Programmierung schon ein Thema ist, geht es natürlich leichter.
In Deutschland ist die Höhe des Gehalts allerdings oft sehr stark an den akademischen Grad gebunden. Du wirst als Seiteneinsteiger mit einem Master der Literaturwissenschaften in vielen Unternehmen mehr verdienen, als als Fachinformatiker oder "ungelernter" Autodidakt, unabhängig davon, was die Stelle tatsächlich fordert. Da passiert aber auch viel, der internationale Markt wird auch immer relevanter, so dass man in dem einen Unternehmen eine ganz andere Philosophie finden kann, als in dem nächsten. Was auch heißt, dass eine Absage oder Einstufung selten kategorisch ist.
Es gibt auch kommerzielle Programmiererschulen, die oft auf internationaler Ebene arbeiten und Zertifikate mit unterschiedlicher Anerkennungsrate ausstellen. Ich habe da keine Erfahrung mit. In der EU kommt man mit den deutschen Abschlüssen (und entsprechenden Sprachkenntnissen) bei Bedarf gut unter, der internationale Markt hat aber auch begabte Inder, Osteuropäer oder Südamerikaner zu bieten, ob man sich mit denen auf einen Preiskampf einlassen will, sei dahingestellt.
Wichtig ist in jedem Fall, sich weiter zu entwickeln. Alles, was man an Sprachen, Technologien, Plattformen und Algorithmen lernt, wird obsolet und nur die abstrakten Erkenntnisse, das Lernen, wie man lernt und die Anekdoten bleiben. Andererseits braucht man auch ein Gespür dafür, dass jemand mit dem Zeug, das man macht, tatsächlich arbeiten wird, egal, ob da GoF Patterns drin sind, oder nicht. Wie gesagt, akademisch korrekte, aber weltfremde Software aus dem Elfenbeinturm kann genauso daneben sein, wie plan- und architekturlos hingeklapperter, monolithischer Spaghetticode. An irgendeinem Punkt sollte dir das nicht mehr egal sein.
Bei den meisten Kollegen war es wohl eher so, dass sie erst angefangen haben, zu programmieren und sich dann überlegt haben, was sie beruflich machen wollen. Zumindest war es bei mir so. Aber ich habe auch erlebt, dass man da "von Null" reinwachsen kann. Ich persönlich habe im Studium viele Dinge gelernt, ohne sie wirklich zu verinnerlichen, mit einer realen Anforderung und "echtem" Code wird der Zweck vieler Themen viel eher klar. Mir hätte es vielleicht geholfen, erst die Ausbildung zu machen und dann zu studieren, ist heute schwer zu sagen. Der Weg erschließt sich oft erst beim Laufen.