Wie sollte Ich meine Programmierkarriere beginnen?

Hallo Leute,

Zu meiner Person:
Ich bin 17 Jahre alt und habe seit längerem nach einem "Ding" gesucht, welches mich fasziniert und Ich rund um die Uhr machen kann.
Ja, Ich gehe noch zur Schule jedoch bin ich dort unterfordert und habe einfach zu viel Zeit auch, wenn ich viel mit Freunden machen.
Ich habe dieses Semester das Programmieren in Visual Basic in der Schule gelernt und es hat mich sofort gefangen. Nicht direkt Visual Basic sondern das Programmieren und die Logik die dahinter steckt. Dieses generelle lösen von Problemen war toll. Hatte sofort auf jeden Test dazu eine 1.

Da mich das so fasziniert hat wollte Ich hier mal nachfragen, wie ich am besten beginnen sollte, wenn Ich wirklich ein Meister werden will. Also so gut wie die besten "Hacker". Nicht um andere Leute zu hacken sondern einfach dieses Wissen eines Hackers zu besitzen. Habe mich im Internet schlau gemacht und ein paar Infos gefunden wie z. B How To Become A Hacker
Habe mir die ganze Seite mehrmals durchgelesen und finde es ziemlich gut dargestellt, jedoch wollte ich eine "Profi" Meinung einholen und habe dieses Forum da gefunden. Was hält Ihr von diesem Link?
- Sollte Ich wie im Link steht, als erstes mit Python anfangen oder wäre eine andere Einsteigersprache sinnvoller?
- Wie würdet Ihr einem Anfänger empfehlen zu lernen? Sollte Ich Kurse und Tutorials durchmachen um die Grundkenntnisse zu erlangen?
- Im Link meint der Autor man solle die Arbeiten von den besten nehmen und diese anschauen und probieren dann selber zu schreiben. Woher kriege ich die Programme der "Großen"?
- Ist das Unix Betriebssystem wichtig für mich als Einsteiger?

Mehr Fragen fallen mir auf die Schnelle nicht ein.
Ich hoffe jemand könnte mir helfen.

Mit freundlichen Grüßen, Konrad:)
 
Wenn Raymond kein Profi ist, wer dann?

Mit den "Großen" meint Raymond bekannte OpenSource-Projekte. Dort hast du die Möglichkeit in die Quelltexte zu schauen und dir ein paar Dinge abzugucken (Programm-Aufbau, Algorithmen für verschiedene Probleme etc.)

Unix-Systeme werden bevorzugt, weil sie zumeist OpenSource sind und eine maximale Flexibilität bieten. Schon beim Rumprobieren damit lernst du jede Menge über den Aufbau von Systemen. Ausserdem laufen viele Server auf Basis von Linux oder irgendwelchen Unix-Derivaten.

Welche Sprache du für den Einstieg wählst, ist Geschmackssache. Du wirst hier im Forum schon jede Menge Threads zu diesem Thema finden. Und auch wie du lernst, ist eine recht individuelle Angelegenheit. Manche lernen gut durch Tutorials, andere probieren lieber rum, wieder andere nutzen Bücher oder Video-Kurse zum Lernen. Auch hier musst du also selbst entscheiden, was dir liegt.
 
Ich kann dir aus meiner Erfahrung sagen, mach dir keine Kopf mit welcher Sprache/ OS du anfängst, die Hauptsache ist du fängst an. Der Rest (z.B. zusätzliche Sprachen erlernst du dann ganz neben bei)

Python wird zwar oft als Einsteiger Sprache angepriesen, allerdings unterscheidet sich die Syntax und der Aufbau stark von den meisten anderen Sprachen.

Ich persönlich bin froh das ich mit Java angefangen habe, da es hier A) viel Hilfe gibt B) du feste "Normen" einhalten musst/ geleitet wirst.

Arbeite inzwischen zwar als Web-Dev, aber wenn ich mir vorstelle mit etwas wie JS angefangen zuhaben und dann zu Java zu gehen, dass wäre sehr schwer geworden. JS gilt für mich als "gesetzloses land", da man hier einfach alles machen kann, wie man lustig ist (ist leider wirklich so).
Da ich von Java einen guten Stil gewohnt war, habe ich meine JS dadurch schnell auf ein neues Level gebracht und arbeite damit jetzt schon fast genauso Strukturiert wie mit java.

