Wie kann ich eine Softwareentwicklungs-Community an meiner Schule booten?

14

Ich bin ein Student an der University of South Florida, der mit dem Bildungsumfeld im Informatik-Programm frustriert ist. Im Moment nehme ich "Program Design". Ich sollte lernen, meinen Quellcode in Funktionen und Module zu organisieren, um meine Programme lesbar und wartbar zu machen. Stattdessen lerne ich Arrays und Rekursion in C. Im nächsten Semester muss ich "Object-Oriented Design" belegen, das durch C ++ ( shudder ) vermittelt wird.

Vor zwei Jahren habe ich mich in das Programmieren verliebt und seitdem so viel wie möglich gelernt. Die Aussicht, einen weiteren C ++ - Kurs zu belegen, lässt mich fast weinen. Aus diesem Grund dachte ich, ich würde einen Programmierclub gründen, um ähnlich ambitionierte Studenten zu treffen, neue Sprachen zu lernen, Softwareentwicklungsthemen zu diskutieren und mit anderen Studentenentwicklern zusammenzuarbeiten.

Ich beginne jedoch zu begreifen, dass es möglicherweise keine anderen Studenten gibt, die meine Erfahrung in der Softwareentwicklung teilen. Es liegt nicht an mangelnder Motivation, sondern an fehlenden Möglichkeiten: Ich kenne nur eine andere Programmierklasse ("Programmiersprachen") und keine Klasse für echte Softwareentwicklung. Alle anderen haben nur Erfahrung mit dem Schreiben von einfachen Skripten in C und C ++.

Ich habe festgestellt, dass ich sie selbst schulen muss, wenn ich mit anderen Studenten-Software-Entwicklern zusammenarbeiten möchte. Jetzt plane ich, den Club zu einem Bootcamp für die Softwareentwicklung zu machen und den Mitgliedern beizubringen, wie sie Software mit modernen Tools und Sprachen entwickeln. Offensichtlich ist der Beginn eines inoffiziellen Softwareentwicklungskurses eine monumentale Aufgabe mit vielen möglichen Ansätzen. Meine Frage an Sie, lieber Leser, ist

Was ist mein Angriffsplan?

Sollte ich

  • Den Club selbst belehren und versuchen, Clubarbeit mit Hausaufgaben in Einklang zu bringen?
  • Bitten Sie die CS-Fakultät, über Themen innerhalb ihres Fachwissens zu unterrichten, die für die Mitglieder möglicherweise weniger relevant sind?
  • Versuchen Sie, einen sympathischen, erfahrenen Entwickler innerhalb oder außerhalb der Schule zu finden, der meine Arbeit teilen kann?
  • Videovorträge anzeigen (von MIT OpenCourseWare , Google Tech Talks usw.)?
  • Programmierworkshops zum Anfassen?
  • Hausaufgaben machen?
  • mach etwas anderes?
