Richtig programmieren lernen

zarabin

Neues Mitglied
Richtig programmieren lernen

Hi!
Seit gut einem halben Jahr versuche ich den richtigen Start zu finden , um das programmieren mit Python zu lernen. Ich habe diverse Lernmethoden ausprobiert und bin nun an einem Punkt der Verzweiflung angekommen. Durch Bücher , Online-Kurse und Tutorials konnte ich zumindest in die Welt der Programmierer eintauchen und die einfachen Basics erlernen. Würde man mir jetzt aber eine Aufgabe stellen , stünde ich nur blöd da und wüsste *ohne zu schummeln* überhaupt nichts. Irgendwie komm ich mir zu blöd vor..
Naja , natürlich habe ich auch über ein echtes Bootcamp oder ein Fernstudium nachgedach. Kostet natürlich viel Geld. Wenn sich kein anderer Weg findet dann wird es wohl die letzte Option sein, klar! Dennoch habe ich schon oft gehört und gesehen das es Menschen gibt die sich das erfolgreich , selbst beigebracht haben. Meine Frage ist nur wie ? Wäre über Tipps und Startmöglichkeiten super dankbar.
Denn ich habe wirklich lust dadrauf und möchte es durchziehen. Danke!
 
Eigene Projekte. Diese verdammten Udemy-Kurse sind das beste Mittel, um niemals einen echten Lernerfolg und Verständnis für die Technologie aufzubauen, weil du dein eigenes Hirn nicht anstrengen musst. Diese Ressourcen sind gut, wenn du Konzepte verstehen willst – wann verwende ich while, wann for, etc. – aber ein Gefühl wie die Sprache bekommst du nur, wenn du eigene Projekte damit umsetzt und dich selbst ins kalte Wasser wirfst. Beispiel: ToDo-App, Budget-App, ... auch gerne als CLI-Anwendung.
 
Sehe ich genauso. Gibt vollkommen zurecht auch zahlreiche YouTube-Videos darüber ("how to escape the tutorial hell/trap"). :D

TL;DR: Grundlagen lernt man durch Tutorials, aber eigenständiges Programmieren erfordert Übung. Übung macht den Meister! Code-Challenge-Webseiten und Praxisprojekte können helfen. Bei Tutorials selbst aktiv mitmachen, ggf. Notizen machen. Tutorials sollen dir im Wesentlichen eine Idee geben, wie man gewisse Dinge angehen und umsetzen kann, damit du später darauf gestützt eventuell deine eigene Lösung findest. Richtig Programmieren lernst du aber nur durch wiederholte Übung. Selbstständiges Problemlösen ist dabei entscheidend. Erst zum Schluss sollte man Frameworks und Bibliotheken angehen und dabei auch die Dokumentation nicht außen vor lassen.

Tutorials sind super für die Grundlagen bzw. um sich mit verschiedenen Themen und Arbeitsweisen vertraut zu machen.
Wie du aber letztendlich lernst, auf dich allein gestellt Code zu schreiben bzw. Projekte umzusetzen, ist ausschließlich durch Übung, Übung und nochmal Übung.
Tutorials sorgen für ein gewisses Exposure bzw. Awareness zu bestimmten Themen und Umsetzungsmöglichkeiten; Übung und selbst Projekte umzusetzen, erlaubt es dir, tatsächlich zu lernen, wie du programmierst, ohne einfach stupide Anweisungen von anderen zu befolgen und eine Codezeile nach der anderen abzutippen.
Selbst bei einfachen Grundlagen-Tutorials bietet es sich an, einfach mal den Editor/die IDE zu öffnen und ein bisschen mit dem Gelernten rumzuspielen und verschiedene Dinge auszuprobieren, damit sich das Ganze besser festigt und du ein Gefühl für die Funktionsweise erhältst.

