Gemeinschaftliche Projekte für Anfänger

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
_nohtyp_
User
Beiträge: 127
Registriert: Mittwoch 8. Januar 2014, 15:38

Gibt es irgendwo eine Art Börse, wo sich Python Anfänger gemeinsam auf ein Projekt stürzen können? Ich habe jetzt Python Grundkenntnisse und würde mein Wissen gerne anwenden.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@_nohtyp_: In der Python Community auf G+ seh' ich immer wieder mal Anfragen, sich in ein Projekt einzubringen. Soweit ich mich aber erinnern kann, waren das jetzt keine Anfängergeschichten. Grundsätzlich wäre das IMHO eine super Sache, wenn noch wenig erfahrene Programmierer gemeinsam ein von einem erfahrenen Programmierer begleitetes Projekt starten würden. Aber ich glaube fast, dass eine solche Aktion voraussichtlich daran scheitert, dass erfahrene Programmierer täglich nur 24 Stunden zur Verfügung haben... :wink:

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Meistens suchen ja eher Anfänger nach Profis. Alles andere macht auch wenig Sinn. Man lernt eine neue Sache in der Regel nicht dadurch, dass Leute mit eher limitiertem Wissen versuchen, sich gegenseitig Dinge beizubringen. Bei sowas kommt am Ende meist nur viel Vermutetes aber wenig Sinnvolles heraus. Besser ist es IMHO, die Sachen gleich richtig zu lernen. Und das geht oft nur mit Leuten, die schon eine ganze Ecke mehr Erfahrung haben als man selbst.
_nohtyp_
User
Beiträge: 127
Registriert: Mittwoch 8. Januar 2014, 15:38

Das klingt logisch. Gibt es dann Portale, wo sich Profis Anfängern annehmen?
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

_nohtyp_ hat geschrieben:Gibt es dann Portale, wo sich Profis Anfängern annehmen?
Du meinst etwas, wo Anfänger ihre Projekte vorstellen können? Das kannst du hier machen. Oder wenn du Leute für deine Idee gewinnen möchtest, dann zum Beispiel hier.
nezzcarth
User
Beiträge: 1634
Registriert: Samstag 16. April 2011, 12:47

snafu hat geschrieben:Alles andere macht auch wenig Sinn. Man lernt eine neue Sache in der Regel nicht dadurch, dass Leute mit eher limitiertem Wissen versuchen, sich gegenseitig Dinge beizubringen. Bei sowas kommt am Ende meist nur viel Vermutetes aber wenig Sinnvolles heraus.
_nohtyp_ hat geschrieben:Das klingt logisch.
Möglicherweise - aber wenn man mal einen Rundgang durch die nächstgelegene Universität macht, wird man an allen möglichen Orten, die einigermaßen Gelegenheit dazu bieten, Gruppen von Menschen, die im Kreis sitzen und genau dies praktizieren, antreffen. In vielen Fächern wird diese Art des Lernens propagiert (und nicht nur inbezug auf die Nachbereitung von altem, sondern auch zur Aneignung neuen Stoffs). Da wohl die meisten Lehrer inzwischen der Ansicht sind, dass reiner Frontalunterricht nicht mehr angesagt genug ist, dürften vergleichbare Konzepte eigentlich auch aus dem Schulunterricht bekannt sein.

Ob man das nun mag, oder nicht, ist Geschmackssache, aber für viele Menschen funktioniert das sehr gut.
BlackJack

@nezzcarth: Das funktioniert nicht wirklich gut wenn das tatsächlich nur die Anfänger unter sich ausmachen. Wenn Erfahrene Wissen weitergeben muss und sollte das auch kein Frontalunterricht sein, es muss halt Feedback kommen zu dem was die Anfänger da anrichten. Denn die können die Qualität ihres eigenen Tuns ja meistens nicht richtig einschätzen.
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

Naja, Lerngruppen sind gut, wenn das begleitend zu z.B. Unterricht funktioniert. Bestenfalls hat immre jemand etwas anderes verstanden als die anderen und können dann helfen.