Ich würd dir persönlich Java/ C# empfehlen, da die gängigsten Programmiersprachen eine sehr ähnlichen Syntax folgen und die Sprachen echt Spaß machen, aber das ist wie @Bitmuncher schon sagte, Geschmackssache.
Überleg dir was du entwicklen willst (fang erstmal klein an), wähle eine passend Sprache (aber häng dich bei der Auswahl nicht auf) und fang an. Das ist der Trick ein "hacker" zu werden (ich hasse dieses Wort, aber ist ein anderes Thema).

Lern erstmal programmieren, helfe Leuten auf SO und der Rest kommt ganz von allein :)

Best regards
 
Tag 3

Vorab, Danke für die Antworten!

Habe nun vor 3 Tagen begonnen mich mit der Materie des Programmierens auseinanderzusetzen.
Habe als erste Programmiersprache Python gewählt, da der liebe Raymond sicher weiß wovon er spricht.
Habe vor in diesem Post regelmäßig meine Fortschritte zu dokumentieren.

Wie sieht mein aktueller Alltag als Programmieranfänger an?
Schule
Essen
Und danach schaue ich stundenlang Tutorials zu Python und arbeite mit dem "Lehrer" mit und probiere es zu verstehen.. :-)
Nach den paar Stunden Tutorial schauen, lerne Ich Englisch. Nicht das Ich es nicht kann.. Nur 1er seit dem ich denken kann, jedoch fehlt doch noch einiges, damit ich sagen kann.. Ja ich spreche perfektes Englisch.
Mache dies nun seit 3 Tagen und es bereitet mir enormen Spaß vor.

Jedoch hätte Ich noch eine Frage: Ich würde gern noch mehr parallel lernen. Damit meine Ich nicht, noch eine Programmiersprache sondern "Networking"
Weiß jemand wie ich am besten beginnen kann die komplexe Welt der Netzwerke zu verstehen?

Wie gesagt, werde diesen Beitrag hier regelmäßig aktualisieren.

Liebe Grüße
 
Zuletzt bearbeitet:
Vorab, Danke für die Antworten!

Habe nun vor 3 Tagen begonnen mich mit der Materie des Programmierens auseinanderzusetzen.
Habe als erste Programmiersprache Python gewählt, da der liebe Raymond sicher weiß wovon er spricht.
Habe vor in diesem Post regelmäßig meine Fortschritte zu dokumentieren.

Wie sieht mein aktueller Alltag als Programmieranfänger an?
Schule
Essen
Und danach schaue ich stundenlang Tutorials zu Python und arbeite mit dem "Lehrer" mit und probiere es zu verstehen.. :-)
Nach den paar Stunden Tutorial schauen, lerne Ich Englisch. Nicht das Ich es nicht kann.. Nur 1er seit dem ich denken kann, jedoch fehlt doch noch einiges, damit ich sagen kann.. Ja ich spreche perfektes Englisch.
Mache dies nun seit 3 Tagen und es bereitet mir enormen Spaß vor.

Das hört sich doch schonmal gut an. Ich würde dir noch eine Hochsprache wie C# empfehlen. Sie ist zwar wesentlich komplizierter und komplexer aber die Programmierumgebungen sind viel ausgepfeilter (z.B. Visual Studio). Damit kannst du sehr leicht GUI-Anwedungen schreiben. Ich finde zum rumspielen eignet sich C# viel mehr als Python, auch wenn mir hier jetzt vielleicht einige widersprechen werden, aber diese Ansicht ist sowieso subjektiv.
Mir macht es einfach mehr Spaß und du bekommst dadurch (selbst kleine Programme schreiben, die dir im Alltag nützlich sind) die nötige Routine, die du beim stumpfen Tutorial gucken und nachtippen nicht bekommst. Auch wenn viele behaupten, dass Python für Anfänger die Wahl ist, denke ich das nicht, da sie in meinen Augen etwas schlampig ist (Ich denke spätestens jetzt werden einige auf mich losgehen =D) Bei Python musst du, anders als bei C/C++/C#, den Variablen zum Beispiel beim Deklarieren keinen Typ zuweisen. Ich denke aber genau das ist für Anfänger wichtig, damit sie ihren eigenen Code besser verstehen. Meine ersten Gehversuche habe ich mit C++ gemacht. Dann bin ich zu C# und habe da viel Routine gesammelt. Zuletzte bin ich dann zu Python und habe mich ersteinmal erschreckt, da diese Sprache doch sehr anders ist und in meinen Augen im Vergleich sehr einfach. Ich denke als Allrounder, und wie ich das mitbekommen hast, willst du das auch werden, sollte man alle gängigen Sprachen zumindest etwas können und vielleicht eine oder zwei gut. Es ist unmöglich so viel Routine wie ein Vollzeitprogrammierer zu bekommen, vor allem in mehreren Sprachen. Das ist meiner Meinung nach auch gar nicht nötig.

