Programmieren in Gruppe gemeinsam lernen

Wie möchte ich mir neues Wissen bezüglich Programmieren aneignen?

  • Klassisch Bücher kaufen, alleine durchlesen und versuchen Beispiele aus Buch umzusetzen

    Stimmen: 29 45,3%
  • Guerilla style mit Suche von Tutorials, PDFs und Beiträgen im Internet

    Stimmen: 42 65,6%
  • Gerne in Gruppe online am gleichen Themenbereich lernen, wo eine "Hilfsperson" helfen kann

    Stimmen: 25 39,1%

  • Umfrageteilnehmer
    64

Simple Man

Lt. Commander
Registriert
Sep. 2003
Beiträge
1.420
Es gibt n-verschiedene Programmiersprachen und ständig wollen/müssen neue Menschen programmieren lernen. Selbst wenn sich jemand nur eine Programmiersprache aussucht, dann hat diese einen enormen Umfang. Die Basics sind bei sehr vielen Sprachen recht ähnlich, doch nur selten reichen Basics aus um bestimmte Problemstellungen zu lösen. Im Grunde ist es ein ständiges dazulernen und aneignen von Wissen um das nächste anstehende Problem zu lösen.

Ich frage mich nun wie die "meisten" gerne sich neues Wissen bezüglich eines Themenbereiches in einer Programmiersprache aneignen würden.

Ich habe nun eine kleine Umfrage erstellt. Oft ist es so, dass man manchmal einfach nur ASAP schnell ein Problem lösen möchte z.B. Datei lesen, XML parsen, Buttonfunktionalität einschalten möchte. Eine schnelle Frage irgendwo posten geht immer, aber manchmal braucht man auch etwas mehr Tiefe in dem Bereich und das kann schon viel Zeit zum Lernen in Anspruch nehmen.

Mir geht es nun darum ob Leute sich gerne online zusammenschließen würden um einen dieser "tieferen" Bereiche gemeinsam zu bearbeiten und zu lernen. Etwas das nicht in 1h durchgelesen und verstanden werden kann.
Gemeinsam freiwillig mit anderen, die genau das gleiche lernen wollen, mit einem Stoffgebiet auseinandersetzen. Es gibt einen vorgelegten Pfad, den man abarbeiten kann um das optimale Wissen sich anzueignen. Es stehen Hilfspersonen zur Verfügung, die schon mit der Thematik Erfahrung haben und somit auch Fragen beantworten können.
Die Thematiken sind in überschaubare Größen/Blöcke unterteilt und der Aufwand kann 5 Stunden oder 15 Stunden betragen. Wenn man einen Block abgeschlossen hat, kann man sich anschauen was ansonsten noch für interessante "Wissensgebiete" angeboten werden und dann dort mitmachen. Easy to join easy to leave.

Die Thematiken können z.B. sein:
Erster Einstieg in C, PHP oder XY.
Wie funktioniert Multithreading in XY
Wie erstelle ich einen WebService in XY
Wie parse ich XML Dokumente und extrahiere Werte
Was bedeutet objektorientierte Programmierung
Wie greife ich auf eine XY Datenbank in XY Pogrammiersprache
....

So ein Block kann 3-xy Stunden in Anspruch nehmen und man weiß ganz genau was man lernt. Es gibt Theorie, Aufgaben und Lösungen.

Edit:
http://www.youtube.com/watch?v=7vsCAM17O-M&feature=g-all-esi
https://www.youtube.com/watch?feature=player_embedded&v=WHaO3FnnUy4#! Wurde mir vorhin zugeschickt. Thx.
 
Zuletzt bearbeitet:
Wenn du nur Pille-Palle machst: Learning by doing. Sprache wählen, 1-2 Tutorials durcharbeiten, eigenes Projekt angehen
Wenn du damit Geld verdienen willst: wenigstens ne Ausbildung, eher noch ein Studium.. denn dann gehts primär um theoretische Informatik und nur gaaaaaaanz weit hinten um eine definierte Sprache

Anders wirds nicht.
 
Kann oben leider auch keine Auswahl treffen:

