Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student)

KogoroMori21

Aktives Mitglied
Guten Tag,
ich habe eine Frage die wahrscheinlich unterschiedliche Antworten mit sich bringen wird. Oft stoße ich an ein Problem beim Programmieren, wo ich Stunden oder sogar Tage daran sitze und einfach nicht auf die Lösung komme, bevor ich das Problem dann im Internet nachschaue. Zwar will ich das immer selbst erarbeiten, aber die Frage ist wie sinnvoll ist das wenn ich nach Stunden und Tagen nicht auf die Lösung komme. Dann denk ich mir manchmal lieber die Lösung im Internet suchen und daraus lernen.
Also wie lange würdet Ihr mir raten es an einer Aufgabe zu versuchen bevor man die Lösung oder einen Ansatz im Internet sucht?
Aufgrund meiner festgelegten Abgaben im Modul Programmierung, hab ich leider auch nicht die Möglichkeit unendlich lange an einer Aufgabe zu verweilen, sondern die Abgaben sind in 1-2 Wochen Abschnitten.

Mit freundlichen Grüßen
 
Aus der Praxis (>15 Jahre Softwareentwicklung) - sobald ich auf Probleme stoße und nach 1, 2 Dingen ausprobieren nicht weiterkomme fängt die Zahl meiner offenen Tabs mit baeldung, stackoverflow, github & Co an zu explodieren 🙂 Allerdings fallen die Probleme meist in zwei Kategorien:
  • Themen, die ich schlicht noch nicht kenne. Beispiel zuletzt war, wie verwenden den openapi generator in Maven. Da brauch ich schlicht Dokumentation. Die sind in der Regel auch schnell erledigt, passende Dokuseiten suchen, anwenden und fertig
  • Obskure/Detail-Probleme. Da ist leider das Problem, dass es da oft keine einfache Lösung gibt sondern man ziemlich viel Puzzle Teile zusammensuchen muss. Hier ist die Hauptarbeit die gefunden Themen zu verstehen & zu bewerten. (Lösungen aus 2006 sind in der Regel z.B. nicht mehr aktuell).

Grundsätzlich ist es keine Schande sich Hilfe von außerhalb zu holen.

Jetzt kommt allerdings ein große Aber 🙂
Im Studium sollten die Aufgaben in der Regel mit den Materialen aus der Vorlesung lösbar sein. Zudem gibt es Prüfungen/Klausuren, wo man auch keinen Zugriff aufs Internet hat. Zudem kommt hinzu, dass die Übungsaufgaben in der Regel "künstliche" Aufgaben sind, wo die Chance hoch ist, dass man im Netz eine fertige Lösung findet, die man nur kopieren muss (oder sie sich von ChatGPT generieren lassen kann). Da bleibt dann ggf. der Lernerfolg auf der Strecke.

Deswegen würde ich das im Studium etwas abschwächen. Wenn man feststellt, dass man sich im Kreis dreht - als erstes die Unterlagen zum Modul zu rate ziehen. Hilft das auch nicht, würde ich Google/ChatGPT nutzen, aber versuchen nur die konkreten Teile wo es hängt (und keine ganzen Lösungen) und insbesondere zu verstehen was man übernimmt.
 
Danke für deine ausführliche Antwort !
Das Problem bei uns ist, dass unsere Vorlesung mit dem Praktikum(=im Praktikum haben wir die Abgaben) nicht viel zu tun hat. Zudem überholen wir im Praktikum mit einem sehr großen Abstand die Inhalte der Vorlesung. Kommilitonen die ich fragen kann, hab ich leider auch nicht..

Die zwei Kategorien der Probleme hast du gut beschrieben.
 
Also wenn man nicht weiter kommt, dann kommt man nicht weiter. Je länger man in dem Zustand bleibt, desto mehr zeit verlierst Du.

Daher: Wenn Du an einer Stelle nicht weiter kommst, dann versuche zu erkennen, woran es scheitert. Denn dann kannst Du gezielt Wissenslücken aufarbeiten.