Außerdem ist so etwas gut um den Stoff zu üben. D.h., man hat es schon halbwegs verstanden, aber ist noch nicht ganz sicher in der Anwendung. Ich finde, dafür muss nicht unbedingt ein Experte dabei sein (Das halte ich auch für schwierig).
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Hellstorm hat geschrieben: Außerdem ist so etwas gut um den Stoff zu üben.
Üben impliziert aber ja, dass man das Wissen dazu mindestens theoretisch schon vermittelt bekommen hat. Zudem ist eine Übung sinnlos, wenn die kein Experte (nachträglich) bewertet! Und dazu braucht es eben erfahrene Leute. Im Grunde ist das eine der Haupttätigkeiten, die wir hier im Forum betreiben :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Hyperion hat es schon angesprochen: Das Problem, das ich bei reinen Anfängerprojekten sehe, ist dass einem niemand sagt: "Hey, du hast da eine völlig falsche Richtung eingeschlagen. Das ist großer Mist." Stattdessen wird einfach munter weiterentwickelt, weil man sich aufgrund der fehlenden Rückmeldung nicht bewusst ist, welche Fehler man macht. Bei Lerngruppen z.B. im Studium gibt es ja in der Regel ein begleitendes Tutorium und/oder Übung, wodurch man einmal die Woche seine Rückmeldung bekommt - und eben auch erkennt, wo man noch Nachholbedarf hat.

Ich sage ja nicht, dass Anfänger nicht frei programmieren sollen. Ganz im Gegenteil: Wenn man nichts eigenes (inklusive der entsprechenden Fehler) macht, dann lernt man ein Handwerk (egal welcher Art) nie so wirklich. Nur mit reiner Theorie oder wenn einen der "Experte" allzu sehr an die Hand nimmt, ist es wenig zielführend. Und wenn man ganz auf sich allein gestellt ist, klappt es meistens genau so wenig. Und das hat nichts damit zu tun, dass man Programmieren nicht auch autodidaktisch lernen könnte. Nur holen sich die meisten Autodidakten eben doch irgendwann mal eine Rückmeldung von Leuten, die Erfahrung haben (z.B. durch Veröffentlichung von Code hier im Forum). Und wenn der Autodidakt sehr lange ohne Rückmeldung programmiert hat und dann mal seinen Code zeigt, dann möchte man am liebsten schreiend wegrennen, was mich dann in meiner Meinung bestätigt. ;)
_nohtyp_
User
Beiträge: 127
Registriert: Mittwoch 8. Januar 2014, 15:38

Ok, ich werde mal schauen, wie ich mein Wissen erweitern kann.
Danke für die Erklärungen!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

snafu hat geschrieben:Bei Lerngruppen z.B. im Studium gibt es ja in der Regel ein begleitendes Tutorium und/oder Übung, wodurch man einmal die Woche seine Rückmeldung bekommt - und eben auch erkennt, wo man noch Nachholbedarf hat.
Meine Erfahrung an meiner Uni ist es, dass da von der überwältigenden Mehrheit der Tutoren kaum Feedback kommt, was teils daran liegt dass sie selbst Studenten sind und den Stoff nicht wesentlich besser können, teils auch daran dass da von seitens der Uni kaum Interesse besteht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich meinte eher, dass man z.B. wöchentliche Übungsaufgaben bekommt und diese dann in der Übungsstunde besprochen und mit Lösungen und Rechenwegen verglichen werden. Was der Student da konkret draus macht, liegt natürlich an jedem selbst, zumal das schon eher Frontalunterricht ist. Eine richtige Einzelbetreuung gibt es bei uns eher in den Praktika und da sind - zumindest bei uns - die jeweiligen Dozenten eigentlich auch recht auskunftsfreudig, sofern man kein totales Desinteresse an dem Thema zeigt. Ich spreche hier aber über meine Erfahrungen an unserer Fachhochschule, nicht von einer Universität.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Unitypische Feedback schaut dann so aus, das der eigene Code kritisiert wird und best. Lösungen als besonders angesehen werden, aber alle anderen die Lösung nicht zu Sicht bekommen. Lernwert ist begrenzt, zumal auch gleich die nächste Übung folgt und man gar keine Chance hat, dem nachzugehen bei der Erfüllung möglichst viele Punkte einzuheimsen
Typische Übungen lassen auch nicht sonderlich viel Spielraum zur kreat. Lösung oder gar guten Design bzw. schlechten Programmierstil.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

