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.
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: 6738
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: 6738
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 ;-) )
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Wie kann man seine Zeit und Arbeit sonst noch verschwenden. Man implementiert die 1000. Primzahlzerlegung.
Wenn du wirklich was dazulernen willst, such dir ein bestehende Projekt, wo du Interesse hast und trage was dazu bei, melde Bugs & Bugfixes.
Es gibt einen Haufen Bibliotheken und Programme da draußen, die zeigen wie was programmiert werden kann, wie man vernünftig Fehler auf die Spur kommt und einen Fix herstellt. Bringt 1000x mal als akad. Spielereien zu fröhnen die keinen interessieren, IMHO.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
BlackJack

@darktrym: Beim melden von Bugs und beitragen von Bugfixes lernt man zwar auch etwas, aber nicht wie man selber ein Programm umsetzt. Also von der Problembeschreibung bis zu einer Lösung alles mal durch macht was man so als Handwerkszeug benötigt. Bei den komplexeren Bugfixes kann man als Anfänger dann auch noch enttäuscht werden wenn die Lösung qualitativ nicht dem entspricht was das Projekt zu dem man beitragen möchte erwartet. Insgesamt ist der Umgangston da auch nicht immer herzlich und einladend.

Letztendlich braucht man beides. Ich würde jedenfall einen nichttrivalen Bug nicht von jemandem gefixt haben wollen der nicht selber eine Primzahlzerlegung hinbekommen würde. Falls er das dann überhaupt schafft.
Antworten