Dazu gehört also ein strukturiertes Vorgehen. Eine Unterteilung des Problems in Teilprobleme ist existenziell.

Das ist am Anfang viel verlangt. Aber da sollte man sich von Anfang an zu zwingen. Das ist das, was wir hier bei vielen Problemen immer wieder schreiben:

  • Lösung erst in Worten beschrieben. Das ist dann sowas wie eine Analyse.
  • Dann wird dies umgesetzt. Und zwar direkt in kurzen, übersichtlichen Methoden.

Und nur um es noch einmal zu betonen:
a) Du hast zu wenig Zeit um diese zu vergeuden. Also nicht auf Zwang irgendwas versuchen. Was oft helfen kann ist etwas Abstand. Also kurze Pause und dann erneut dran gehen mit etwas Abstand und evtl. siehst Du dann den Ansatz, der zur Lösung führt.
b) Ändere die Sichtweise: Es geht nicht um die Abgabe einer Aufgabe. Es geht um eine Kontrolle und Vertiefung Deines Wissens. Die Lösung der Aufgabe, die Du abgibst, ist dabei nur ein Nebenprodukt. Ziel ist also nicht, die Abgabe fertig zu kriegen sondern Ziel soll sein, dass Du Wissenslücken findest und schließt.

Und vieles ist einfaches Handwerkzeug. Das muss man nach und nach lernen. Das fängt bei der Syntax und Semantik der Sprache an und geht über einfache Dinge wie abstrakte Datentypen und Algorithmen hin zu Entwurfsmustern und Clean Code.

Java Grundlagen hast Du vermutlich abgedeckt. Datentypen und Algorithmen wird die Hochschule auch abdecken. Dann wären Entwurfsmuster und Clean Code wichtige Dinge, die Du Dir anschauen solltest.
"Entwurfsmuster von Kopf bis Fuß" wäre das Buch, das ich Dir ans Herz legen würde. Und Clean Code wäre http://www.clean-code-developers.de sowie Uncle Bob (Robert C Martin, z.B. auf YT: Uncle Bob - Clean Code - YouTube)

Clean Code scheint da am Anfang etwas aus dem Rahmen zu fallen, aber Software Entwicklung lernt man nicht in der Theorie sondern nur in der Praxis. Es geht also um das Programmieren selbst. Und da ist Clean Code eine sehr gute Unterstützung.
 
Ich würde erstmal einen großen Stapel Papier und einen Stift bereithalten. Man kann Dinge wie PAP,Struktogramm, UML nutzen, um sich programme und ihren Ablauf zu vergegenwärtigen, auch ohne dass des DIN-gerecht ist. Daneben gibt es Pseudocode, der oft hilfreich ist, oder das berühmte "Desctop-Testing", so man ein Programm auf einem Zetterl simuliert. Man kann auch Datenzellen als Kästchen aufzeichnen usw.

Als nächstes würde ich eine "PERL"-Direktive anführen: Es gibt mehrere Wege, etwas zu tun.

Und was ich gut finde, leider zu spät für mich entdeckt habe, sind die Möglichkeiten von JUnit und Mockito o.ä.

Für mich ist es so, dass mich die Vieltahl der Tutorials erschlägt, und ich es besser finde, sie als Hilfe zu nehmen, mir aber die Lösung selbst zu erarbeiten.

Was ich auch wichtig finde, ist die Idee von MVC, auch wenn sie nicht akkurat umgesetzt wird. Aber der Kerngedanke, Datenmodell, Nutzerkommunikation und Ansicht von der Programmausführung zu trennen, finde ich wichtig.

Man kann damit auch komplexere Programme testen, und die Nutzerkommunikation erst hinterher schreiben. und es vereinfacht auch das Testen der fertigen Programmteile.
 
verstehe ich nicht
Was genau verstehst Du nicht?
Das Zeit ein begrenztes Gut ist, sollte jedem klar sein. Und ich denke, dass man im Studium doch viel zu lernen hat und gerade da ist es wichtig, dass man strukturiert an die Sache heran geht. Was ich von jedem Absolventen erwarte ist, dass er gelernt hat zu lernen.
Und ich denke jeder hat schon erlebt, dass man ein Problem einfach nicht auf Zwang lösen konnte. Aber sobald man etwas Abstand bekommen hat, hat man dann plötzlich eine Idee. Das Unterbewusstsein verarbeitet halt Dinge auch noch weiter.