Evan Kroske
quelle
3
Warum schaudert es Sie, wenn OOP durch C ++ unterrichtet wird? Fühlen Sie sich einfach unwohl im Umgang mit Hochsprachen? Wenn ja, wie erwarten Sie, OOP zu lernen?
Cam
4
@Evan: Um ehrlich zu sein, wenn Sie glauben, dass C ++ eine einfache Sprache ist, ist ein C ++ - Kurs genau das Richtige für Sie. Sie werden viel lernen. C ++ kann mit niedrigem Pegel auf den ersten Anfänger scheinen , weil es bietet Low-Level - Funktionen, aber Sie haben auf jeden Fall nicht , sie zu benutzen. In der Tat werden Sie die meiste Zeit die STL und alle ihre hochstufigen OOP-Funktionen verwenden.
Cam
10
C ++ ist im Vergleich zu Java, Ruby, Javascript, C # usw. auf niedrigem Niveau. Im Vergleich zu vielen anderen Sprachen ist es auf hohem Niveau. Scheint so etwas wie eine sinnlose Debatte.
Fishtoaster
2
@fishtoaster: Ich würde nicht sagen, dass C ++ im Vergleich zu Java und C # Low-Level ist. Es ist mindestens so gut wie diese Sprache (ich weiß nicht viel über die andere). Es gibt nur den zusätzlichen Vorteil, dass es auch auf niedrigem Niveau sein kann, so dass Sie das Beste aus beiden Welten erhalten.
n1ckp
1
@ n1ck: Zeiger als selbstverständlich (ich weiß, dass C # sie hat, aber ihre Verwendung ist selten), manuelle Speicherverwaltung, keine Lambdas (nicht sicher, welchen Namen C # ihnen gibt, Python verwendet Lambdas), kein natives foreach, ein viel kleinerer Standard Bibliothek, häufigeres Bit-Twiddling, Neukompilierung für verschiedene Plattformen usw. Sie müssen keine Assembly sein, um eine niedrigere Ebene als diese beiden zu haben.
Macha

Antworten:

20

Ehrlich gesagt betrifft mich deine ganze Einstellung. Sie haben die Gruppe noch nicht einmal zusammengebracht und gehen bereits davon aus, dass Sie nur einer sind, der über das nötige Wissen verfügt und der entscheiden sollte, was die Gruppe tun wird.

Die beste Wette ist es, die erste Gruppe zusammenzubringen und als Gruppe ein Brainstorming zu machen, was sie tun möchten. Was Sie persönlich tun möchten, ist in Bezug auf das, was die Gruppe tun möchte, irrelevant. Wenn Sie vor dem ersten Treffen entscheiden, was Sie ohne den Input der anderen Gruppenmitglieder tun sollen, werden Sie als arroganter Idiot empfunden, mit dem ich nicht freiwillig zusammenarbeiten möchte. Sie würden also die Gruppe töten, bevor sie gestartet wurde.

HLGEM
quelle
Du liegst absolut richtig; Ich muss keinen festen Masterplan für den Club selbst formulieren und umsetzen. Trotzdem brauche ich Ideen für Clubaktivitäten und Treffen, um mit dem Rest des Clubs zu diskutieren.
Evan Kroske
5

Da jeder in Ihrem Club freiwillig kommt, müssen Sie es interessant und motivierend gestalten. Und Hausaufgaben sind nicht gerade motivierend.

Jemandem etwas beizubringen ist schwer, aber warum nicht versuchen, auf eine Art und Weise zu unterrichten, die am Ende ein Ziel hat? Im Wesentlichen bringt man zuerst alle zusammen und erfindet ein Gruppenprojekt und eine Sprache. Das Projekt muss interessant sein und sichtbare Fortschritte zeigen, aber nicht zu schwer. Sobald Sie die richtige Sprache gefunden haben, bringen Sie ihnen die Grundlagen (Syntax, Pakete / Namespaces, Klassen, statische / dynamische Typisierung usw.) bei. Anschließend geben Sie ihnen Ressourcen (Bücher, Online-Tutorials, Online-Dokumentation), eine einfache Möglichkeit, Sie zu finden, und einen bestimmten Teil des Projekts, an dem Sie arbeiten können. Jede Person arbeitet dann in ihrer Freizeit am Projekt und konsultiert bei Bedarf die Dokumentation und Sie.

Was ist der Vorteil dieses Prozesses?

  • Die Leute langweilen sich nicht, wenn sie Ihnen oder jemand anderem zuhören, wenn sie sich bei jedem einzelnen Meeting über etwas Gedanken machen
  • Die Menschen lernen, wie man sich selbst unterrichtet, eine sehr wichtige Fähigkeit der realen Welt
  • Sie verpflichten sich nicht zu viel, da Sie nicht die einzige Wissensquelle sind
  • Sie müssen nicht die ganze Sprache kennen, bevor Sie sie unterrichten können, da Sie sie nur in die Sprache einführen müssen. Und wenn sie Sie nach etwas fragen müssen, können Sie es schnell recherchieren. Sie müssen jedoch ein wenig vor allen anderen sein, da einige Dinge wissen müssen, was 5 Schritte voraus ist
  • Du erschaffst etwas, das dazu neigt, Menschen zu motivieren

Der einzige Weg, um zu sehen, ob es funktioniert, ist es auszuprobieren.

TheLQ
quelle
Ein Gruppenprojekt wäre eine gute Idee, wenn ich die Clubmitgliedschaft unter zehn Studenten halten könnte. Danach werden die Teams unhandlich. Ich kann jedoch keine Unterstützung von Universitäten erhalten, wenn ich Studierende vom Beitritt zum Club ausschließt, und ich bin mir sicher, dass mehr als 10 Studierende daran interessiert sein werden, dem Club beizutreten. Unser Hacking Club hat bei seinen wöchentlichen Treffen immer mehr als dreißig Studenten.
Evan Kroske
1
Also mehr als ein Projekt? Versuchen Sie, gemeinsame Interessen unter allen Gruppenmitgliedern zu finden. Treffen Sie zuerst die persönlichen Interessen der Umfrage und versuchen Sie dann, Projekte zu entwickeln, die sich um diese Projekte drehen?
Chris
4

Mit Blick auf den Kurs Flussdiagramm für die wichtigsten , die Sie wirklich sind Missverständnisse , was in verschiedenen Klassen eines Informatik - Dur zu erwarten.

Die Klassen, über die Sie sprechen, sind Einführungskurse, in denen die Schüler mit verschiedenen Grundkonzepten des Codierens vertraut gemacht werden. Es sieht aus wie "Programming Concepts", eine Einführung in den Beruf mit einwöchigen Übersichten über alle grundlegenden Bereiche der Informatik, ohne eigentliche Kodierung. Von dort ist es NORMAL , einen Einführungskurs in C zu haben, und ein weiterer Einführungskurs in C ++ ist NORMAL für einen Informatik-Hauptfach. Möglicherweise kommen Sie mit etwas Programmiererfahrung in das Programm, aber die meisten Leute tun dies nicht. Das Programm muss unterrichtenKonzepte wie Rekursion und das Schreiben von Klassen und das Überladen von Operatoren sowie Vorlagen und all diese Dinge (ganz zu schweigen von dem Unterrichten über Variablen, for-Schleifen, if-Anweisungen usw.). Es gibt also zwei Klassen, die im Grunde genommen dafür ausgelegt sind Lernen Sie, wie man in einer Programmiersprache programmiert. Und sie haben normalerweise die Art von irreführenden Namen, die die Klassen Ihrer Universität haben. Klassen, die die gewünschte Organisationsebene vermitteln, werden normalerweise als "Software Engineering" oder "Design Patterns" bezeichnet. Ersteres ist in der Regel eine Anforderung, und Letzteres ist in der Regel ein Wahlfach (möglicherweise auf Hochschulniveau), aber beide können Wahlfächer sein.

Es gibt eine akademische und industrielle Debatte darüber, ob der Schwerpunkt des Informatiklehrplans auf der Organisation von Software liegt, ob der Hauptfach neu organisiert werden sollte und ob Informatik und Softwaretechnik unterschiedliche Hauptfächer sind, aber Ihr Informatikprogramm ist vorerst NORMAL .

(Und bleib dran - in ein oder zwei weiteren Semestern wirst du zu anspruchsvolleren Kursen kommen, die dir Dinge beibringen, die du noch nicht selbst beigebracht hast.)

Ken Bloom
quelle
Ich bin nicht zufrieden mit "normal". Ich möchte das College mit einer erstklassigen Ausbildung in Softwareentwicklung verlassen, und ich bin bereit, (hart) daran zu arbeiten, um dies zu erreichen. Ich hatte vor, anstelle von USF zum MIT zu wechseln, und verwende daher das Informatik- und Ingenieurprogramm des MIT als meine ideale CS-Ausbildung.
Evan Kroske
@Evan @Ken heh. Dann würde ich mein College für nicht normal halten. Einführung in Computeranwendungen (dh wie verwendet man Word) -> Computerlogik und Algorithmen (dh Flussdiagramme und Boolesche Logik. Keine Algorithmen dafür) -> Programmierung in C ++ (Syntax, OOP, Grundlagen) -> Erweitert Programmieren in C ++ (Algorithmen, Rekursionen, Zeiger) -> Programmieren in Java (dasselbe wie in C ++) -> Programmieren in Cobol (noch nicht so weit, aber Gott, ich fürchte es)
Earlz
1

Was ist mit Programmierwettbewerben? Sogar so etwas wie Perl Golf (oder PHP Golf), wo Leute (oder Teams) arbeiten, um ein Problem mit möglichst wenig Code zu lösen? Es ist eine großartige Möglichkeit, mehr über Sprachen und Wettbewerbe zu lernen, was die Dinge immer interessant macht.

Natürlich solltest du mehr als nur Wettbewerbe anbieten, aber sie sind ziemlich einfach einzurichten und ich habe sie immer genossen.

Colin O'Dell
quelle
1

Sie haben Recht, dass Sie eine Struktur brauchen; Sie wollen sich und die anderen zwingen, zu lernen, und nicht nur herumzusitzen und sich über Software zu unterhalten / über die miese Kursauswahl zu meckern. Aber ich bin mir nicht sicher, ob es der richtige Weg ist, dies als Klasse mit Ihnen zu behandeln, da sein Lehrer der richtige Weg ist. Du bist noch kein Experte und bist dabei, um etwas zu lernen.

Wie wäre es mit einer Organisation des Clubs um Softwareprojekte herum? Nicht einige Hausaufgabenprogramme für Spielzeug, aber etwas, von dem Sie denken, dass Sie es tatsächlich nützlich finden könnten. (Beachten Sie, dass "marginal nützlich" immer noch als "nützlich" qualifiziert ist. Sie versuchen zu lernen, indem Sie ein Startup nicht gefunden haben. :-)) Wenn der Verein genügend Leute für mehrere Teams hat, bilden Sie mehrere Teams. Das Team entscheidet, welche Sprache es verwenden möchte, wie die Spezifikationen lauten, wie die Arbeit aufgeteilt werden soll usw. usw. und arbeitet individuell in seiner eigenen Zeit daran. Bei Ihrem wöchentlichen Clubtreffen besprechen Sie dann, wie es sich von Angesicht zu Angesicht verhält, wo die Straßensperren sind, was Sie gelernt haben usw.