Sollte eine ernste Motivation dahinter stehen, ist es erforderlich die Paradigmen des Programmierens (ist eben auch Anweundungsspezifisch: Embedded Systems (sehr Hardwarenah), Objektorientiert (meist Richtung relationaler Datenbanken), Funktional (Haskell), usw.) zu verstehen und zu lernen. Dies Leistet meist die Theorie in der Informatik (also Theoretische Informatik). Dabei stehen dann auch oft algorithmische Probleme im Vordergrund. Das Programmieren macht nur einen sehr überschaubaren Teil im Studium aus.

Wenn es NUR darum geht "get something to work", dann würde ich dir den Einstieg über Tutorials empfehlen (ggf. in einer Gruppe, wo es jemand kann!), und bei der Ambition dann mehr zu können, erfüllen Bücher durchaus ihren Zweck. Allerdings ist es für die "Motivations- & Lernkurve" oft hilfreich schnell mal das erste Programm zu schreiben, damit man weiß was man da gerade überhaupt lernt.

Viel Erfolg
 
Mir ist bei deiner Frage nicht klar, ob du dich auf das Lernen des Programmierens beziehst oder ob es nur um eine neue Sprache geht. Ersteres ist ein sehr langer Prozess, zweiteres dagegen "fix" gemacht.

Meine Herangehensweise nach X gelernten Sprachen:
  • gutes Buch kaufen
  • Mailingliste der Sprache abonnieren und passiv mitlesen
  • das gleiche für Blogs, StackOverflow und mögliche Foren

Ein gutes Buch und 2 Wochen reichen mit genug Erfahrung wirklich aus, und das passive Informieren durch die 3 Quellen führt dann zu einer wahrhaften "Überschwemmung" an Infos wodurch das Wissen exponentiell ansteigt.

Die neue Sprache ist, wenn man Sprachen mit dem gleichen Paradigma kann, wirklich kein Problem. Am ehesten wird es ein Problem mit einem Framework sein, dass man es noch nicht auswendig kennt oder diese und jene Möglichkeit noch nicht kennt um es besser zu machen. Das sieht man schön, wenn man das erste Projekt mit einem neuen Framework mit dem über über nächsten vergleicht.

Mitlerweile bin ich sogar dazu übergangegen diese 3 Schritte als Vorlaufsphase zu nutzen, ich informiere mich über diese Quellen noch lange bevor ich produktiv damit arbeite. Da wird dann eben nur ein bisschen damit "gespielt" und Wissen angeeignet. Bis ich eben ab Tag X damit beginne es produktiv zu nutzen. Es gibt imho kaum schlimmeres als Code zu fabrizieren, der ggf. noch lange genutzt werden muss, wenn man einfach blutiger Anfänger in einer Sprache/Framework ist, man ist einfach zu "schlecht" oder trifft falsche Entscheidungen.
 
Zuletzt bearbeitet:
Ne, es geht nicht um simple "hello world" Geshichten, die einmal 10 Minuten erfordern, sondern man hat schon damit beruflich, in der Ausbildung oder zumindest als Hobby zu tun.

Die Thematiken können z.B. sein:
Erster Einstieg in C, PHP oder XY.
Wie funktioniert Multithreading in XY
Wie erstelle ich einen WebService in XY
Wie parse ich XML Dokumente und extrahiere Werte
Was bedeutet objektorientierte Programmierung
Wie greife ich auf eine XY Datenbank in XY Pogrammiersprache
....

So ein Block kann 3-xy Stunden in Anspruch nehmen und man weiß ganz genau was man lernt. Es gibt Theorie, Aufgaben und Lösungen
 
Zuletzt bearbeitet:
Simple Man schrieb:
Mir geht es nun darum ob Leute sich gerne online zusammenschließen würden um einen dieser "tieferen" Bereiche gemeinsam zu bearbeiten und zu lernen. Etwas das nicht in 1h durchgelesen und verstanden werden kann.
Gemeinsam freiwillig mit anderen, die genau das gleiche lernen wollen, mit einem Stoffgebiet auseinandersetzen. Es gibt einen vorgelegten Pfad, den man abarbeiten kann um das optimale Wissen sich anzueignen. Es stehen Hilfspersonen zur Verfügung, die schon mit der Thematik Erfahrung haben und somit auch Fragen beantworten können.