Jedoch hätte Ich noch eine Frage: Ich würde gern noch mehr parallel lernen. Damit meine Ich nicht, noch eine Programmiersprache sondern "Networking"
Weiß jemand wie ich am besten beginnen kann die komplexe Welt der Netzwerke zu verstehen?

Beschäftige dich mich folgenden Dingen (Reihenfolge beachten), um ersteinmal ein Grundverständnis zu bekommen.
- Netzwerktopologien (Ring, Bus, Stern...)
- aktive Koppelelemente (Hub, Switch, Router...)
- OSI-Schichtenmodell
- IPv4 Aufbau, Netzklassen, Adressierung, IP-Konfiguraion (NIC)
- Funktionsweise Protokolle und Dienste (UDP, TCP (!!!), ICMP, ARP, RARP, RIP, DHCP, DNS, HTTP, SMTP, SSL/TLS, NAT)
- Subnetting (IPv4)
- VPN
- IPv6

Erst wenn du die Grundlagen einigermaßen verinnerlicht hast, kannst du überhaupt mit dem "Hacking" anfangen.
Viele machen das nicht und werden dann als "Skript-Kiddies" bezeichnet.
Ist allerdings nur meine Ansicht, also bitte nicht zu ernst nehmen.

Also so gut wie die besten "Hacker".

Darüber kannst du dann in 20 Jahren nochmal nachdenken.
Außerdem müsste man ersteinmal ein Maßstab für "Hackerskills" erfinden.
Selbst der beste "Hacker" hat sicherlich noch Informationslecks in irgendeinem Gebiet, welches man dem "Hacken" zuschreiben kann,
da dieses Gebiet einfach unglaublich riesig ist. Es ist nunmal nicht so, wie in Filmen gerne gezeigt.
 
Zuletzt bearbeitet:
Und danach schaue ich stundenlang Tutorials zu Python und arbeite mit dem "Lehrer" mit und probiere es zu verstehen.. :-)

Python ist ein sehr guter Anfang! Herzlichen Glückwunsch zum ersten Schritt!

Ab jetzt gilt: Nicht schauen, machen: https://www.hackerboard.de/programmieraufgaben/ - Und fleissig die Ergebnisse posten ;)

Gleiches gilt fürs "Networking". Neben den trockenen Theorie kannst du z.B. mit Scapy direkt praktisch und mit Python-Bezug einsteigen, z.B. Pakete verändern, bestimmte Pakete senden, Netzwerkstacks "testen".

Und bei Fragen steht dir das Forum natürlich immer offen!
 
Wenn Dir die Aufgaben im Forum noch zu schwer sind, solltest Du Dir trotzdem eigene kleine Herausforderungen stellen.

Oder nimm Dir einfach ein Beispiel aus dem Tutorial und ändere es ab.
Wie mit Lego solltest Du versuchen die Bausteine mal anders zusammenzusetzen und etwas eigenes kleines zu bauen.

Um Dein Englisch zu verbessern würde ich Deinen Lieblingsfilm nehmen und ihn mal auf Englisch gucken.
Falls die Aussprache zu ungewohnt ist, stell Untertitel (auf Englisch) mit ein.

Such Dir eine Kinderserie, da diese oft noch ein einfacheres Englisch und eine klarere Aussprache haben.
Besuch internationale Chats oder Leute, die auf Englisch skypen wollen zum Beispiel.