Das sind so typische Dinge, die ich von Leuten erwarte und was ich als "Common Sense" empfinde. Aber es ist erschreckend, dass viele da nicht einmal Ansätze von haben. Schon in der Schule war mein Vorgehen bei Prüfungen, dass ich immer erst alle Aufgaben einmal durchgelesen habe. Unter anderem eben genau aus dem oben genannten Punkt. Das Unterbewusstsein hat sich da dann auch schon weiter mit beschäftigt obwohl man andere Dinge gemacht hat. Und natürlich ganz wichtig: Man konnte dann gezielt über einzelne Aufgaben gehen um erst alles fertig zu machen, was direkt von der Hand ging.

Da liegt der Hase im Pfeffer begraben. Das ist auch durchaus so in der Praxis üblich. An der Hochschule muss er sich jedoch das Wissen angeeignet haben. Da bleibt nix übrig, außer in den sauren Apfel zu beißen und auswendigzulernen.
Nein. Auswendig lernen ist das schlechteste überhaupt. Du lernst dann vor einer Klausur / Prüfung zwar Dinge auswendig, aber das ist dann nicht im Langzeitgedächtnis. Damit ist es in späteren Semestern, wenn es darum geht, genau darauf aufzubauen, eben nicht verfügbar mit dem negativen Effekt, dass es um so schwerer wird, dem Stoff zu folgen und den Stoff zu beherrschen.

Daher kann ich nur jedem raten: Bleibt auch im Studium aktiv. Arbeitet jeden Stoff nach. Falls er Vorlesungen gibt, bei dem viel mitgeschrieben werden muss: Macht Teamwork - einer schreibt alles mit und das wird verteilt. Die Anderen können sich dann auf den Stoff konzentrieren. Das wechselt dann von Vorlesung zu Vorlesung und man kann dem Stoff schon in der Vorlesung folgen (Wobei ich hoffe, dass dieses Problem heute so nicht mehr existiert. Aber vor 25 Jahren war das teilweise ein Problem.)
Und ganz wichtig: Bei Übungen geht es um Vertiefung. Das ist ein Minimum zur Wissenskontrolle. Wenn man Lücken hat, dann sollte man diese direkt bearbeiten und schließen. Und bei dem Thema Java ist damit wichtig, dass man von Anfang an versucht, in dem Bereich Praxis zu bekommen und dann auch gewisse Dinge weiter vertieft, selbst wenn diese nicht direkt in der Vorlesung angesprochen wurden.

Aber natürlich kann das jeder so handhaben, wie es es möchte. Aber ich fürchte, dass es einem ggf. später auf die Füße fällt. Die große Chance, die man im Studium hat, ist halt, dass man das strukturierte Arbeiten und halt schlicht das Erlernen von neuen Themen lernen und praktizieren kann. Das sind in Interviews auch immer wieder mit ein Thema. So einfache Fragen a.la. "Wie erlernst Du Neues" oder "Wie bleibst Du auf einem aktuellen Stand". Man kann es auf viele Arten und Weisen formulieren - und es ist interessant, was da Leute antworten. Und das hat definitiv einen großen Einfluss auf die Einstellung eines Juniors. Denn da ist es auch wichtig, dass die Leute sich selbst neues Wissen aneignen.
 
Ja, Textverständnis ist nicht die Stärke von Tobias. Es geht eben explizit darum, wie sich jemand Wissen erarbeitet. Das mit Auswendig Lernen gleich zu setzen ist schon recht heftig, aber wundert bei einer Person nicht. Das Erklärt 15 Punkte in einem Informatik LK ohne auch nur irgendwas wirklich verstanden zu haben. Auswendig lernen ist halt doch keine gute Idee 🙂