Sehr interessant das Konzept eines Tutoriums einer FH/Uni nur eben als Online Kurs. Habe selbst erst richtig gute Fortschritte gemacht als ich mit meinen Kollegen darüber gegrübelt habe. Ich gebe nun selber Tutorium für Softwareentwicklung im 1. und 2. Semester und stelle Fest das die wenigsten wirklich einen Tutor in Anspruch nehmen, jene die es tun aber die besten Fortschritte machen.

Aus meiner Sicht sollte man so etwas IMMER mindestens mit 2 weiteren Leuten angehen, denn häufig erschließt sich der volle Funktionsumfang eines Paradigmas oder einer Klassenbibliothek erst nach heftigem Diskutieren, Ausprobieren und Nachdenken mit anderen Leuten. Oft kommt man selbst eben nicht auf den selben Gedanken wie der Entwickler und da finde ich es gut, ein paar mehr Augen und Synapsen als Ressource nutzen zu können.

Sinnvoll ist es auch ausschließlich anhand eines konkreten Beispiels lernt. Also die Aufgabe bekommt und das dazugehörige Thema (z.B. Schleifen, Pattern etc...) und dann die Leute selbst ans Ziel gehen lässt. Erst danach sollte ein guter Tutor eingreifen und ggf. Maken am Code zu glätten und den Leuten erklären warum es dann eben so ist. Denn erst im nachhinein bringen die Studenten das Verständnis für die Funktionalität mit.

Gruß
 
Dann ist es viel wichtiger die Grundlagen zu beherrschen, also nicht Vokabeln lernen sondern die Grammatik...

Was für Möglichkeiten man überhaupt hat, wie wird was gemacht, Algorithmen, Datenstrukturen, also alles graue und trockene Theorie.
Verkehrt wäre auch ein Ausflug in die Welt von Assembler nicht! Wie funktioniert das ganze auf Hardwarebasis. Warum ist es sinnvoll ein Problem auf eine bestimmte Art zu lösen.

Was nützt es dir denn wenn du weißt wie du in der Sprache X z.B. einen Stack anlegst, wenn du gar nicht weißt wozu das gut sein kann...
 
Zuletzt bearbeitet:
Simple Man schrieb:
Wie funktioniert Multithreading in XY
Wie erstelle ich einen WebService in XY
Wie parse ich XML Dokumente und extrahiere Werte
Was bedeutet objektorientierte Programmierung
Wie greife ich auf eine XY Datenbank in XY Pogrammiersprache

Ehrlich gesagt haben alle diese Themen deutliches "Tutorial-Niveau". Ist das extra so gedacht oder Zufall?
Da würde es mich nicht wundern, wenn die meisten nur aus Tutorials "abschreiben" und dabei das eine oder andere lernen. Die Grundlagen fehlen dabei aber komplett.
Und das wir einem denn klar, wenn man sieht, dass es Bücher gibt, die nur korrektes Multithreading behandeln (Java Concurrency in Practise) weil eben deutlich mehr dahintersteckt und die ersten Erfolge einen fälschlicherweise glauben lassen, dass man es kann. Es aber viel viel viel viel komplexer ist (Java Memory Visiblity Model).

Die Frage ist ja auch auf welches Niveau das Lernen hinaussoll. Jemand der sich ein so komplexes Thema wie Multithreading durch Tutorials beibringen will, kann man nicht ernst nehmen. Der Zugriff auf Datenbanken hingegen schon, das sind nur eine Hand voll Zeilen Code.
 
Simple Man schrieb:
Ne, es geht nicht um simple "hello world" Geshichten, die einmal 10 Minuten erfordern, sondern man hat schon damit beruflich, in der Ausbildung oder zumindest als Hobby zu tun.
Nochmal: Da geht nix über ein paar Vorlesungen zu theoretischer Informatik, Algorithmen und grundlegende Datenstrukturen. Auch etwas Algebra ist mehr als angebracht.

ice-breaker schrieb:
Die Frage ist ja auch auf welches Niveau das Lernen hinaussoll. Jemand der sich ein so komplexes Thema wie Multithreading durch Tutorials beibringen will, kann man nicht ernst nehmen. Der Zugriff auf Datenbanken hingegen schon, das sind nur eine Hand voll Zeilen Code.
Zugriff auf Datenbanken ist relativ leicht, wobei man hier immer noch neue Tricks lernen kann. Viel schwieriger (und weit jenseits von Tutorials) ist hingegen der Aufbau einer Datenstruktur aus dem Nichts.
 