Mir gefällt auch die Idee, Gastdozenten einzubeziehen, sei es Lehrkräfte, Fachkräfte oder Videos, die Sie oder jemand anderes für wertvoll hält, geteilt zu werden. So könnten Sie ein Treffen pro Nacht organisieren:

  1. Gastvortrag zu einem Softwarethema von jemandem, der es gut kennt.
  2. Q & A / gab Session zum Vortrag (hoffentlich mit dem Dozenten, aber nur unter euch für Videos).
  3. Teilen Sie sich in Projektteams auf und erledigen Sie Projektaufgaben.

Das nimmt einen Abend in Anspruch und steckt ihn voller wissensfördernder Güte. Hoffnungsvoll.

Unabhängig davon wünsche ich Ihnen viel Glück bei diesem Projekt. Wenn Sie es auf den Weg gebracht haben, hoffe ich, dass Sie hierher zurückkommen und uns sagen, wie es funktioniert.

BlairHippo
quelle
1

Das Gruppenprojekt ist eine großartige Idee. Besonders wenn das Projekt etwas ist, das der Universität oder Ihren Mitschülern helfen kann.

Ich schloss mich einer Gruppe an, die an Projekten für Studenten arbeitete.
Das beliebteste Projekt war eine virtuelle 360-Grad-Tour durch den Campus.
Wir kauften die benötigte Ausrüstung und machten Fotos auf dem Campus. Dann haben wir eine Website für die Tour erstellt, das Hosting herausgefunden und sie auf der Website der Universität für angehende Studenten veröffentlicht. Dieses Projekt umfasste mehr als nur Programmieraufgaben und weckte auch das Interesse von Nicht-Programmierern.