Und solltest Du Dir mal denken, dass die Frage, die Du hast "dumm" sei, dann sei Dir versichert, dass alle mal klein angefangen haben und jeder sich mal diese oder eine andere "dumme" Frage gestellt hat :wink:
 
Sprachen für Anfänger.... hmmmm Ich konnte mich mit dieser Aussage noch nie anfreunden^^ Aber Python, Java und C# sind wirklich schon gute Optionen. Ich habe damals mit Pascal angefangen^^

Zu dem Thema "Hacker"
Die besten "Hacker" sind Spezialisten in ihrem Gebiet. Irgendwann kommt der Punkt, wo man sich für eine spezielle Richtung entscheiden muss. Natürlich gehört Programmierung, egal in welcher Sprache, zum Handwerkzeug, genauso wie ein breites Allgemeinwissen, doch dann sollte man sich überlegen mit welchen Gebieten man sich tiefer beschäftigen möchte.
Guck einfach mal so durch, was dir am meisten Spaß macht, wo du am schnellsten ein Verständnis entwickelst und was dir einfach liegt.

Ich denke jeder von uns hat sein Thematik, mit der er/sie sich lieber beschäftigt. Ich zum Beispiel mag Verschlüsselungsverfahren, dafür würde ich mich niemals mit jemanden streiten, wenn es um Hardware geht, oder um die tieferen Schichten eines Betriebssystems.

Bleib weiter an der Programmierung dran und schnupper mal durch die vielen Themengebiete der Informatik. Aber eins merke dir, du kannst niemals alles wissen, also übernehme dich nicht, sonst verlierst du ganz schnell die Lust.
 
Um Dein Englisch zu verbessern würde ich Deinen Lieblingsfilm nehmen und ihn mal auf Englisch gucken.
Falls die Aussprache zu ungewohnt ist, stell Untertitel (auf Englisch) mit ein.

Such Dir eine Kinderserie, da diese oft noch ein einfacheres Englisch und eine klarere Aussprache haben.
Besuch internationale Chats oder Leute, die auf Englisch skypen wollen zum Beispiel.

Und solltest Du Dir mal denken, dass die Frage, die Du hast "dumm" sei, dann sei Dir versichert, dass alle mal klein angefangen haben und jeder sich mal diese oder eine andere "dumme" Frage gestellt hat :wink:

Danke für den Tipp, jedoch schaue Ich schon seit geraumer Zeit eigentlich alles auf Englisch. Grundsätzlich Serien. Eigentlich nur Serien.
Ich lerne gerade alle Grundvokabeln mit Langenscheidt. Ist wirklich sehr gut.

Ja, teilweise habe ich wirklich das Gefühl, dass Ich "dumme" Fragen stelle, jedoch bin ich zur Erkenntnis gekommen, dass hier im Forum sicher keine dummen Leute unterwegs sind und die sicher keinen Anfänger, wegen "Anfängerfragen" runtermachen. :)

Liebe Grüße
 
Beschäftige dich mich folgenden Dingen (Reihenfolge beachten), um ersteinmal ein Grundverständnis zu bekommen.
- Netzwerktopologien (Ring, Bus, Stern...)
- aktive Koppelelemente (Hub, Switch, Router...)
- OSI-Schichtenmodell
- IPv4 Aufbau, Netzklassen, Adressierung, IP-Konfiguraion (NIC)
- Funktionsweise Protokolle und Dienste (UDP, TCP (!!!), ICMP, ARP, RARP, RIP, DHCP, DNS, HTTP, SMTP, SSL/TLS, NAT)
- Subnetting (IPv4)
- VPN
- IPv6

Erst wenn du die Grundlagen einigermaßen verinnerlicht hast, kannst du überhaupt mit dem "Hacking" anfangen.
Viele machen das nicht und werden dann als "Skript-Kiddies" bezeichnet.
Ist allerdings nur meine Ansicht, also bitte nicht zu ernst nehmen.

Danke für die sehr ausführliche Antwort. :)
Hast du vielleicht gute Quellen zum Lernen?

Mit freundlichen Grüßen
 
Es lernt sicher jeder verschieden aber meistens hilft es, wenn man eine konkrete Aufgabe erledigen musst.

