Das Verhältnis zwischen Anfängern und "alten Hasen"

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Serpens66
User
Beiträge: 259
Registriert: Montag 15. Dezember 2014, 00:31

Hallo zusammen.

Ich dachte es wäre hilfreich mal meine Wahrnehmung zu teilen, da ich sicher bin, dass es vielen anderen auch so ergeht (entschuldigt den langen Text :D):

Ich bin, auch nach den paar Jahren, immernoch Anfänger in Python und verstehe bei neuen Modulen oft nur Bahnhof, weshalb ich sie oft so lange meide, wie es irgendwie möglich ist.
Ich kann mich noch gut an meine Anfänge vom Programmieren erinnern, wo ich, wie sicher viele Anfänger, keine schleifen genutzt habe, sondern stattdessen den auszuführenden Code 20 mal hinkopiert habe. Wenn mir dann jemand damit kam, dass ich doch besser ne Schleife nutzen sollte, hab ich das zwar kopiert, aber überhaupt keine Ahnung davon gehabt, wie es funktioniert. Erst als ich irgendwann tatsächlich selbst den Überblick verloren habe, weil ich ohne Schleife soviel Code gebraucht habe, hab ich mich nochmal hingesetzt und den Umgang mit Schleifen gelernt.
Wenn ich heute nun Anfänger sehe, die das auch so machen, fasse ich mir auch an den Kopf und denke mir, was der Blödsinn soll. Und ja ich schreib ihnen das auch. Doch genau wie ich, ignorieren sie es meist oder verstehen es nicht.

Und auch heute noch verhalte ich mich leider genauso als Anfänger, wenn es um neue Module oder sonstiges Neues geht.
Ein Grund ist sicherlich, dass man gerade ohnehin schon überfordert ist und sich dann nicht noch zusätzliche Baustellen öffnen will. Ein anderer Grund ist, dass man nicht weiß, wo man diese neue Sache gut und einfach erklärt nachschlagen kann. Ein Blick in die Python Dokumentation schreckt sehr ab, weil das nicht anfängergerecht geschrieben ist (logischerweise). Und dicke Wälzer (Tutorials) durchzuackern war noch nie mein Fall.
Ich hab für mich selbst auch erst jetzt entdeckt, dass es hilft im Internet ein wenig nach dem entsprechenden Stichwort zu suchen um leichte Erklärungen davon zu finden. Leider gibt es auch sehr viele noch kompliziertere Beschreibungen einer einfachen Sache im Netz. Dh. man muss erstmal lernen schnell zu erkennen, ob eine Erklärung auch für einen verständlich geschrieben ist.. sonst gibt man an dieser Stelle wieder sehr schnell auf.

Was will ich damit sagen?
Ich möchte damit mein eigenes Verhalten, das vieler Anfänger und sogar das der "alten Hasen" erklären. Ich habe das Gefühl, dass sich "alte Haen" und Anfänger hier oft nicht so gut verstehen. So ging und geht es mir auch, je nach dem ob ich etwas schon kann oder selbst Anfänger bin. Ich frage nach einem bestimmten Problem und anstatt eine eindeutige Antwort zu bekommen, höre ich was es an meinem Code alles zu bemängeln gibt. Das demotiviert mich sehr... Obwohl ich es ja selbst so mache, wenn ich mal au der Seite des "alten Hasen" stehe (es dabei aber niemals böse, sondern gut meine).
Ich würde mir wünschen, wenn jeder "alte Hase" sich nochmal versucht in die Zeit als Anfänger hineinzuversetzen und dadurch vllt etwas behutsamer mit Anfängern umgeht. Eine kleine anfängergerechte Erklärung des Sachverhalts hilft dem Anfänger es zu verstehen. Anstatt zu schreiben "warum machst du so offensichtlichen Blödsinn", sollte man sich wieder darauf besinnen, dass dem Anfänger es erst viel später klar wird, was er da für da für einen Blödsinn verzapft hat.
Zusätzlich müssen aber natürlich auch die Anfäger versuchen zu verstehen, wie sich die alten Hasen fühlen, was sie aber erst können, wenn sie selbst mal in der Lage waren. Aber selbst dann, fällt es mir selbst sehr schwer, bei Aussagen wie "warum hast du das so gemacht und nicht den offensichtlichen python weg"? nicht das Handtuch zu werfen...
Deswegen habe ich dieses Forum auch immer so gut es geht gemieden, außer ich weiß wirklich nicht mehr weiter...um mir dann nur wieder Vorwürfe anstatt Problemlösungen anhöhren zu müssen. Ja das war mein Eindruck von diesem Forum. Aber jetzt habe ich mir selbst klarmachen können woran das liegt und ich hoffe nun besser damit klarkommen zu können.