darktrym hat geschrieben:Typische Übungen lassen auch nicht sonderlich viel Spielraum zur kreat. Lösung oder gar guten Design bzw. schlechten Programmierstil.
Naja. Idealisten, die möglichst elegante Lösungen abliefern wollen, werden auf dem Arbeitsmarkt später in der Regel ja auch nicht besonders gewürdigt. Die kriegen eher eins auf den Deckel, weil sie Deadlines überschreiten oder gehen kaputt, weil sie sich mit ihrem Arbeitsstil einiges an Überstunden aufbürden, um Zielvereinbarungen einhalten zu können. Die Devise in den meisten Firmenprojekten (gerade im kaufmännischen bzw verwaltungsmäßigen Bereich) lautet ja, dass man das geforderte Verhalten für die Schnittstelle implementieren soll und weniger, dass man eine mega-elegante Umsetzung programmiert. Den Auftraggeber interessiert letzteres nämlich eher selten - und der Auftraggeber zahlt nun mal. Insofern ist es IMHO nur richtig, dass auch an den entsprechenden (Hoch-)Schulen eher lösungsorientiert gearbeitet werden soll. Schönheitskorrekturen werden eben meist erst dann gemacht, wenn der Code später nochmal angefasst wird und so schrecklich unhandlich geworden ist, dass man einem fast nichts anderes übrig bleibt als ihn nochmal vernünftig zu schreiben - so traurig das auch klingen mag. Und natürlich ist es gut, vernünftigen Programmierstil zu lehren. Ich finde aber aus den oben genannten Gründen, dass der Fokus auf die Funktionalität gelegt werden sollte - also dass im Großen und Ganzen das "Wie es gemacht wurde" hinter das "Was als Resultat herauskommt" gestellt werden sollte. Auch wenn mir da jetzt sicherlich manch einer widersprechen wird, aber ich halte diese Ansicht ganz einfach für die wettbewerbsmäßig realistischere Sicht.
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Hyperion hat geschrieben:Üben impliziert aber ja, dass man das Wissen dazu mindestens theoretisch schon vermittelt bekommen hat.
Nichts was zu wissen sich lohnt lässt sich lehren (Oscar Wilde).
Hyperion hat geschrieben:Zudem ist eine Übung sinnlos, wenn die kein Experte (nachträglich) bewertet!
Habe ich anders erlebt, zumal Bescheid wissen und etwas implementieren können nicht das Gleiche ist.
snafu hat geschrieben:Ich finde aber aus den oben genannten Gründen, dass der Fokus auf die Funktionalität gelegt werden sollte - also dass im Großen und Ganzen das "Wie es gemacht wurde" hinter das "Was als Resultat herauskommt" gestellt werden sollte. Auch wenn mir da jetzt sicherlich manch einer widersprechen wird, aber ich halte diese Ansicht ganz einfach für die wettbewerbsmäßig realistischere Sicht.
Kein Widerspruch, sondern Zustimmung. Diese Art der Software-Entwicklung ist aber gar nicht mal so selten an der Uni.
In meinem Physik-Studium (TU-Darmstadt) gab's keine IT-Pflichtveranstalltung, trotzdem konnte jeder meiner Komilitonen (aus meinem Bekanntenkreis) am Ende des Studiums programmieren. Dagegen sind mir später im Berufsleben immer wieder Informatik-Absolventen begegnet, die nicht programmieren konnten.

Von einem Physikstudenten wurde in seiner Diplomarbeit (die sich laut Studienplan über 3 Semester erstreckte) verlangt, dass er mit dem PC umgehen konnte:
  • Messwerte vom Versuchsaufbau abgreifen
  • Messauswertung
  • Dokumentation mit LaTeX