Was auch noch helfen kann, sind verschiedene Code-Challenge-Webseiten. Hier werden zwar weniger realistische Projekte aus der realen Welt umgesetzt, dafür lernst du aber, ein gegebenes Problem in kleine Teile herunterzubrechen und dieses dann mittels Code Schritt für Schritt zu lösen.
Gleichzeitig fördert dies deinen Umgang sowie dein Wissen über die jeweilige Programmiersprache.
Der Fokus liegt allerdings i.d.R. auf Algorithmen und Datenstrukturen sowie teils abstrakten Aufgaben, die du in der Realität meist nicht selbst umsetzen müsstest, da es bestehende Implementierungen, Libraries usw. für häufige Aufgaben wie Sortierung, Filterung und sonstige Arbeit mit Daten aller Art gibt.
Trotzdem kannst du da aber sicher einiges mitnehmen, wenn du mit größeren Aufgaben überfordert bist und überhaupt nicht weißt, wo du anfangen sollst. Allzu sehr sollte man sich darauf aber auch nicht konzentrieren, da diese Challenges im Grunde einen ganz speziellen, separaten Skill trainieren und relativ wenig mit Programmierung in der Realität zu tun haben.
Als Beimischung schadet es aber definitiv nicht, um sein analytisches/logisches Denken zu trainieren und im Umgang mit einer Sprache fitter zu werden.

Darüber hinaus gibt es dann natürlich noch Tutorials oder auch Challenges, die sich mehr auf die praktische Umsetzung von ausgewählten Projekten konzentrieren. Das schon genannte Beispiel To-Do-App, teils gibt es aber auch deutlich ausführlichere und anspruchsvollere Sachen, die dann fast schon professionelle Softwareentwicklung widerspiegeln.
Wichtig ist hier aber immer: Nicht einfach nur angucken und abhaken, sondern auch selbst machen.
Je nach Lerntyp kann man sich das Ganze ja einmal im Ganzen angucken und dann selbst ohne Anleitung drauf los programmieren und/oder Schritt für Schritt mit dem Tutorial voranzuschreiten und alle paar Minuten zu pausieren und es dann selbst probieren.
Wenn man dann fertig ist, kann es auch hilfreich sein, dann mal selbst auf eigene Faust ein Feature zu erweitern bzw. die entstandene App auszubauen, ohne dass man hierfür eine Vorlage hat.
Eventuell hilft es bei Tutorials auch, sich Notizen über die groben Arbeitsschritte zu machen und davon ausgehend es dann selbst zu probieren. Wenn man nicht weiter kommt, kann man immer noch das Tutorial für den konkreten Code zu Rate ziehen. Erstmal würde ich dann aber tatsächlich auch versuchen, mal selbst zu überlegen und ggf. Google nach Lösungen zu bestimmten Teilaufgaben zu befragen.
Das ist letztendlich nämlich auch sehr wichtig, dass man fähig ist zu begreifen, welche Teilaufgaben erforderlich sind, um ein bestimmtes Feature umzusetzen, und dann auch selbst recherchieren kann, wie man bspw. ein Array sortiert oder eine bestimmte Ausgabe auf dem Bildschirm erreicht oder was auch immer.

Wenn man dann irgendwann soweit ist, dass man einfache Projekte selbst mit den Mitteln der Programmiersprache umsetzen kann, ist der nächste Schritt, sich Frameworks und Libraries anzuschauen, die man in der professionellen Entwicklung einsetzen würde.
Hier würde ich auf jeden Fall auch das gleiche Prinzip anwenden: Möglichst viel selbst ausprobieren und umsetzen. Nicht nur Tutorials schauen und vor allen Dingen auch die Dokumentation des jeweiligen Frameworks oder der Bibliothek lesen. Nicht unbedingt in der Fülle studieren, aber die Grundlagen eines Frameworks bspw., wie und warum man das einsetzt, sollte man schon mal gelesen haben. So kann man dann später auch besser unterscheiden, was vielleicht spezifisch ein Problem eines Frameworks ist und was eher mit der Sprache/der Syntax oder ähnliches zu tun hat. Nicht selten versuchen Neulinge, direkt bestimmte Frameworks einzusetzen, weil sie überall davon hören, scheitern aber dann daran, weil sie die Grundlagen nicht drauf haben oder nicht wissen, was im Kontext woher kommt und Framework und Sprache sowie andere Tools und Bestandteile nicht voneinander trennen können.
 