Die Lektüre von Protokollen - auf dem Niveau eines Programmierers bringt dir rein gar nichts, wenn du es nicht konkret anwendest. Ein Standardwerk über BSD Sockets von Stevens (DER Stevens) ist derart komplex, dass es verplemperte Zeit waere, sich das "trocken" durchzuziehen. Und das OSI Modell muss man nicht "lernen".. darüber stolpert man mal irgendwann, liest sich das 10 Minuten durch und dann ist das gelernt.

Und ohnehin kannst du heutzutage glücklicherweise Netzwerkprogramme schreiben, ohne dich "ganz" unten um bits/bytes uws. kümmern zu müssen.

Klar ist das interessant und langfristig auch gut zu wissen, aber dadurch lernst du nicht programmieren.

Meine Empfehlung ist also: Schreib kleine Programme. Idelerweise etwas, was du auch tatsächlich benutzen möchtest. Zapfe z.B. die Twitter API deines Accounts an und taste dich anhand der Aufgabe durch die Theorie.

Oder: Schreibe einen kleinen Webcrawler, der tote links entdeckt und auflistet.

Auf dem Weg dahin wirst du lernen, wie man die Dinge anpackt und das ist es letztlich, was du als Programmierer können musst. Dinge bauen, die laufen ;)
 
Und das OSI Modell muss man nicht "lernen".. darüber stolpert man mal irgendwann, liest sich das 10 Minuten durch und dann ist das gelernt.

Da muss ich dir entschieden widersprechen. Sicherlich hat man es in 10 Minuten auswenig gelernt aber wirklich ein Gefühl dafür zu bekommen was die Schichten machen und wie sie wann untereinander kommunizieren bedarf wohl etwas mehr als mal eben 10 Minuten drüber gucken. Ich finde das zumindest auswendig zu kennen ist absolute Grundlage für jeden Netzwerker aber viel nützlicher für das allgemeine Verständnis ist es zu wissen, wie nun wirklich die Website von dem Server auf meinen Bildschirm kommt; wie die Daten gekapselt werden, wenn sie alle Schichten durchlaufen, wann, welche Protokolle zum Einsatz kommen und wie sie voneinander abhängen.

Und ohnehin kannst du heutzutage glücklicherweise Netzwerkprogramme schreiben, ohne dich "ganz" unten um bits/bytes uws. kümmern zu müssen.

Was ist denn das für eine Aussage? Ich kann auch im Internet surfen, ohne überhaupt was über Netzwerk- oder Programmiertechnologie zu wissen... :rolleyes:

Klar ist das interessant und langfristig auch gut zu wissen, aber dadurch lernst du nicht programmieren.

Er sagte ja, dass er neben dem Programmieren sich auch mit Networking beschäftigen will. Als reiner stumpfer Programmierer lernt er halt eine oder zwei Sprachen und ist auf seiner Anwendungsschicht glücklich aber ich denke er will sich noch etwas "umgucken".

Hast du vielleicht gute Quellen zum Lernen?

Also da ist Wikipedia echt gut um einen Überblick zu bekommen. Ansonsten ist elektronik-kompendium.de auch ganz gut aber gib einfach die Stichworte bei google ein und du wirst überhäuft mit Quellen.
Wenn du es ausführlicher willst, kauf dir ein Buch (oder leihe dir eins aus deiner örtlichen lib aus) über Netzwerktechnik.
 
Zuletzt bearbeitet:
Da muss ich dir entschieden widersprechen. Sicherlich hat man es in 10 Minuten auswenig gelernt aber wirklich ein Gefühl dafür zu bekommen was die Schichten machen und wie sie wann untereinander kommunizieren bedarf wohl etwas mehr als mal eben 10 Minuten drüber gucken. Ich finde das zumindest auswendig zu kennen ist absolute Grundlage für jeden Netzwerker aber viel nützlicher für das allgemeine Verständnis ist es zu wissen, wie nun wirklich die Website von dem Server auf meinen Bildschirm kommt; wie die Daten gekapselt werden, wenn sie alle Schichten durchlaufen, wann, welche Protokolle zum Einsatz kommen und wie sie voneinander abhängen.

Ich sage ja nicht, dass es "unnützes" Wissen ist. Und bei großen Projekten oder Architekturfragen kann das ganz nützlich sein. Aber um (heute!) einen Netzwerkclient zu schreiben, braucht man das nicht mehr zu wissen.

