Come posso avviare una comunità di sviluppo software nella mia scuola?

14

Sono uno studente della University of South Florida che è frustrato dall'ambiente educativo nel programma di Computer Science. In questo momento, sto prendendo "Program Design". Dovrei imparare come organizzare il mio codice sorgente in funzioni e moduli al fine di rendere i miei programmi leggibili e mantenibili; invece, sto imparando sugli array e sulla ricorsione in C. Il prossimo semestre, devo prendere "Object-Oriented Design", che viene insegnato attraverso C ++ ( shudder .)

Due anni fa mi sono innamorato della programmazione e da allora ho imparato tutto il possibile. La prospettiva di prendere un'altra classe C ++ mi annoia quasi fino alle lacrime. Per questo motivo, ho pensato di avviare un club di programmazione per incontrare studenti altrettanto ambiziosi, imparare nuove lingue, discutere argomenti di sviluppo del software e lavorare con altri sviluppatori di studenti.

Tuttavia, sto iniziando a capire che potrebbero non esserci altri studenti che condividono la mia esperienza di sviluppo del software. Non è una mancanza di motivazione, ma una mancanza di opportunità: conosco solo un'altra classe di programmazione ("Linguaggi di programmazione") e nessuna classe sullo sviluppo di software nel mondo reale. Tutti gli altri hanno solo esperienza di scrittura di script banali in C e C ++.

Mi sono reso conto che se voglio lavorare con altri sviluppatori di software per studenti, dovrò addestrarli da solo. Ora, ho intenzione di rendere il club un bootcamp di sviluppo software, insegnando ai membri come sviluppare software con strumenti e linguaggi moderni. Ovviamente, l'avvio di un corso di sviluppo di software non ufficiale è un compito monumentale con molti approcci possibili. La mia domanda, caro lettore, è

Qual è il mio piano di attacco?