Und damit auch andere es verstehen, dachte ich mir es sei gut, dies mal öffentlich zu schreiben :)
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Die Vorwürfe machst du dir vermutlich immer dann, wenn dir dein eigenes Unvermögen beim Programmieren bewusst wird. Es sagt ja normalerweise niemand, dass du ein schlechter Mensch bist, sondern derjenige bezieht sich auf deinen Code. Dass es für Leute, die Schwierigkeiten in dem Bereich haben, nicht so toll rüberkommt ist klar, ändert aber nichts an der Tatsache. Das Ding ist einfach, dass in einem öffentlichen Forum eben auch alle möglichen Leute mitlesen. Da ist es besser, wenn zu schlechtem Code auch entprechende Hinweise gegeben werden, da mitlesende Anfänger diesen schlechten Code sonst womöglich übernehmen. Übrigens bleibt schlechter Code auch oft genug unkommentiert stehen, einfach weil dann niemand Lust hat, es zum x-ten Mal zu bemängeln - und weil BlackJack gerade keine Zeit hat... ;)
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

@Serpens66: Was Du schreibst, eigentlich kann ich das richtig gut nachvollziehen, weil ich z.B. bei meinem ersten Script in PHP vor dem Problem stand, dass ich nicht wusste, wie man die Ergebnisse aus einer Schleife herausbekommt und nicht nur das Ergebnis vom letzten Durchlauf. In einem Forum hatte ich darauf keine Antwort erhalten, erst später in einem Buch gesehen, dass man die Ergebnisse am Ende einer Schleife in einem Array speichern könnte oder mit .= sammeln, um mit diesen nach einer Schleife weiter arbeiten zu können. So "doof" oder unwissend war man halt beim Einstieg und die Antworten waren frustrierend.

Also ja, zu einem gewissen Teil ist es nicht unbegründet, was Du schreibst. Jeder hat einmal angefangen und weil ich mich noch richtig gut daran erinnern kann wie es mir erging, versuche ich zu unterscheiden, ob jemand nur fragt, weil er zu faul ist zum Lernen oder nur nach einer möglichst fertigen Lösung sucht, ohne wirklich lernen zu wollen, oder ob er sich sichtlich Mühe gibt, nur in den ersten Wochen noch nicht mehr zu erwarten ist. Und wenn ich letzteres für gegeben halte, habe ich mich auch schon eingemischt, wenn da zu einseitig nur auf Fehler verwiesen wurde.
Und ich könnte jetzt auch nicht sagen, dass das andere nicht machen, nur nicht so direkt. Doch oft werden da überarbeitete Beispiel-Codes präsentiert und anderes. Es könnte nur sein, dass die ab und an für Einsteiger etwas reichlich hoch sind, doch dann könnten die ja nachfragen und sich mit dem Code auseinandersetzen.
BlackJack