Versuchen Sie, eine neue Website oder Anwendung zu identifizieren, die nicht nur Sie, sondern alle auf dem Campus verwenden möchten. Ich denke, es ist einfacher und macht mehr Spaß zu lernen, wenn Sie ein Ziel vor Augen haben.

Todd Bumbarger
quelle
Ich mag diese Idee wirklich. Es gibt viele Möglichkeiten, wie mein neuer Club die IT-Systeme des Colleges erweitern oder verbessern könnte. Wo bist du aus Neugier aufs College gegangen?
Evan Kroske
Clarion Universität in PA. Ich ging sogar einmal zu einem Interview, in dem die Interviewerin erwähnte, die Tour für die College-Suche ihres Sohnes genutzt zu haben. Es war sehr cool.
Todd Bumbarger
1

Wenn dies eine außerschulische Aktivität sein wird, machen Sie keine Hausaufgaben. Das ist nur lahm.

Sie könnten wahrscheinlich etwas cooles in Gang bringen, indem Sie einfach eine Github-Gruppe gründen und in Ihrer Schule posten / mailen (ich denke, Kinder nutzen heutzutage auch Facebook und Twitter? Könnte eine gute Idee sein, diese Punkte auch zu erreichen). Wenn Sie eine Gruppe von 5-6 Personen haben, die sich wirklich für ein Projekt interessieren, entscheiden Sie sich für ein Projekt und arbeiten Sie einfach daran.

Wenn es kein Interesse gibt, ist es ziemlich lächerlich, sich einem Open-Source-Projekt anzuschließen, wenn Sie einigermaßen erfahren sind. Ganz einfach: Geben Sie etwas bekannt, an dem Sie bei github interessiert sind, und beginnen Sie mit den Entwicklern zu sprechen.

