Also, wie man meiner Meinung nach ein erfolgreicher Programmierer wird:
1. Man besorgt sich ein hilfreiches Betriebssystem.
Dazu müssen wir erst klären, was ein hilfreiches Betriebssystem ist. Hilfreich wäre es natürlich, wenn man genau zurückverfolgen könnte, wie das Programm läuft, weil sonst das Debugging schwer wird, wenn nicht das eigene Programm Schuld am Crash ist. Außerdem kann man im Quelltext des Betriebssystems herauslesen, wie Dinge implementiert sind, und die müssen relativ gut implementiert sein, da es ja eben im Betriebssystemcode ist, der gewöhnlicherweise von vielen Leuten überarbeitet wird - jedenfalls deutlich mehr, als der eines relativ unbedeutenden Nischentools.
Zweitens ist es nützlich, wenn standardmäßig ein guter Quellcode-Editor dabei ist, der Syntax-Highlighting für viele Sprachen unterstützt und übliche programmier-relevante Dinge anzeigen kann, wie eine Vertikale Linie und die Zeilennummer.
Welche Betriebssysteme kommen also in Betracht: Eine Linux-, Hurd- oder BSD-Distribution und so weiter, wie Ubuntu. Was ist eher Suboptimal: Closed Source, wie OS X oder Windows, weil diese die genannten Vorteile nicht bietet.
2. Man entscheidet sich für eine Programmiersprache.
Dabei stellen sich zwei Fragen: Zum einen, welche Programmiersprache praxistauglich ist, und zum zweiten, welche sich besonders leicht erlernen lässt. Dabei ist klar, dass sich das teilweise widerspricht.
Man kann jetzt viel Zeug aufzählen, aber so viel Zeit habe ich nicht. Besonders relevant sind: Bash, C/C++, Rust, Java, Python, Ruby, Go.
Ich teile es mal grob ein:
1. Bash: Lahm und hässlich. Aber die Programmierung geht schnell von der Hand, weil man ja viele komplexe Optionen hat.
2. Java: Nicht gerade schnell, dafür Portabel und einfach.
3. Python/Ruby: Lahm
4. Go: Von Google und nicht das schnellste...
5. C#: Dazu brauche ich glaube ich wenig sagen - ist das Standardteil für Microsoft-Zeug.
6. C/C++: Hat einige unschöne Dinge für Anfänger, aber das schnellste nach Assembler, was es so gibt.
7. Rust: Quasi der Nachfolger von C, mit Vereinfachung für Multithreading-Implementierungen. Sehr leistungsfähig, aber nicht unbedingt einfach zu erlernen.
Somit bleiben eigentlich nur 2 sinnvolle Optionen übrig, die relativ einfach zu erlernen und dabei auch nützlich sind: C/C++ und Java. Und wenn man schon Linux als Betriebssystem hat, würde ich C++ nehmen, auch wenn Java einen Tick einfacher wäre.
3. Man lädt sich einen Compiler herunter.
Bei Ubuntu per Befehl
sudo apt install gcc.
4. Man legt eine C++-Datei an.
Einfach eine leere Datei mit der Endung .cpp, die man dann mit Gedit öffnet.
5. Man kopiert sich einen Hallo, Welt-Quelltext in die Datei und kompiliert sie.
Kompilieren geht mit dem Befehl:
g++ *.cpp-Dateiname* - beispielsweise
g++ Hallo_Welt.cpp
6. Man führt sein erstes Programm auf der Konsole aus und freut sich, dass "Hallo, Welt!" ausgegeben wird.
Mit
./a.out.
7. Man macht ein Tutorial
Learn C++ - Free Interactive C++ Tutorial
8. Man hilft in einem Projekt mit.
Dazu klont man mit git ein interessantes C++- OpenSource-Projekt, schaut, welche Bugreports offen sind und hilft da ein wenig mit. Vielleicht hat man ja zufälligerweise selbst ein Problem mit einem Programm und kann sich so behelfen.
9. Man fügt einem Projekt neue Funktionen hinzu
10. Man erstellt sein eigenes Projekt
11. Man lernt andere - vorzugsweise modernere - Programmiersprachen, wie beispielsweise Rust
Natürlich kann man auch eine Visual Studio-Lizenz kaufen, sich nicht dafür interessieren, wie intern irgendwas läuft, und sich freuen, wenn man sein erstes C#- Programm erstellt hat, das beim Öffnen den PC herunterfährt und man damit seine Freunde ärgern kann. Für mich ist das nur ein Qualitätsunterschied.