Was ist denn das für eine Aussage? Ich kann auch im Internet surfen, ohne überhaupt was über Netzwerk- oder Programmiertechnologie zu wissen...

"Damals" mussten wir relativ "weit unten" code schreiben um zb einen ftp client herszustellen. Heute kann ich einen ftp client, zumindest unter modernen IDEs, schon zu 80% "zusammenklicken" (object Pascal/Delphi oder MS Studio). Auch in Perl und Python habe ich dafür fertige Module. Ich kann mich auf die Anwendung der Software konzentrieren und muss nicht Stundenland meine Sockets/Streams debuggen.


Deine Liste ist völlig in Ordnung und das sollte man als ITler auch alles wissen. Aber um in die Programmierung einzusteigen, braucht man es erstmal nicht. Und wie ich schon sagte - früher oder später muss man sich damit auch auseinandersetzen - aber sinnvollerweise erst, wenn es nötig wird.
 
Danke für die sehr ausführliche Antwort. :)
Hast du vielleicht gute Quellen zum Lernen?

Mit freundlichen Grüßen
Es gibt vom Rheinwerk Verlag (früher Galileo) OpenBooks. Darunter gibts das Handbuch für Fachinformatiker. Das sollte dir einen guten Rundumblick verschaffen. Dann kannst du bei den Themen in die Tiefe gehen. Es gibt dort auch Bücher zum Programmieren und zur Systemadministration und noch einige andere. Wenns englisch sein soll gibts von O'Reilly OpenBooks. Viele Hochschulen bieten ihre Unterlagen auch als PDF an. Google "Thema ext:pdf" z. B. Java oder Rechnernetze.

Meine Empfehlung zu den Sprachen:

Python: leicht zu lernen, "plattform unabhängig", man kann scripten und programmieren... prozedural und objektorientiert, hat eine weite Verbreitung in der "Hackerwelt"

Habs nicht gelesen, soll aber gut sein.

www.diveintopython.org

C/C++: Einfach nur weils der Klassiker ist und so ziemlich viel darauf basiert.

Java: Weil die Zukunft darauf hin driftet.

Ansonsten kann ich nur empfehlen die Grundlagen der Anwendungsentwicklung zu lernen. Dazu gabs in meiner Lehre ein gleichnamiges Buch mit entsprechenden Unterrichtsblock. Das war dann nur die Konzeption mit pseudo Code und UML um erstmal ein Verständnis dafür zu bekommen wie das überhaupt funktioniert. Und Softwareengineering. Das erlernen der Sprachen ist dann nur noch ein auswendig lernen der Syntax und danach kommt die Erfahrung.

Zum Werdegang: Kann man ganz kurz sagen... werde erstmal so etwas wie ein (Fach-) Informatiker, dann hast du eine gute Basis.

Betriebssysteme: Linux, Windows sind ein must have, MacOS vielleicht..
 
Betriebssysteme: Linux, Windows sind ein must have, MacOS vielleicht..

Bin bisher sehr gut ohne Windows ausgekommen. Ist also nicht unbedingt ein Muss. ;) Bei den Betriebssystemen kommt's darauf an was man später machen will und in welchem Unternehmen. Für mich sind z.B. die BSD-Derivate und Solaris wesentlich eher ein Muss als Windows. Ich verwalte allerdings auch keine Office-Netzwerke.
 
Bin bisher sehr gut ohne Windows ausgekommen. Ist also nicht unbedingt ein Muss. ;) Bei den Betriebssystemen kommt's darauf an was man später machen will und in welchem Unternehmen. Für mich sind z.B. die BSD-Derivate und Solaris wesentlich eher ein Muss als Windows. Ich verwalte allerdings auch keine Office-Netzwerke.
Naja er will "Hacker" werden. Da ist das ein Muss, dass man sich mit den gängigen Betriebssystemen auskennt. Und das nicht nur mal im Windows Server 2012 Buch mal gelesen hat.

Auch beim nur Programmieren sollte man das auf den Zielplattformen zumindest testen können. Auch wenns ne plattformunabhängige Sprache ist gibts doch mal Eigenheiten wie z. B. die Filesystem-Hirarchie.
 
Zurück
Oben