Dovrei

  • dare lezioni al club, cercando di bilanciare il lavoro del club con i compiti?
  • chiedi al corpo docente del CS di insegnare su argomenti nell'ambito delle loro competenze che potrebbero essere meno rilevanti per i membri?
  • prova a trovare uno sviluppatore simpatico ed esperto all'interno o all'esterno della scuola che possa condividere il mio carico di lavoro?
  • mostra le lezioni video (da MIT OpenCourseWare , Google Tech Talks , ecc.?
  • tieni seminari di programmazione pratica?
  • assegna i compiti?
  • fai qualcos'altro?
posta Evan Kroske 17.10.2010 - 20:06
fonte

9 risposte

20

Francamente, il tuo intero atteggiamento mi riguarda. Non hai nemmeno riunito il gruppo e già presumi che sarai uno solo che ha qualche conoscenza da impartire e colui che dovrebbe decidere cosa farà il gruppo.

La soluzione migliore è riunire il gruppo iniziale e, in gruppo, fare un brainstorming di ciò che vogliono fare. Ciò che tu personalmente vuoi fare è irrilevante in termini di ciò che il gruppo vuole fare. Decidendo che cosa fare senza l'input degli altri membri del gruppo prima del primo incontro, ti imbatterai in un idiota arrogante con cui non vorrei lavorare volontariamente. Quindi ucciderebbe il gruppo prima che iniziasse.

    
risposta data 21.10.2010 - 19:06
fonte
5

Poiché tutti i membri del tuo club stanno arrivando volontariamente, devi renderli interessanti e motivanti. E i compiti non sono esattamente motivanti.

Insegnare a qualcuno è difficile, ma perché non provare a insegnare in modo diverso con un obiettivo alla fine? Fondamentalmente dapprima ci si ritrova insieme e si crea un progetto di gruppo e una lingua. Il progetto deve essere interessante ed essere in grado di mostrare progressi visibili ma non troppo difficili. Una volta terminato il linguaggio, insegnate loro le basi (sintassi, pacchetti / spazi dei nomi, classi, tipizzazione statica / dinamica, ecc.). Dopodiché dai loro risorse (libri, tutorial online, documentazione online), un modo semplice per afferrarti e una parte specifica del progetto su cui lavorare. Ogni persona lavora quindi al progetto nel tempo libero, consultando la documentazione e se necessario.

Qual è il vantaggio di questo processo?

  • Le persone non si annoiano ascoltando te o qualcun altro che canta su qualcosa ogni singolo incontro
  • Le persone imparano come auto-insegnare, un'abilità molto importante nel mondo reale
  • Non stai sfruttando troppo te stesso dal momento che non sei l'unica risorsa di conoscenza
  • Non è necessario conoscere l'intera lingua prima di poterla insegnare poiché è necessario solo introdurli nella lingua. E quando hanno bisogno di chiederti qualcosa, puoi cercarlo rapidamente. Tuttavia, devi essere un po 'più avanti rispetto a tutti gli altri, poiché alcune cose richiedono di sapere quali sono 5 passi avanti
  • Stai creando qualcosa che tende a motivare le persone

L'unico modo per vedere se funziona è provarlo.

    
risposta data 17.10.2010 - 20:51
fonte
4

Guardando il diagramma di flusso del corso per i tuoi principali , stai davvero fraintendendo cosa aspettarti in diverse classi di una specializzazione in Informatica.

Le classi di cui parli sono classi introduttive che hanno introdotto gli studenti a vari concetti di base nella codifica. Sembra che "Programming Concepts" sia un'introduzione alla professione con panoramiche di una settimana su tutte le aree di base dell'informatica, senza una vera codifica. Da lì, è NORMAL avere un corso introduttivo in C, e un altro corso introduttivo in C ++ è NORMAL per un maggiore di Informatica. Tu potresti entrare nel programma con qualche esperienza di programmazione, ma la maggior parte delle persone non lo è. Il programma deve insegnare concetti come la ricorsione, e come scrivere classi, e l'overloading dell'operatore, e template e tutta quella roba (per non parlare dell'insegnamento di variabili, for-loops, if-statement, ecc. ..), quindi ci sono due classi fondamentalmente progettate per insegnarti come codificare in qualche linguaggio di programmazione. E di solito hanno il tipo di nomi fuorvianti che fanno le classi della tua università. Le classi che insegnano il livello di organizzazione desiderato sono generalmente denominate "Software Engineering" o "Design Patterns". Il primo è tipicamente un requisito, e il secondo è tipicamente elettivo (forse a livello di laurea), ma entrambi possono essere elettivi.

C'è un dibattito accademico e di settore sul fatto che il curriculum di Informatica si concentri sull'organizzazione del software come dovrebbe, se il maggiore debba essere riorganizzato e se Informatica e Ingegneria del Software siano major diversi, ma per ora, il tuo Computer Science il programma è NORMAL .

(E appendi lì - in un altro semestre o due, andrai a classi più impegnative che ti insegnano cose che non hai già imparato da solo.)

    
risposta data 22.10.2010 - 16:44
fonte
1

Che ne pensi di programmare le competizioni? Anche qualcosa come Perl Golf (o PHP Golf), dove ci sono persone (o team) che lavorano per risolvere un problema usando la minor quantità di codice possibile? È un ottimo modo per imparare di più sulle lingue e le competizioni che rendono sempre le cose interessanti.

Ovviamente dovresti offrire molto più delle semplici gare, ma sono abbastanza facili da configurare e mi sono sempre piaciute.

    
risposta data 18.10.2010 - 06:51
fonte
1

Hai ragione che hai bisogno di una struttura; vuoi forzare te stesso e gli altri a imparare, e non limitarti a chiacchierare di software / bitching sulla pessima selezione del corso. Ma non sono sicuro di trattarlo come una lezione con te dato che la sua insegnante è la strada da percorrere; non sei ancora un esperto e ci sei dentro anche per imparare qualcosa.

Che ne pensi di organizzare il club attorno ai progetti software? Non alcuni programmi per i compiti a casa, ma qualcosa che pensi che potresti trovare utile. (Si noti che "marginalmente utile" si qualifica ancora come "utile", si sta cercando di imparare-da-fare, non trovato un avvio. :-)) Se il club ha abbastanza persone per più squadre, formare più squadre. Il team decide quale linguaggio utilizzare, quali sono le specifiche, come deve essere diviso il lavoro, ecc. Ecc., E lavora su di esso individualmente nel proprio tempo. Poi alla riunione del tuo club settimanale, discuti di come va faccia a faccia, dove sono i posti di blocco, cose belle che hai imparato, ecc.

Mi piace molto anche l'idea di portare docenti ospiti, che siano docenti, professionisti o video che tu o qualcun altro pensa valga la pena condividere. Quindi, puoi organizzare una riunione serale come questa:

  1. Conferenza su alcuni argomenti del software da parte di qualcuno che lo conosce bene.
  2. Q & A / gab session sulla conferenza (eventualmente con la partecipazione del docente, ma solo tra di voi per i video).
  3. Dividi in team di progetto, fai progetti.

Ci vorrà una serata e lo riempiremo di bontà che accresce la conoscenza. Speriamo.

Indipendentemente da ciò, ti auguro buona fortuna con questo progetto. Quando lo togli da terra, spero che torni qui e ci dica come sta funzionando.

    
risposta data 21.10.2010 - 18:04
fonte
1

Il progetto di gruppo è una grande idea. Soprattutto se il progetto è qualcosa che può aiutare l'università, o i tuoi compagni di classe.

Sono entrato in un gruppo durante il college che stava lavorando a progetti per studenti.
Il progetto più popolare è stato un tour virtuale a 360 gradi del campus.
Abbiamo acquistato l'attrezzatura necessaria e abbiamo iniziato a scattare foto nel campus. Poi abbiamo creato un sito web per ospitare il tour, capito l'hosting e l'ho visto sul sito web dell'università per futuri studenti. Questo progetto si estendeva oltre la semplice programmazione delle attività e anche i non programmatori erano interessati.

Prova ad identificare un nuovo sito Web o applicazione che non solo tu vorresti utilizzare, ma che chiunque nel campus desidera utilizzare. Penso che sia più facile e divertente da imparare se hai in mente un obiettivo.

    
risposta data 21.10.2010 - 19:46
fonte
1

Se questa attività sarà extra-curriculare, non fare i compiti a casa. Questo è solo zoppo.

Probabilmente potresti ottenere qualcosa di interessante iniziando da un gruppo github e poster / email nella tua scuola (immagino che i bambini di questi tempi usino anche Facebook e Twitter? Potrebbe essere una buona idea colpire anche quei punti). Quando ottieni un gruppo di 5-6 persone che sono veramente interessate insieme, decidi un progetto e ti ci metti a lavorare.

Se non vi è alcun interesse, è abbastanza ridicolmente facile unirsi a un progetto open source se si è abbastanza abili. Semplice come biforcarsi qualcosa che ti interessa a github e iniziare a parlare con gli sviluppatori.

Il vantaggio che la generazione precedente non ha avuto è che non è affatto difficile connettersi ai programmatori al tuo livello e nella tua lingua, pur essendo molto diversi da un punto di vista geografico. E non intendo solo mandare una email Skype / iChat / Ventrilo facilitano le conferenze vocali, strumenti come git / mercurial (e le relative pagine del progetto online) facilitano la codifica in gruppo anche se ti trovi su lati opposti dell'Atlantico. Non c'è davvero alcun motivo per non codificare socialmente in questi giorni, se è quello che vuoi fare.

Infine, non prendere l'abitudine di giudicare le persone dalle lingue che conoscono / vogliono sapere. È una trappola facile a cui cadere quando sei l'unico Smalltalker in una mandria di persone che pensano che C ++ rappresenti il limite della programmazione, ma non ti porterà molti amici, e ti darà una preferenza per certi strumenti. Ho incontrato hacker che sono più avanti di me per competenza ed esperienza, che hanno utilizzato LISP, Perl e C sullo stesso progetto . Le persone nella parte superiore dell'heap di sviluppatori professionali tendono a non preoccuparsi molto del livello dei loro strumenti finché fanno il lavoro.

    
risposta data 21.10.2010 - 19:51
fonte
1

Questa sembra un'opportunità di networking, sono sicuro che ci sono un certo numero di studenti interessati a programmare con un livello simile di esperienza / formazione ... semplicemente non li trovi ...

Hai frequentato uno dei Code Camp (formazione relativa agli sviluppatori gratuiti) nell'area di Tampa Bay, o sei entrato a far parte di uno dei gruppi di utenti locali di programmazione?

Entrambe queste risorse ti offriranno opportunità di networking. E invece di sentirti come se dovessi allenare i tuoi compagni studenti, potrai invitare i tuoi amici insieme a te e poi discutere di ciò che è stato coperto.

Avrai anche accesso a persone che stanno programmando come una carriera e puoi avere un'idea di quali tipi di situazioni potresti incontrare nel "mondo reale".

Dopo aver esplorato queste risorse locali potresti ancora scoprire che hai l'opportunità di condividere le tue conoscenze facendo le tue presentazioni, il che è fantastico. Condividere ciò che hai imparato con un gruppo di utenti o come relatore di una presentazione del campo di codice è un buon modo per ottenere feedback su ciò che hai appreso e ti apre anche a imparare di più.

Sono cresciuto nell'area di Tampa Bay e ho partecipato a molti eventi gratuiti sponsorizzati da Microsoft, il tuo gruppo di utenti locali dovrebbe avere informazioni su come essere coinvolto in questi eventi.

Bene, questa è stata una lunga risposta ...

Il prossimo Code Camp a Tampa è il 13 novembre 2010 secondo il sito web di tampacodecamp.

Ecco un link al tuo gruppo di utenti INETA / programmazione locale:

link

(Sono nuovo in questo gruppo e sono stato in grado di includere solo un collegamento.)

    
risposta data 26.10.2010 - 18:47
fonte
1

Che ne pensi di trovare un progetto open source (o più di uno) a cui il tuo gruppo è interessato a contribuire?

Penso che la sfida più grande che potresti affrontare sia che scrivere codice sia divertente, è tutto l'amministratore che lo circonda e che può trasformarlo rapidamente in un'esperienza dolorosa. Se riesci a trovare un progetto open source esistente, dovresti avere almeno una parte del framework di supporto.

L'open source ti porterà in buone abitudini e, anche se sarai un po 'umido dietro le orecchie rispetto ad alcuni dei contributori, avrai un vantaggio maggiore rispetto ad altre persone - sarai nella stessa posizione e in grado di tenere conversazioni con i membri del tuo team, che è normalmente uno dei più grandi problemi con il lavoro di community open source ...

    
risposta data 18.11.2010 - 16:33
fonte

Leggi altre domande sui tag