@Serpens66: Das die Python-Dokumentation nicht ”anfängergerecht” geschrieben ist, würde ich so pauschal nicht sagen. Das Niveau ist nicht durchgehend gleich, was IMHO den unterschiedlichen Zeiten und Autoren geschuldet ist, und teilweise auch der Natur der jeweiligen Module. Aber im grossen und ganzen finde ich die Dokumentation, auch im Vergleich mit anderen, nicht schlecht. Soll heissen das könnte deutlich schlechter aussehen. :-) Es gibt ein Tutorial für die Sprache allgemein, und in vielen Modulen gibt es auch Beispiele zum Code. Zudem hat Python den Vorteil das man vieles in einer Python-Shell schnell selbst mal ausprobieren kann, wenn man sich nicht ganz sicher ist ob man die Dokumentation an einer Stelle richtig verstanden hat.

Ganz konkret war bei Dir ja das `concurrent.futures`-Modul Thema, und da werden die nicht so wirklich vielen Klassen, Methoden, und Funktionen beschrieben und es gibt auch Beispielcode der das Zusammenspiel der Komponenten zeigt.

Tutorials mit dicken Wälzern zu Vergleichen ist IMHO eine ”gute” Art und Weise sich selbst abzuschrecken/Steine in den Weg zu legen. Denn genau das, dicke Wälzer, sind Tutorials ja gerade *nicht*. Tutorials sind leichtgewichtig, mit Fokus auf direktem, praktischen Ausprobieren, mit sofort greifbaren Resultaten. Dicke Wälzer sind tatsächlich *dick*, nämlich Bücher mit hunderten von Seiten, die auch die Theorie hinter den jeweiligen Themen vermitteln, teilweise auch jenseits einer konkreten Implementierung von etwas.

Die neuen Baustellen die vorgeschlagen werden, sind ja in der Regel nicht gedacht es dem Fragesteller schwerer zu machen, sondern um das Problem das er schon hat, einfacher zu machen oder die Lösung deutlich zu verbessern. Wenn das mehr Komplexität mit sich bringt, dann hat das meistens nichts damit zu tun das die neue Technik oder das Modul die Komplexität verursacht, sondern die war schon da, und wahrscheinlich, wenigstens mittelbar, das Problem an dem der Fragende gerade hing.

@Melewo: Ich weiss nicht wie die Einsteigerdokumentation von PHP selbst aussieht, aber bei Python hätte einen das Tutorial auf die Idee mit einer Liste bringen können/sollen.

Das ist immer so ein Punkt wo ich für weitere Informationen auf das Tutorial verweise und erwarte das sich Anfänger die Grundlagen selbst erarbeiten. Wenn sie dazu dann konkrete Fragen haben ist das okay, aber oft kommt dann so eine „Ich will aber nicht die Grundlagen lernen, kann mir das nicht einfach jemand sagen? Und ich brauche Beispiele und keine Erklärungen!“ Wobei ”Beispiele” dann in der Regel eine exakte Lösung des konkreten Problems meint, oder etwas das sich mit ein wenig herum raten, ohne wirklich etwas zu verstehen, anpassen lässt. Oder es kommt eine ablehnende Haltung gegenüber Tutorials weil das ”dicke Wälzer” seien oder nur graue, trockene Theorie mit der man nichts anfangen kann. Wenn Tutorials graue, trockene Theorie sind, dann ist Programmieren allgemein bloss graue, trockene Theorie. Wer das nicht mag hat ein Problem.
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

@BlackJack: Die Dokumentation von PHP ist nicht schlecht, ich fand die später richtig gut. Doch als Einsteiger muss man erst einmal so weit kommen, um mit einer Dokumentation umgehen zu können und da halfen mir anfänglich Bücher mehr als Dokumentationen. Dennoch sucht man gelegentlich Stunde um Stunde nur nach Lösungsansätzen und bei Python kommt noch die Vielseitigkeit mit Modulen hinzu.
Habe es ja bei Python-Fu gesehen, wie es ist, wenn etwas nicht wirklich gut dokumentiert wurde. Nach knapp drei Wochen bin ich nun bei den Plugins zwar nebenher mit gettext durch, doch allein daran habe ich zwei Tage gesessen, weil die po-Dateien erst einmal im Web gesucht werden mussten und die Installation intern auf einen falschen Pfad zu den mo-Dateien verweist. Und anderes fehlt immer noch, um Wissenslücken zu schließen.
BlackJack

