Java Programmieren lernen? Wie anfangen?

6 Antworten

Der Weg zum Programmierer, besonders zu einem passionierten, ist steinig.

Das Riesenproblem ist, dass mit den ersten Lösungen, die sich in der Praxis Nutzen haben, man einen Trigger erfährt, hinter dem wir unser ganzes Leben lang hinterherlaufen. Es ist das Gefühl, etwas (Großes?) geschaffen zu haben.

Leider ist es so, dass viele "Programmierer" dies tatsächlich als Maßstab für all ihr Handeln heranziehen. Lösungen zu produzieren, ist aber nur der kleinste Teil.


1. Lerne die Kontrollstrukturen Sequenz, Selektion und Iteration in einer Programmiersprache deiner Wahl.

2. Lerne algorithmisches Denken indem du viele "kleine" Programmieraufgaben löst.

3. Lerne Aufgaben zu analysieren, zu synthetisieren und zu komponieren. Welche Einzelaufgaben muss der Code lösen, wie stelle ich das im Code dar und wie verbinde ich die Einzelteile)

4. Entscheide dich vorerst für nur ein Programmierparadigma, JAVA -> Objektorientierung

5. Lerne die Konstrukte und die API der Sprache (Klassen, Objekte, Referenzen, ...)

6. Lerne UML

7. Lerne die identifizierten Design-Patterns des Paradigmas (in der Objektorientierung sind bis heute 26 Stück identifziert)

8. Übe intensiv Modellbildung (hier objektorientiert), also den Transfer von komplexen Sachverhalten der realen Welt in ein Programm.

9. Lerne die SOLID-Prinzipien und Law of Demeter

10. Lerne einen Technologiestack (Persistenz bis zum Netzwerk-Client)

11. Lerne eine weitere Programmiersprache mit einem anderen Programmierparadigma und beginne wieder mit 1.

12. Lerne die Verbindungspunkte der Programmierparadigmen

13. Lerne, wann welches Programmierparadigma der Aufgabenstellung angemessen ist und in welcher Form sie sinnvoll kombiniert werden können.


Warum das alles?

Programmieren oder Softwareentwicklung ist eine ingenieursmäßige Tätigkeit.

Sehr viele Programmierer denken, programmieren ist eine kreative Tätigkeit. Es gibt drei Anteile im Softwareentwicklungsprozess, die tatsächlich kreativ sind:

1. Die Idee, welche ein Realweltproblem löst.

2. Wie man aus seinem Auftraggeber möglichst gut die Anforderungen an die Software herausbekommt

3. Die Identifikation, welche semantischen Artefakte bei der Lösung des Problems beteiligt sind (Modellbildung)

Die reine Programmiertätigkeit selber ist nicht kreativ. Es ist eine möglichst 1:1 Abbildung des unter 3. identifzierten Modells in einer Programmiersprache.


Programmieren macht am Anfang sehr viel Spaß. Vor allem wenn man alleine programmiert. Heutzutage werden Projekte aber meistens nicht mehr von Einzelpersonen gestemmt, sondern von einem Team. Wenn man vormals sich seine "eigene Welt" zusammenprogrammiert hat, ist in einem Team die Konvergenz gegen ein Model, welches die Realität möglichst gut repräsentiert, zu akzeptieren. Und hier scheitern Teams regelmäßig. Teams die nicht scheitern, haben entweder eine Autorität, die "ihre" Vorstellung von der Realität "durchdrückt", die nicht maßgeblich falsch ist ODER das Team selber ist methodisch naturalistisch aufgestellt und synchronisiert ständig das Modell mit der Realität.

Was ich damit sagen möchte: früher oder später wird man mit dem einen oder "kreativen" Softwareentwickler zusammenrasseln, wenn um Quellcodequalität geht.

Die Wirtschaft interessiert sich aktuell noch nicht so sehr für Quellcodequalität, weshalb teilweise noch Narrenfreiheit existiert. Alles, was dem Unternehmen einen Wettbewerbsvorteil gegenüber anderen Unternehmen verschafft ist ersteinmal akzeptabel. Mögliche unterschiedliche Positionen von Entwicklern werden als gegeben angesehen, weshalb die Wirtschaft heutzutage mittlerweile folgende zentrale Eigenschaft von einem Softwareentwickler erwartet:

Sozialkompetenz.

Für einen kompletten Einsteiger vielleicht zu schwierig, aber nach ein paar Stunden Programmiererfahrung an anderen Aufgaben, die man über Google findet, empfehle ich hackerrank.com. Da gibt's viele Aufgaben in unterschiedlichsten Bereichen in allen großen Programmiersprachen.

Willst Du die Top-Down-Methode: Gleich mit Grafik etc. beginnen und schnell Resultate sehen, so ist die "Java Insel" wohl ein guter Einstieg.

Die Bottom-Up-Methode: Erst mit Bits und Bytes (also historisch) zu beginnen hat auch seine Vorteile: Du kannst aufbauend lernen und musst Dich nicht fragen, wie denn ein Objekt funktioniert, denn am Anfang kamen diese "Dinger" gar nicht vor. Hierzu empfehle ich: https://programmieraufgaben.ch/uploads/java.pdf

In jedem Fall: Üben, üben, üben: https://programmieraufgaben.ch

Am besten üben mit eigenen Projekten.

Was möchtest Du wissen?