Der Prof hat sich nicht darum gekümmert, wie ein Physikstudent das hinbekommt. Jede Diplomandengeneration hatte deshalb die Möglichkeit etwas völlig Neues auszuprobieren.

Ich nenne sowas "Hogwarts Pädagogig": Die Lehrer sind fast alle völlig unpädagogisch und oftmals nicht wohlwollend und die Schüler erzielen Spitzenleistungen.
a fool with a tool is still a fool, www.magben.de, YouTube
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Also dass guter Stil völlig egal ist, möchte ich jetzt nicht sagen. Wir hatten zumindest am Anfang auch Module von einem Prof, der sehr darauf geachtet hat, ob wir möglichst elegant programmieren. Auch das fand ich ganz gut. Studenten, die noch so gar keine Programmiererfahrung haben, sollen ja ruhig das strukturierte Vorgehen erlernen. Ich bezog mich jetzt mehr auf die höheren Semester, wo eher die Nutzung von passenden Frameworks im Vordergrund steht und wo halt nur noch bestimmtes Programmverhalten erreicht werden sollte. Da rücken die eleganten Lösungen dann halt in den Hintergrund, wobei natürlich trotzdem kein völliges Wirrwarr herauskommen sollte. Man sollte "perfektionistisches" Programmieren mindestens in einem Informatik-Studium durchaus mal gemacht haben müssen. Was man für sich davon am Ende mitnimmt, steht auf einem anderen Blatt.

EDIT: Und wenn jemand später irgendwo unterkommt, wo eher weniger auf Frameworks, sondern mehr auf die algorithmische und möglichst effiziente Umsetzung gesetzt wird (z.B. in zeitkritischen Anwendungsfällen), dann sieht die ganze Sache natürlich anders aus. Auf die komplette Informatik verallgemeinern kann man meine Aussagen nämlich auf gar keinen Fall. Ich wollte nur herausstellen, dass es meiner Meinung nach in sehr vielen Fällen bei der Programmierung von Projekten für die Wirtschaft ausreicht, bei der späteren Implementation (nicht unbedingt bei der Entwurfsphase) eine eher mittelmäßige Lösung zu schreiben, wenn es ökonomisch sinnvoll erscheint.
BlackJack

Also mir ist das etwas zu abstrakt. Was ist denn hier mit eleganten und perfektionistischen Lösungen gemeint? Ich verstehe darunter unter anderem KISS, was durchaus in der realen Anwendung für mich erstrebenswert erscheint, auch und gerade unter ökonomischen Aspekten.

Und bei Lösungen die am Ende auf das Verbinden von Komponenten aus einem Rahmenwerk hinaus läuft, kann man doch oft gar nicht so viel falsch oder unelegant machen, weil das meiste vorgegeben ist und es ausgetretene Pfade gibt, denen man nur folgen braucht.

Ich sehe den Wert darin es ”perfekt” zu lernen, dass es im praktischen Einsatz unter Zeitdruckt etc. sowieso zu Abstrichen kommt, und das es da dann besser ist wenn etwas leicht schlechteres als ”perfekt” heraus kommt, als wenn die Basis von der Abstriche gemacht werden schon ein übler Hack wäre. Man sollte wenigstens wissen wo man unelegant ist, was man anders machen würde wenn man Zeit hätte. Und ich versuche an solche Stellen dann auch immer einen TODO-Kommentar zu hinterlassen und die Beseitigung von solchen Stellen dann ab und zu, wenn es ökonomisch gerade passt, zu erledigen.