@Melewo: Ich habe mal kurz das Tutorial in der PHP-Dokumentation angeschaut und das ist nicht geeignet um PHP zu lernen. Die Dokumentation an sich ist als Nachschlagewerk ganz gut aber IMHO nicht um die Sprache von Grund auf zu lernen. Da braucht man zwingend externe Quellen.

Ich vermute bei Python-Fu hilft es wenn man sich mit der Standardsprache für GIMP-Automatisierung auseinander setzt: Scheme. So ähnlich ist es ja auch bei den GUI-Rahmenwerken für Python. Bei Tkinter ist es sehr hilfreich wenn man Tcl/Tk lesen kann und bei Qt wenn man C++ lesen kann um die jeweiligen Beispiele oder Antworten auf Fragen im Netz dann auch Python übertragen zu können. Wenn man diese ”Übersetzung” hinbekommt, gibt es gleich sehr viel mehr Dokumentation und Wissen das man nutzen kann.
Zizibee
User
Beiträge: 229
Registriert: Donnerstag 12. April 2007, 08:36

Wenn man eine Frage hat und dafür Code postet an dem man mehrere Tage gebastelt und den man mittlerweile zig mal überarbeitet hat und der hier dann quasi zerrissen wird, ist das schon etwas deprimierend. Andererseits sollte man beim Programmieren eine gewisse Frustrationstolleranz mitbringen und wie will man es anders lernen? Wenn man nicht auf seine Fehler hingewiesen wird, kann man sich auch nicht verbessern.
Ich bekam auch schon Antworten, bei denen ich mich erst einmal einen Tag lang einlesen musste, um halbwegs zu verstehen was man mir sagen will und wie ich das mit einer anderen Funktion oder Packet lösen könnte. Allerdings merkt man es sich so wohl am Besten, auch wenn es erstmal viel Zeit in Anspruch nimmt...
Wobei alleine die Tatsache, dass man (eigentlich) immer eine Antwort bekommen schon sehr erfreulich ist :)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ich habe hier im Board damals auch sehr frustrierende Antworten erhalten auf meine ersten Postings - deswegen, weil ich mich zuvor um das Lernen von diversen Konzepten "herumgedrückt" hatte oder nicht einmal wusste, was da alles an Konzepten existiert! Dank Leonidas und BlackJack bin ich dann aber auf die Lösung gekommen und habe meine Einstellung zur Herangehensweise an Themen fundamental geändert. Zudem "stumpft" man bei Kritik am eigenen Code hier durchaus auch langsam ab; zu Beginn nimmt man eben Kritik am "selbst geschaffenen" immer persönlich und fühlt sich zurück gesetzt; der eine mehr, der andere weniger. Im Laufe der Zeit lernt man dann aber sehr zu schätzen, was man an Anmerkungen und Tipps von anderen Usern erhält; insbesondere natürlich von denen, die viel mehr Ahnung von solchen Themen haben.

Wer über diese Phase nicht hinwegkommt, der wird auf ewig ein allenfalls mittelmäßiger ("mediocre" wie es in englischen Communities so schön heißt) Entwickler bleiben!

Da ich Programmieren noch auf dem C64 mit wenig Literatur und *ohne* fremde Hilfe gelernt habe, empfinde ich es jeden Tag aufs neue toll, wenn ich Feedback von anderen Menschen bekomme. Man entwickelt sich so viel stärker weiter, als alleine in seinem stillen Kämmerlein. Dem Internet sei Dank!