Nochmal: Da geht nix über ein paar Vorlesungen zu theoretischer Informatik, Algorithmen und grundlegende Datenstrukturen. Auch etwas Algebra ist mehr als angebracht.

Sorry, aber freie Entscheidungsgewalt, Individualismus und eine Möglichkeit zur einer Dikusussion bzw. kritischen Auseinandersetzung in Gruppe über ein vorgegebenes Thema stehen bei mir wesentlich höher im Kurs als "wie gehe ich nach konservativen Wertevorstellungen vor, um etwas zu lernen".
Jeder Wissens bzw. Thematikblock setzt bestimmte Grundlagen an Wissen voraus und es können sinnvolle weitere Referenzen angeboten werden, aber wenn ich stricken lernen möchte, dann will ich nicht gezwungen werden erst zu verstehen wie Wolle hergestellt wird.

Das Thema ist hier aber auch ob online Lernen einer bestimmten Thematik in Gruppe ihre Vorteile hat.
 
der "Guerilla style" ist sicherlich nicht der richtige weg.. web tutorials werden meistens auch von leuten erstellt die es genau auf diesem weg gelernt haben.. also man lernt mist und verbreitet es praktisch dann weiter.. natürlich ist nicht alles schlecht aber so 90% schon
 
Simple Man schrieb:
Sorry, aber freie Entscheidungsgewalt, Individualismus und eine Möglichkeit zur einer Dikusussion bzw. kritischen Auseinandersetzung in Gruppe über ein vorgegebenes Thema stehen bei mir wesentlich höher im Kurs als "wie gehe ich nach konservativen Wertevorstellungen vor, um etwas zu lernen".
Was du hier als "konservative Wertevorstellung" hinstellst sind üblicherweise einfach nur wissenschaftlich fundierte Grundlagen. Klar kannst du so lange an deinem Programmcode herumschnipseln, bis zufällig halbwegs das korrekte Ergebnis heraus kommt. Der korrekte, langfristig effizientere und sicherere Weg führt aber über eine komplette Planung der Software, inklusive der theoretischen Grundlagen.

Frag mal so einen Guerilla-Programmierer, wie sein Code skaliert. Er wird rumstottern und gar nicht wissen, was du von ihm willst. Frag einen Ingenieur und er wird dir eine hübsche Rechnung vorlegen, in der er sehr genau abschätzen kann, wie sich der Code bei erhöhter Last verhalten wird.

Willst du wissen, was bei solchen Guerilla-Aktionen raus kommt?
- HTML-Code, der eher durch Zufall & Fehlertoleranz der Browser als durch Planung korrekt rendert.
- SQL-Injections an jeder Ecke
- undurchsichtige Datenstrukturen
- schlechte bis nicht vorhandene Wart- und Erweiterbarkeit des Codes
- eklatante Verschwendung von Speicherplatz, Rechenleistung und Bandbreite
- Bugs, Sicherheitslücken, mangelnder Datenschutz
- permanente Nachbesserung
 
Ich muss Daron recht geben. Es klingt so abgedroschen, aber Informatik ist Mathe und Theorie. Die Themen die du als Beispiel genannt hast sind wirklich Tutorial-Topics die man mit etwas Vorwissen grundsätzlich ankratzen kann.

Das heißt aber nicht, dass du als Privatanwender (ich gehe mal davon aus, dass du kein Profi bist) nicht auch ohne boolesche Algebra, Assembler-Kurs und Algorithmik-Kursen dein Wissen aufbauen und verbessern kannst. Man darf nicht vergessen: Das Wissen an theoretischer Informatik (Uni-Stoff) wird im Beruf nur sehr selten wirklich direkt nützlich - ich behaupte mal, dass der "Fachinformatiker-Teil" eines Wissenspools (wenn man versteht was ich meine) in der Praxis hilfreicher ist, gleichzeitig mit theoretischem Background ganz anders ausgenutzt werden kann.
Nochmal anders gesagt: Ich halte den (vereinfachten) Angang "Praxis" -> "Theorie" hier für sinnvoll. Das der Praxis Grundlagentheorie voraus geht ist aber wohl klar.