Zuletzt bearbeitet:
Würde man mir jetzt aber eine Aufgabe stellen , stünde ich nur blöd da und wüsste *ohne zu schummeln* überhaupt nichts. Irgendwie komm ich mir zu blöd vor..
Definiere Schummeln. Es ist vollkommen normal, dass man bei einer Aufgabe, die man in der Form noch nie gemacht hat, auf Resourcen außerhalb seines Kopfes zugreifen muss. ich programmiere seit >20 Jahren, davon >15 Jahre Vollzeit beruflich. Und zähle hier zu den erfahrenen Leuten, denen man auch die komplizierten Dinge geben kann.

Und trotzdem hatte ich diese Woche eine Aufgabe (konkret Wie rufe ich in Vaadin aus Clientseitigen Javascript eine Java Funktion auf dem Server auf). Und ich hab da Google bemüht und am Ende erstmal fast 1:1 das Beispiel von der Vaadin Seite übernommen. Man lernt als Entwickler nie aus und stößt immer auf Dinge, die man nicht kennt und wo man sich informieren muss.

Übung macht den Meister. Und am Anfang schlägt man nochmal simple Dinge nach (wie funktioniert ein if-Statement, wie funktioniert eine for-schleife). Irgendwann hat man das x-mal gemacht und es sitzt. Dann schlägt man halt größere Konzepte nach etc. Das ist vollkommen normal. Wichtig ist nur, dass man anfängt und selber entwickelt. Klein anfangen und sich nicht entmutigen lassen
 

Motivation​

Was ist denn dein Ziel?

  1. Professionelle Softwareentwicklung
  2. Hobby
  3. Bestimmter Bereich (Datascience, ML, usw.)
  4. Projekt umsetzen
  5. Angeben
  6. ???

Abstraktion​

Es klingt so, als hättest du die Grundlagen drauf, hättest aber noch Schwierigkeiten mit der Abstraktion von Aufgaben. Für guten Wissenstransfer vom bisher Gelernten in die Praxis brauchst du Erfahrung. Die Erfahrung kriegst du, wie bereits erwähnt wurde, durch Übung und auch dadurch, dass du anderen beim Denken zusiehst.

Tutorial-Projekte sind oft ein bisschen praxisfern. Die ToDo-App ist aber gut, weil du da mit einem möglichst kleinen Projekt viele Bereiche abdeckst (je nach Umfang): Persistenz/DB, CRUD, UI/CLI, Validierung, und vielleicht auch ein bisschen Netzwerk. Außerdem ist es in jeder Sprache möglich. Wenn das aber überwältigend wirkt oder du lieber etwas nützliches hättest, kannst du Python CLI-Tools schreiben mit denen du dir den Alltag vereinfachst oder automatisierst. Vielleicht ein Webcrawler, Lerntool, JSON-/CSV-Parser, Dateiumbenennung, Konvertierung oder Bildbearbeitung.

Ansonsten hat @JR Cologne das schon sehr gut beschrieben.

Schummeln​

Und wie hier ebenfalls schon erwähnt wurde, ist Nachschlagen kein "Schummeln", sondern ganz normal. Du kommst nicht dran vorbei, Dokumentationen zu lesen oder Lösungsstrategien und Bibliotheken nachzuschlagen. Wenn man die nicht jeden Tag nutzt, muss man die auch nicht im Kopf haben. Wenn es nur ein Prototyp ist, und ich keine Lust auf die Doku habe, nutze ich einfach fremden Code oder KI. Man muss sich nicht alles antun.

Hilfe​

Das klingt jetzt vielleicht ein bisschen blöd, aber Python + Aufgaben abstrahieren ist etwas, was ChatGPT sehr gut kann (Bard von Google kann es inzwischen auch ganz OK). Wenn du mal nicht weiter weißt, kannst du dich von der linearen und stumpfen Problemlösungsorientierung inspirieren lassen. Lass dich aber nicht in Sackgassen führen und nutze keinen Code, den du nicht selbst verstehst.

Frag auch gerne hier nach, wenn du eine Aufgabe lösen willst und nicht weißt, wo du anfangen sollst.
 
Zurück
Oben Unten