Das Physiker am Ende des Studiums programmieren können, gilt für viele aber auch nur für eine sehr abgespeckte Art dieses Begriffs. Oft ist das bei Naturwissenschaftlern tatsächlich nur ein „es lief irgendwie mal” und die Quelltexte sind in einem Riesenblock runtergeschrieben, nicht ausreichhend dokumentiert, enthalten toten Code und nicht benutzte Variablen von Versuchen bei der Entwicklung, und die Autoren selbst können es einem nach einem Jahr nicht mehr erklären ohne sich zeitintensiv wieder hinein zu finden. Als Spitzenleistung würde ich das nicht bezeichnen. Da ist es wohl eher so das sich die Hogwards-Schüler selber ganz Spitze finden weil sie es einfach nicht besser wissen. ;-)
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@BlackJack: Ich meinte das in etwa so, wie du es beschrieben hast. "Perfektionistisch" wäre, wenn man selbst den Eindruck hat, dass man das Beste, was die eigenen Kenntnisse hergeben, herausgeholt hat (beinhaltet die möglichst optimale Beachtung von "Keep it simple..." und anderen wichtigen Programmierparadigmen). Das ist übrigens eine stark subjektiv gefärbte Sicht der Dinge - keine Frage. Wenn man hingegen versucht, innerhalb der vorgegebenen Zeit eine *möglichst* gute Lösung zu erzielen, obwohl man zum Teil mehr könnte, dann ist es für mich die "realistische" Lösung. Dass ein mittelmäßig begabter Programmierer tendenziell eher schlechteren Code auf die Schnelle schreibt als ein besser qualifizierter Programmierer, ist auch klar. Daher meinte ich ja, dass es letztlich an einem selber liegt, durch viel Üben usw seine Fähigkeiten zu verbessern.

Ich denke halt, ein Studium kann immer nur Grundlagen liefern bezüglich dessen, wie ein sauberes Programm aussehen sollte. In der freien Wirtschaft wird man oftmals auch mit dem durchschnittlich begabten Absolventen zufrieden sein, solange die Lösung funktioniert. Im IT-Bereich gibt es bekanntlich nach wie vor einen erheblichen Fachkräftemangel. Da muss man sich dann halt fragen: Will ich wenige Absolventen haben, die nahezu perfekte Programme schreiben oder reichen mir eher mittelmäßige Programme (die unweigerlich so ihre Macken haben), dafür aber von mehr Leuten geschrieben werden? Ein Geldgeber (mutmaßlich ein "BWL-Typ") sieht nunmal meist nur das, was er an Mittel in ein Projekt hineinstecken muss und das, was am Ende (aus seinem Blickwinkel betrachtet) dabei herauskommt. Der wird also oft diejenigen bevorzugen, die eine zumindest zufriedenstellende Lösung und nicht zwingend die beste Lösung abliefern, wenn er dadurch Geld einsparen kann, indem er denen weniger Gehalt zahlt oder indem sie weniger Arbeitszeit für die Lösung benötigen.

Und so ähnlich denkt eine Uni oder FH dann eben auch, wenn es um Absolventenzahlen, durchschnittliche Studiendauer, vermittelte Themen, etc geht. Man könnte die Hürden natürlich höher setzen und viele nicht so tolle Programme deutlich schlechter bewerten oder gar nicht erst annehmen und stattdessen vorwiegend richtig gute Programme fordern, deren Umsetzung dann aber auch deutlich aufwändiger für die meisten Studenten wäre. Dann wäre die Uni stolz, weil sie so gute Absolventen hat. Aber rein ökonomisch gesehen (auch im Hinblick auf staatliche Fördergelder für die Einrichtung) ist das halt oftmals nicht zielführend und wird daher nicht so umgesetzt. Und genau diesen Umstand sehe ich als Grund für das, was darktrym bemängelt, wenn er sagt, dass kreativen Lösungen oder besonders gutem Programmierstil im Uni-Alltag eher wenig Beachtung geschenkt wird. Es hat halt eine zu geringe Priorität, da man lieber andere Faktoren umsetzen möchte. Und am Ende steht es ja auch jedem frei, eine richtig gute private Einrichtung zu besuchen, sofern er denn die benötigten Geldmittel für die "Gebühren" (oder wie auch immer die das nennen) mitbringt... ;)
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Wurde gerade auf 1000+ Beginner Programming Projects & Practice problems aufmerksam gemacht. Hab's nur überflogen, könnte vielleicht zum Thread hier passen...

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Antworten