Ein super Thema das sich zum "gemeinsam" lernen anbietet (nur ein Beispiel!) sind OO-Designpattern (also Software-Engineering) - unter der Voraussetzung, dass du generelles OOP verstanden hast. Ob du das mit Online-Tutorials machst oder dir ein Fachbuch zulegst sei dir überlassen.
 
Simple Man schrieb:
Sorry, aber freie Entscheidungsgewalt, Individualismus und eine Möglichkeit zur einer Dikusussion bzw. kritischen Auseinandersetzung in Gruppe über ein vorgegebenes Thema stehen bei mir wesentlich höher im Kurs als "wie gehe ich nach konservativen Wertevorstellungen vor, um etwas zu lernen".
Jeder Wissens bzw. Thematikblock setzt bestimmte Grundlagen an Wissen voraus und es können sinnvolle weitere Referenzen angeboten werden, aber wenn ich stricken lernen möchte, dann will ich nicht gezwungen werden erst zu verstehen wie Wolle hergestellt wird.

Das Thema ist hier aber auch ob online Lernen einer bestimmten Thematik in Gruppe ihre Vorteile hat.
Nur gut das beides nichts miteinander zu tun hat, den wie du mit den vermittelten Grundlagen(nicht anderes wird einem in den Vorlesungen vermittelt) umgehst ist die freie Entscheidung des Einzelnen. Wenn man aber z.B. selber eine Suche implementieren will, kann es durch aus hilfreich sein zu wissen welche bekannten Algorithmen ist gibt und wo deren Vor- bzw. Nachteile liegen.

Mir kommt es aber grade irgendwie so vor als würdest du hier etwas durch einander werfen was die Begrifflichkeiten angeht. Du scheinst wohl "Programmiersprachen in Gruppe gemeinsam lernen" zu meinen.
Den beim Programmieren ist die Sprache an sich erst einmal nebensächlich bzw. wird nach bedarf gewählt, den jede Sprache hat ihre Vor- wie Nachteile und ist dadurch für bestimmte Aufgabengebiete besser oder schlechter geeignet.
Wenn ich z.B. Dinge aus einem Text filtern möchte und die Laufzeit nicht der entscheidende Faktor ist aufgrund der maximalen Datenmenge, dann greife ich dazu nicht zu C oder Java sondern schnappe mir eine Sprache wie Perl oder Python(oder auch ein Bash-Skript) mit denen ich sowas mit wenigen Zeilen Code erledigt habe.
Um das Problem aber zu verstehen und meine Herangehensweise zuplanen und mögliche Fehlerquellen zu bedenken, Testszenarien zu erstellen, muss ich eben Theoretische Grundlagen der Programmierung/Informatik kennen!

EDIT:
Achja, ein gutes Beispiel dafür das die Theoretischen Grundlagen(Wie man diese Vermittelt bekommt bleibt natürlich jedem selbst überlassen) eben nicht unwichtig sind und nicht im Widerspruch zu "freie Entscheidungsgewalt, Individualismus und eine Möglichkeit zur einer Dikusussion bzw. kritischen Auseinandersetzung in Gruppe über ein vorgegebenes Thema" stehen ist das Hacken.
Hacken ist nicht anderes als Vorhandenes auf unkonventionelle Art zu nutzen. Hierzu muss ich aber wissen was die konventionelle Art ist.
Um ein System zu überlisten muss ich verstehen wie es funktioniert!
 
Zuletzt bearbeitet:
Ich würde mal die Scheuklappen runternehmen und kurz nachdenken. Informatik ist ein sehr breites Feld. Programmieren ist ein sehr breites Feld. Jedes Anwendungsgebiet und Problemstellung, welche durch eine Sprache gelöst werden soll, erfordert eine bestimmte Qualität an Verständnis dieser Sprache. Manchmal möchte man eine Simulation entwickelt, welche Problemstellungen der Funkausbreitung oder Entwicklung von menschlichen Zellen untersucht und manchmal möchte man einfach EIN SIMPLES XML parsen.