Aber es gibt Studiengänge inkl. Prüfungsordnungen, die notenoptimiertes Bulimie-Lernen belohnen oder sogar erzwingen.
Aber hoffentlich nicht in technischen Studienrichtungen. Aber evtl. bin ich auch einfach verwöhnt von meinem Studiengang. Als Beispiel: Bei den Mathe-Klausuren war es so, dass man die Aufgaben in der Regel umformen konnte um dann einen Sonderfall zu haben und die Lösung stand dann nach paar Zeilen da. Die Alternative war das Schema F (das man tatsächlich auswendig lernen konnte), das dann 2 A4 Seiten Rechenweg mit sich brachte um dann auch das Ergebnis zu haben.

Klar, man zwischendurch auch mal Lernpausen machen
Nur einfach einmal für Dich: Es ging nicht um Lernpausen sondern darum, wie ein konkretes Problem gelöst wird. Also einfach noch einmal in Ruhe versuchen, den Thread zu lesen ehe man irgendwelche Personen direkt angreift.

Hab mich noch nicht weitreichend mit Lerntheorien beschäftigt, aber ohne gesammelte Erfahrung kann man, glaube ich, (außer man ist Einstein) kein Wissen aufbauen.
Und doch wolltest Du auf Erfahrung verzichten und nur auswendig lernen? Ist doch irgendwie nicht vereinbar. Aber nein - das müssen wir nicht vertiefen.
 
Ich würde da eher von veraltet sprechen. Oder was soll die Beleidigung gegen mich?!
Falls die Mods der Meinung sein sollten, dass Du nicht Tobias bist, dann war das die Bestätigung. Danke dafür.

Ansonsten ist es keine Beleidigung sondern schlicht eine Tatsache. Dazu einfach einmal an die vielen Diskussionen der letzten Jahre denken.

Du scheinst noch nicht begriffen zu haben, dass Erfahrung sammeln Auswendiglernen ist.
Nein, das ist schlicht falsch, evtl. einfach einmal nachlesen, was sich hinter diesen Begriffen versteckt.
Auswendiglernen ▶ Rechtschreibung, Bedeutung, Definition, Herkunft | Duden
Erfahrung ▶ Rechtschreibung, Bedeutung, Definition, Herkunft | Duden

Da sollte klar sein, dass Erfahrung sammeln nicht Auswendig lernen ist. Maximal kann man sagen, dass jemand, der etwas auswendig lernt dadurch auch Erfahrung sammelt. Wobei die Erfahrung im auswendig lernen natürlich nicht das ist, worauf man in der Regel hinaus will 🙂
 
Hab mich noch nicht weitreichend mit Lerntheorien beschäftigt, aber ohne gesammelte Erfahrung kann man, glaube ich, (außer man ist Einstein) kein Wissen aufbauen.
Auf unseren Bereich bezogen, beginnt man im idealfall mir der Automatentheorie. Die heißt so, weil es eine Theorie ist. Über einige Ziwschenschritte kommt man zur Theorie, wie ein Rechner sufgenaut ist und zur Algorithentheroie. Auch das ist alles noch sehr theoretisch und man muss die Inhalte lernen. Ich würde aber nicht von einem "stupiden" Auswendiglernen sprechen, als wenn man die Knochen eines Menschen lernt. Es ist eher so, dass man Systeme und Objekte abbldet und diese mit mathematischen Hilfsmitteln modelliert. Man ist auf dieser Schiene auch recht schnell bei den verschiedenen Programmierparadigmen und irgendwo bei den diversen Entwurfstechniken.

Obwohl hier im engeren Sinne der Aufbau der Hardware nicht wichtig ist, ist auch da viel Theorie drin. Um z.B. ein CD/DVD-Laufwerk zu verstehen, nutzt auch Erfahrung nichts- Denn worin soll man da Erfahrung haben?

ich meine, dass sich Erfahrung darin darstellt, dass man während des Erstellens von Programmen weniger in Hilfen sieht, und auch selbst weniger braucht, und insbesondere Fehler schneller findet.
 

Neue Themen


Zurück
Oben