Der Vorteil, den Sie gegenüber der Vorgängergeneration hatten, ist, dass es überhaupt nicht schwierig ist, sich mit Programmierern auf Ihrem Niveau und in Ihrer Sprache zu verbinden, obwohl sie geografisch sehr unterschiedlich sind. Und ich meine nicht nur eine E-Mail senden. Skype / iChat / Ventrilo machen Sprachkonferenzen einfach, Tools wie git / mercurial (und die zugehörigen Projektseiten online) machen es einfach, als Gruppe zu codieren, selbst wenn Sie sich auf der anderen Seite des Atlantiks befinden. Es gibt heutzutage wirklich keinen Grund, nicht sozial zu programmieren, wenn Sie das möchten.

Schließlich machen Sie es sich nicht zur Gewohnheit, Menschen nach den Sprachen zu beurteilen, die sie kennen / wissen wollen. Es ist eine einfache Falle, in die man geraten kann, wenn man der einzige Smalltalker in einer Herde von Leuten ist, der der Meinung ist, dass C ++ die Grenze des Programmierens darstellt, aber nicht viele Freunde findet und sich gegen bestimmte Tools einsetzt. Ich habe Hacker getroffen, die mir in Können und Erfahrung weit voraus sind und die LISP, Perl und C für dasselbe Projekt verwendet haben . Die Leute an der Spitze des professionellen Entwicklerhaufens interessieren sich normalerweise nicht dafür, wie hoch ihre Tools sind, solange sie ihre Arbeit erledigen.

Inaimathi
quelle
1

Das klingt nach einer Gelegenheit zum Networking. Ich bin mir sicher, dass es eine Reihe von Studenten gibt, die sich für Programmieren mit einem ähnlichen Erfahrungsniveau interessieren. Sie finden sie einfach nicht.

Haben Sie an einem der Code Camps (kostenloses Entwicklertraining) in der Gegend von Tampa Bay teilgenommen oder sind Sie einer der lokalen Programmierbenutzergruppen beigetreten?

Beide Ressourcen bieten Ihnen Möglichkeiten zum Networking. Und anstatt das Gefühl zu haben, dass Sie Ihre Kommilitonen ausbilden müssen, können Sie Ihre Freunde mit Ihnen einladen und dann besprechen, was behandelt wurde.

Sie erhalten auch Zugang zu Personen, die beruflich programmieren, und können sich ein Bild davon machen, mit welchen Situationen Sie in der "realen Welt" wahrscheinlich konfrontiert sind.

Nachdem Sie diese lokalen Ressourcen erkundet haben, werden Sie möglicherweise immer noch feststellen, dass Sie die Möglichkeit haben, Ihr Wissen durch eigene Präsentationen zu teilen. Das ist großartig. Wenn Sie das Gelernte mit einer Benutzergruppe oder als Sprecher einer Code Camp-Präsentation teilen, erhalten Sie ein gutes Feedback zu dem, was Sie gelernt haben, und Sie können auch mehr darüber lernen.

Ich bin in der Gegend von Tampa Bay aufgewachsen und habe viele kostenlose von Microsoft gesponserte Veranstaltungen besucht. Ihre lokale Benutzergruppe sollte auch Informationen darüber haben, wie sie sich an diesen Veranstaltungen beteiligen kann.

Nun, das war eine langatmige Antwort ...

Das nächste Code Camp in Tampa findet laut der tampacodecamp-Website am 13. November 2010 statt.

Hier ist ein Link zu Ihrer lokalen INETA / Programmier-Benutzergruppe:

http://www.tampadev.org/

(Ich bin neu in dieser Gruppe und konnte nur einen Link einfügen.)

Jeff
quelle
1

Wie wäre es, ein Open-Source-Projekt (oder mehrere) zu finden, zu dem Ihre Gruppe beitragen möchte?

Ich denke, die größte Herausforderung, der Sie sich stellen müssen, ist, dass das Schreiben von Code Spaß macht. Es sind jedoch alle Administratoren in der Umgebung usw., die es schnell zu einer schmerzhaften Erfahrung machen können. Wenn Sie ein vorhandenes Open-Source-Projekt finden, sollten Sie zumindest einen Teil des Support-Frameworks installiert haben.

Open Source wird Sie in gute Gewohnheiten versetzen, und obwohl Sie im Vergleich zu einigen Mitwirkenden hinter den Ohren ein bisschen nass sind, werden Sie einen großen Vorteil gegenüber anderen Menschen haben - Sie sind alle am selben Ort und in der Lage zu sein Führe Gespräche mit deinen Teammitgliedern, was normalerweise eines der größten Probleme bei der Open-Source-Community-Arbeit ist ...

DanW
quelle