Und wenn ich mir nun etwas mehr als simples Basiswissen über Parsen von SIMPLEN XML Dokumenten in der Programmiersprache Brainfuck http://en.wikipedia.org/wiki/Brainfuck aneignen möchte, dann werde ich nicht 2 Semester Theoretische Informatik und Höhere Mathematik dafür belegen!

Dass es von Vorteil ist mehr theoretisches Wissen über eine Thematik zu haben, dürfte jedem ersichtlich sein....
Ihr könnt aber ruhig weiter über die 3 angegeben Auswahlmöglichkeiten diskutieren.
 
Mir kommt es so vor, als wenn Ihr den TE etwas mißverstanden habt. Ich gehe anhand der Kommentare mal davon aus, daß die meisten hier Programmieren können und wahrscheinlich sogar Informatik studiert haben.

Ich habe Simple Man so verstanden, daß einen die Vielfalt der Technologien und deren teilweise rasante Entwicklung überfordern kann und daß man in vernünftiger Zeit, ohne Verzicht auf soziale Kontakte eben nicht in der Lage ist, in allen Themen Expertenwissen aufzubauen und ob es dann nicht sinnvoll wäre, mit Gleichgesinnten sich ein Thema zu erarbeiten.

Ich habe nur nicht verstanden, ob er daraus ein "Geschäftsmodell" entwickeln will oder ob er Gleichgesinnte für seine eigene "Lerngruppe" sucht?
 
Zuletzt bearbeitet:
Daaron schrieb:
Frag mal so einen Guerilla-Programmierer, wie sein Code skaliert. Er wird rumstottern und gar nicht wissen, was du von ihm willst. Frag einen Ingenieur und er wird dir eine hübsche Rechnung vorlegen, in der er sehr genau abschätzen kann, wie sich der Code bei erhöhter Last verhalten wird.

Eher Wunschdenken als Realität. In meiner Erfahrung unterscheidet viele Ingenieure nur eins von den "Guerilla-Programmierern" ... der Titel. Ob man als Programmierer was taugt, hat meiner Meinung nach herzlich wenig damit zu tun, ob man die Sache studiert hat oder nicht.
 
Nur programmieren zu können, reicht aber nicht aus, um komplexe Systeme zu entwerfen und zu realisieren. Ein Software-Ingenieur hat wesentlich mehr Kenntnisse, die über die eines Programmierers hinaus gehen.
 
antred schrieb:
Eher Wunschdenken als Realität. In meiner Erfahrung unterscheidet viele Ingenieure nur eins von den "Guerilla-Programmierern" ... der Titel. Ob man als Programmierer was taugt, hat meiner Meinung nach herzlich wenig damit zu tun, ob man die Sache studiert hat oder nicht.
Jemand, der nur die Sprache gelernt hat, aber nie was von theoretischer Informatik gehört hat, erfindet das Rad laufend neu.
Zu theoretischer Informatik gehören ja nicht nur eher komplexe Geschichten wie Race Conditions und der Aufbau eines Mutex, dazu gehören so ganz elementare Sachen wie leistungsfähige Such- und Sortieralgorithmen. Ein Laie wird immer erst einmal mit Naive Sort anfangen und sich dann wundern, warum das bei 10000 DAtensätzen einfach nicht klappt.

Ein umfangreicher Wortschatz in der Lieblings-Programmiersprache macht noch lange keinen guten Programmierer aus. Ein guter Programmierer kennt das gesamte Programm, bevor er auch nur eine Zeile Code geschrieben hat.... und da geht nichts über eine Fachausbildung.
 
Meine Erfahrung ist, dass beide Seiten Recht haben. Wenn jemand Interesse und Talent hat, ist ein Studium auch sinnvoll. Andererseits schaffen es auch Leute durchs Studium, die am Ende inkompetent sind, allerdings sind die Noten am Ende meistens schon ein leichter Indikator - wenn die Hochschule was taugt, was natürlich leider nicht immer der Fall ist.

Komplexitätsanalyse mit Rechnung werden nur die wenigsten Informatiker beherrschen. Stichwort Master-Theorem. Ist nicht immer so ganz einfach. Aus dem Stegreif würde ich es mir jetzt auch nicht zutrauen.
 
Zurück
Oben