Generell ist der Ton hier im Forum aber quasi niemals beleidigend - und wenn, dann deutlich eher von den Anfängern, die sich aus Frust wohl so abreagieren.

Zudem gibt es mittlerweile auch so viele Postings zu genau diesem Thema (sogar ein angepinnter Monsterthread :-D ), dass jeder Anfänger die Chance hat zu erfahren, worauf er sich zu Beginn einstellen sollte ;-)

Edit: Jetzt habe ich doch glatt das wichtigste vergessen:
Bild
;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

@BlackJack: Ja, daran mich durch die Scheme-Scripts zu klicken, daran dachte ich schon einmal. Doch je mehr man sucht, umso mehr findet ein Suchender letztendlich. Bei gimplearn.net stellen viele ihre Plugins und Bilder in einer Python-Fu Rubrik vor und zum Download bereit, so dass sich wohl alle von innen betrachten ließen. Darunter befinden sich einige, die sich durchaus sehen lassen können, selbst von innen:

https://www.gimplearn.net/viewtopic.php ... 834&p=8259

@Allgemein: Und zur andern, hier eigentlich angesprochenen Thematik, ich denke es kommt doch immer etwas darauf an, warum der Einzelne sich mit Python beschäftigen möchte, ob Schule, Studium, Hobby oder wie auch immer. Wobei in wenigen Fällen der Eindruck entsteht, dass es dem einen oder anderen nicht ums Lernen geht, sondern nur um ein möglichst fertiges Script. Wer wirklich etwas lernen möchte, wird Hinweise auch eher annehmen und weniger deprimierend empfinden.

Dabei dann die andere Seite, wie oft las sich schon, dass Python eine einfach zu erlernende Sprache wäre. Wodurch dann nur allzu leicht der Eindruck entsteht, ach das lernt man ja in zwei bis drei Wochen. Und dann wird nach drei Wochen das erste Script vorgestellt und dann gibt es erst einmal einen kräftigen Dämpfer, der sicherlich begründet ist. Und ich habe mich dann ab und an gefragt, ob der eine oder andere Einsteiger, wenn er damit nicht umgehen kann, die Lust am Programmieren verlieren könnte oder einfach nur sich im Forum nicht mehr blicken lässt.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ich denke, dass man hier im Forum brauchbare bis sehr gute Antworten bekommt, wenn man den Eindruck hinterlässt, dass man a) den Code nach bestem Wissen und Gewissen programmiert hat und b) lernwillig ist. Was ja glücklicherweise bei den meisten hier der Fall ist.

Zur Python-Doku: ich finde schon, dass viele Python-Module und auch Pyton selbst gut bis sehr gut dokumentiert sind. IMHO ist es dabei aber wichtig, dass man dazu mal die grundlegende Dinge bei Python in Sachen Objekt-Orientierung bzw. anlegen von Instanzen von Objekten und Nutzung derer Methoden und Attribute verstanden hat.
Schwierig wird eher bei "fortgeschrittenen" / neuen Problemen. Das oben genannten `concurrent.futures`Modul finde ich gut dokumentiert, bei `asyncio` hatte ich akute Verständnisschwierigkeiten. Die aber Dank des Forum hier weitestgehen gelöst worden sind :-) Was aber vielleicht generell so ist, wenn man ein komplett neues Gebiet (wie asyncrone nebenläufige Programmierung) betritt.

Gruß, noisefloor
BlackJack

@noisefloor: Ich denke bei ``async`` & Co ist nicht nur das Problem das es ein neues Thema ist und nebenläufige Programmierung an sich schon etwas komplexer ist, sondern das es den Programmfluss den man bisher gewohnt ist, selbst wenn man vorher schon nebenläufige Programmierung mit Threads gesehen hat, doch ein bisschen auf den Kopf stellt. Man betritt da eine ”neue Welt” und stellt ja auch recht schnell fest das ``async``-Code nur wirklich gut mit ``async``-Code zusammen funktioniert.
Antworten