30 minuti per spiegare la programmazione a un bambino di 15 anni [chiuso]


100

Sono stato volontario per sedermi e parlare della vita e del lavoro di uno sviluppatore con uno studente di 15 anni di esperienza lavorativa la prossima settimana.

Le catture sono questo

  • Ho solo mezz'ora e
  • Sarò solo una delle persone che le parleranno - altre persone che ricoprono ruoli diversi nel business saranno anche loro a gestire gli elementi del loro lavoro con lei per tutto il giorno.

Cosa dovrei coprire e cosa diavolo posso sperare di insegnarle in appena mezz'ora?

Presumo che probabilmente non abbia esperienza con lo sviluppo o la programmazione.


158
È deprimente quanto siano condiscendenti molte di queste risposte nei confronti dei bambini: hanno brevi periodi di attenzione, non capiscono le cose se non sono visive, non possono affrontare nulla di complicato. Stiamo parlando di un quindicenne qui. I quindicenni sono abbastanza in grado di capire e fare cose complicate, passare ore a essere profondamente coinvolti in qualcosa e avere pensieri astratti. Prenderei una quindicenne intelligente su uno di voi schmucks!
Tom Anderson,

8
@tom D'altra parte, ho sperimentato personalmente come la maggior parte degli adulti trovi noiosa qualsiasi cosa diversa dalla grafica su un computer. Dipende dal bambino e da quanto interesse hanno nei computer.
jhocking

6
@jh: Heh! Suppongo che la domanda non sia se questa persona abbia quindici anni, ma se sia intelligente e curiosa. Ora possiamo tutti (tranne Maxpm) essere vecchi duffer, ma una volta avevamo tutti quindici anni, e dubito piuttosto che quelli di noi che sono adulti intelligenti e curiosi fossero adolescenti noiosi e disinteressati.
Tom Anderson,

33
"Per prima cosa arrivo a lavorare un po 'dopo le 10 del mattino, bevo un sacco di caffè, lo inseguo con Mountain Dew e bevande energetiche. Trascorro le successive 2 ore a controllare la mia posta, scambiando ricette con l'unica donna sviluppatrice nel intero edificio, poi un breve pisolino dopo pranzo. Alzati, controlla di nuovo l'e-mail, naviga su YouTube per i video sui gatti, rimani aggiornato sugli ultimi fumetti di dilbert e smbc. Prima che tu lo sappia, sono le 4:30, ora di tornare a casa. Non posso fare molto, ma 100 programmatori mettono insieme la stessa cosa ogni giorno 3 anni, beh, ecco come nascono i videogiochi. "
Giulietta,

5
@ Tom: esattamente. Molti programmatori hanno iniziato prima dei 15 anni, quindi non capisco la condiscendenza.
Neil G,

Risposte:


130

Interagisco molto con i liceali, quindi rispondo a questa domanda abbastanza spesso. Tieni presente che i quindicenni sono molto più facili da spiegare alla programmazione rispetto ai cinquantenni, quindi non hai bisogno di cose stupide o utilizzare analogie inverosimili.

Di solito inizio con esempi di quali programmi sono:

  • App come iTunes, Photoshop, Chrome e giochi, inclusi i giochi per console.
  • Sistemi operativi come Windows, Mac OS, iOS di iPhone, Android. (Fidati di me, sapranno di cosa stai parlando.)
  • Programmi che risolvono i numeri o risolvono problemi matematici davvero complicati: simulazioni meteorologiche, simulazioni biologiche, calcolo di pi, AI, elaborazione del linguaggio ecc.
  • Anche i siti Web più sofisticati prevedono la programmazione.
  • Distributori automatici di biglietti di transito e bancomat, timer per microonde e frigorifero, navigazione in auto.

Dopodiché, di solito continuo spiegando che codifichiamo i programmi in un linguaggio formale che il computer può riconoscere, spesso digitandoli in qualcosa di semplice come Blocco note. Le lingue sembrano un incrocio tra matematica e inglese, descrivendo concetti e dando formule e istruzioni per il computer da seguire.

Quindi di solito mi chiedono se sono sempre al computer, se questo è il motivo per cui sono sempre su Facebook e perché i miei occhi non sono ancora andati male. I ragazzi chiedono se so come "hackerare le persone" e le ragazze chiedono se sono buoni soldi o quante ragazze ci sono nelle lezioni di informatica.

Dopodiché, se sono ancora interessati, di solito iniziano a porre domande specifiche a cui è molto più facile rispondere (o almeno a Wiki): cose come come faresti un gioco, come funziona Windows Messenger ecc.

Se hai un computer in giro, puoi mostrare e dire un po 'di codice - qualcosa che avrebbe effetti tangibili, come un gestore di clic sui pulsanti dalla finestra di dialogo delle impostazioni in Firefox, il ciclo principale o il codice fisico in un motore di gioco, alcuni Fonte JavaScript da un sito Web ecc.


73
Grazie per avermi ricordato che spiegare la programmazione a un bambino può essere più semplice che spiegarlo a un adulto. Continuo a dimenticare che non hanno mai non state circondate dai computer.
jhocking il

12
ahah lo prendo sempre, se sai come "hackerare la gente" hahahahaha
John Connelly,

3
@jhocking Penso anche che molti di loro siano più luminosi di gran parte della generazione delle scatole idiota. Qualità a parte, la mera quantità di testo che leggono è destinata a fare del bene.
Rei Miyasaka,

4
@rei: Beh, ho abilità sociali avanzate, e ho trovato degno di nota la quantità di attenzione che le poche donne in quelle classi hanno ricevuto ... Era ben intenzionato, ma ... allarmante. Se fossi stato io, avrei corso urlando. Essere circondati da un'orda di respiratori con la bocca sudata è destinato a essere un punto di svolta per qualsiasi persona normale, quindi o dovresti apprezzare l'attenzione o dovresti davvero amare la scienza. Quindi di certo non mi ha sorpreso che c'erano così poche femmine. Immagino che nelle scuole più piccole non sia così orribile.
Satanicpuppy,

4
Bene, di solito arrivo con almeno quindici minuti di ritardo, ah, uso la porta laterale - in questo modo Lumbergh non può vedermi, eh eh - e, dopo, ho appena lasciato spazio per circa un'ora. Sì, fisso solo la mia scrivania; ma sembra che io stia lavorando. Lo faccio probabilmente anche per un'altra ora dopo pranzo. Direi che in una data settimana probabilmente faccio solo circa quindici minuti di lavoro reale, reale.
teambob,

73

L'ho spiegato al mio bambino di cinque anni con quanto segue:

Io: "Sai come, nelle storie, le persone dicono parole magiche e cambiano le cose nel mondo?"
Lei: "Sì?"
Io: "Ecco cos'è la programmazione per computer".
Lei (piano): "Wow."

15-30 minuti non sono sufficienti per spiegare qualcosa di reale, e spiegare la complessità sottostante è un modo sicuro per farli correre urlando. Ci lavori ogni giorno, dimentichi quanto sia fottutamente bello. Nessun'altra professione al mondo crea cose funzionali con nient'altro che parole ... Ad un certo punto, tutti gli altri devono uscire nel mondo della carne e iniziare a battere sulle cose con un martello. Questo è l'unico modo in cui possono trasformare la loro idea in una cosa funzionante.

Non noi.


77
lol @ insegnando a tuo figlio che sei un mago
scherzando il

23
"Nessun'altra professione al mondo crea cose funzionali dal nulla ma dalle parole" - lo fanno gli avvocati e i legislatori.
Tom Anderson,

48
@ Tom Probabilmente limitano le cose funzionali più di quanto non le creino.
Max

16
@tom: No, non lo fanno. Un brief legale non è più una cosa funzionale di una storia o una poesia. Una legge è come un progetto: definisce un'idea, ma poi qualcuno deve uscire nel mondo della carne e farla rispettare. Ma codice? Potrei scrivere un programma per acquistare o vendere azioni in base alla sua logica interna, e farebbe la sua cosa senza ulteriori input da parte mia. Potrei scriverne uno per governare le porte dell'inondazione, reindirizzare l'elettricità, accendere o spegnere le luci a seconda dell'ora del giorno. È unico tra le professioni.
Satanicpuppy,

15
@Satanicpuppy: No, non potresti scrivere un programma che farebbe nessuna di queste cose. Un ingegnere elettronico potrebbe costruire un computer che potrebbe farlo, però. Se glielo chiedi bene, forse potrebbe averlo fatto uscire nel mondo della carne e far rispettare i tuoi programmi.
Tom Anderson,

56

Una persona di 15 anni può comprendere qualsiasi concetto. Io stesso ho iniziato a programmare a 14. (a scuola, molti anni fa)

30 minuti sono sufficienti per una demo. Mostrale la magia della programmazione con qualcosa di così diffuso come un browser.

  1. Trova un PC connesso a Internet. (più divertente se non è tuo, e ancora di più se è suo)
  2. Vai a http://api.jquery.com/jQuery.getJSON/
  3. Scorri la pagina verso il basso e trova il codice HTML per l'esempio dei gatti .
  4. Seleziona il codice HTML e copialo.
  5. Vai su http://jsdo.it e fai clic su Inizia la codifica .
  6. Apri un account usando un tuo OpenID. (processo in una fase)
  7. Seleziona la scheda HTML sul pannello di sinistra e incollala lì.
    • tra un secondo comparirà un gruppo di gatti sul pannello di destra
  8. Taglia il javascript e incollalo nella scheda JavaScript . (per l'evidenziazione della sintassi)
    • in un secondo i gatti si aggiornano automaticamente sul pannello di destra
  9. Cerca la proprietà tags nel javascript e modificala in "cane".
    • appare un gruppo di cani
  10. Falla ripetere il processo da sola con altri tag di sua scelta.
    • suggerirle di provare con due tag, separati da una virgola
  11. Cambia la riga "if (i == 3)" in "if (i == 5)"; faglielo capire
    • ora ci sono 6 immagini e prima c'erano 4
    • sarebbe meglio se il numero nel codice corrispondesse al numero nella pagina
  12. Correggi il bug insieme (scambia quella linea e quella precedente)
  13. ...

1
Oppure potresti usare jsfiddle, senza bisogno di registrarti: jsfiddle.net/WXVra
rjmunro


26

passi

Da quasi 15 anni, posso dirti con sicurezza che dovresti iniziare in modo spettacolare .

  1. Spiega cosa fanno i programmatori. (Giochi, simulatori.) Mostra qualcosa di bello che hai fatto. (Sul computer. Per favore, nessuna riga di comando - sembra spaventare tutti.)
  2. Spiega come lo fai.

    • Digli che non digiti 10101010tutto il giorno. Di 'loro che non sai nemmeno come farlo. ( Lie. Voi non sapete che cosa 10101010significa, a destra;)) Dite loro che era anni fa.
    • Avvia il tuo IDE. Assicurati che sia bello - MSVS2010, QtCreator e NetBeans sono tutti buoni. Assicurati di rimuovere alcune delle cose extra per renderlo meno intimidatorio (meno menu), ma mantieni gli effetti visivi.
    • Mostra loro un campione di alcuni pseudocodici. Semplifica la comprensione:

      Display Window
      Display "I like cheese!"
      Display OK button
      
      If user clicks OK button, close Window
      

      Passa attraverso quel passo dopo passo. Di 'loro che non è esattamente come appare il codice. Il codice sembra English + Math. Ma non è difficile imparare la "lingua" (leggi: sintassi) in cui parli.

    • Mostra loro un esempio con un po 'più di "matematica", questa volta.

      User inputs A
      User inputs B
      
      C = A + B
      
      Display C
      

      Spiega che quel codice aggiunge due numeri insieme, come una calcolatrice. Mostra loro il codice "reale" per questo. (Assicurati di mettere la maggior parte dell'interfaccia utente e altre cose in un file separato e mantieni il file che mostri loro breve e semplice.) Cambialo in un programma di sottrazione (cambiando il segno da +a -) proprio davanti ai loro occhi.

  3. Spiega cosa devono sapere per fare la programmazione. (Su vari livelli.)

    • Abilità di algebra di base, come se x + 1 = 2, allora x = 1.
    • Capacità di risoluzione dei problemi.
    • ["Avanzate"] Matematica di livello superiore. Questo è per i programmatori che lavorano in luoghi come la NASA.

Termini che puoi usare

Sappiamo più di quanto pensi.

  • Facebook, Twitter, Social Networking
  • Windows, Mac, Linux
  • Design, più veloce, test, avvio / corsa

Termini che dovresti spiegare

Sì, abbiamo ancora bisogno di alcune cose spiegate.

  • Compilatore: converte il codice (come nell'esempio nel passaggio 2) in 10101010.
  • Linguaggio di programmazione: sembra un esempio nel passaggio 2.

Termini che non puoi usare

Alcuni di noi conoscono queste cose, ma per favore non dirlo comunque.

  • Qualsiasi tipo di "sistema" diverso dal sistema operativo
  • Ottimizzazione, analisi (oh oh)
  • Input / Output (se è necessario utilizzarlo, provare a renderlo il più semplice possibile)

Alla ricerca di un IDE 'cool'? Non cercare oltre Xcode.
Alan Zeino,

2
@Alan Zeino intendi Emacs.
destra

Questa risposta mi piace di più. Penso che qualcuno che prenda questa virata realizzerebbe più di qualcuno che lavora su altre (anche di alta qualità) risposte a questa domanda.
TehShrike,

17

Se inizi a parlare di cose come processo, modelli, requisiti e simili, si chiuderà immediatamente. I bambini di oggi sono grafici e visivamente motivati, quindi vorrei introdurre qualcosa per aiutare a promuovere quei tipi di stimolo. Mostrale qualcosa di accattivante sul web e poi ad alto livello descrivile cosa lo fa. Vorrei anche suggerire di portare il tuo laptop di sviluppo e far accadere qualcosa di "bello" sullo schermo - cambiare il codice davanti a lei e poi vederlo cambiare sullo schermo. A quell'età, sono MOLTO intelligenti e qualsiasi cosa visiva aiuterà a suscitare interesse.


oh sì, la grafica è un'ottima idea. A rischio di essere troppo simile a una classe, sarebbe molto probabile che disegnassi diagrammi sulla lavagna per illustrare tutto ciò che dico.
jhocking

1
Parlando di immagini, che ne dici di mostrarle un piccolo video o un programma di Alice?
Carlos Campderrós,

9
@Carlos A 15 anni, posso attestare personalmente che odio Alice con la passione ardente di mille soli. Questo è probabilmente perché so già come programmare, però. Non sono sicuro di come lo vedano i principianti totali.
Max

1
+1 per "cambia il codice davanti a lei e poi guardalo cambiare sullo schermo" - inizia mostrandole una connessione diretta tra la cosa "reale" e il codice dietro di essa. Qualcosa di moderatamente profondo, come l'ordinamento o l'interrogazione di alcuni dati, non solo modificando un po 'di JSP o formattazione di stringhe. Crea quella connessione, quindi costruisci da essa.
Tom Anderson,

1
La capacità di cambiare l'aspetto di un programma con poche righe di codice è ciò che mi ha portato a programmare molti anni fa - grazie per il suggerimento
Dexter,

13

Ci sono due grandi analogie su cui faccio affidamento per spiegare il lavoro dei programmatori. Uno è una ricetta; quella metafora è utile per spiegare su piccola scala cosa sta facendo ogni riga di codice. Il lavoro di un programmatore sta scrivendo la ricetta e il computer è il cuoco.

L'altra analogia è che un grande programma è come una grande azienda. Ci sono un sacco di dipartimenti diversi che si concentrano su aree diverse e inviano messaggi avanti e indietro e il tutto finisce per raggiungere gli obiettivi dell'azienda. Il lavoro di un programmatore sta progettando come l'organizzazione è impostata e il computer è tutto il personale dell'azienda.


8

Direi di mantenerlo generale. La programmazione e molte altre professioni si riducono alla risoluzione dei problemi. Mostrale come risolvi i problemi su base giornaliera. Potresti parlarle di un progetto a cui stai lavorando e di come aiuterà i tuoi clienti. Includi anche un po 'il motivo per cui (presumibilmente) ti piace il tuo lavoro.

Nel mio caso ho sviluppato un sito Web di tutorial video educativi in ​​cui altri membri dello staff pubblicano tutorial. Spiegherei la motivazione del progetto (insegnando agli altri da remoto senza dover legare le persone), i problemi che ho affrontato (non devo necessariamente vederli come problemi difficili) e come li ho risolti. Parlerò anche del perché mi piace programmare in primo luogo: mi piace creare cose e il contributo della programmazione al mondo moderno.


8

Forniscigli esempi di software su cui hai lavorato. Hai un cliente che utilizza pubblicamente il tuo software? Sviluppa un'app interna che potresti mostrarle? Mostrale il risultato finale del tuo lavoro, ciò che l'utente finale vede e utilizza.

Quindi, spiega che hai contribuito a scriverlo. Ripassa le parti che hai scritto. Mostra del codice se puoi. Descrivi come quelle righe di codice fanno funzionare alcune parti dell'applicazione.

Parla di quanto ti diverti nel vedere il tuo codice usato dalle persone.

È così che l'ho spiegato a mio cugino di 14 anni comunque. Rimase piuttosto impressionato e decise di seguire un corso di programmazione il prossimo anno.


5
Funziona bene se lavori su software che sembra interessante per i non programmatori. Molti dei miei progetti recenti vivono in un database e "sembrano" come una riga di comando (e anche quelli che non erano presenti in un'app Web che sembravano molto noiosi - ma finché i dati sono stati elaborati, a nessuno importava). Per un non programmatore, è un prompt lampeggiante che genera una riga di testo ogni pochi minuti, quindi si interrompe. Così noioso da guardare ... sigh :(
FrustratedWithFormsDesigner

1
Dai una visione più ampia di "risultato finale del tuo lavoro". Ciò non significa solo il software su cui hai lavorato; potrebbe anche significare le varie applicazioni client abilitate dal software back-end su cui hai lavorato.
jhocking

Almeno non sei uno sviluppatore di SharePoint come me, @FrustratedWithFormsDesigner .. Sono sicuro di poter trovare qualcosa di bello tra tutte le mie parentesi angolari!
Dexter,

4
@FrustratedWithFormsDesigner Sono andato a un giorno "persuadiamo i ragazzi delle scuole che vale la pena applicare al CS" quando avevo 15 anni, insieme a molti altri bambini brillanti della mia scuola. Roba da riga di comando LOOKED COOL. Sembrava super potente per noi, e questo lo ha reso COOOOOL. Non dare per scontato che le ragazze di 15 anni non vogliono governare l'universo :)
testerab,

Sicuramente hai programmato qualcosa di divertente nel tuo tempo libero che potresti mostrare. Ho programmato un gioco Tetris, uno spettatore frattale e un risolutore di sudoku. Ognuno di questi è divertente da mostrare.
Carra,

7

Conosci il gioco da tavolo Robo Rally?

Ho scoperto che è l'analogia divertente perfetta per la programmazione. Fondamentalmente stai programmando il tuo robot usando semplici comandi (principalmente frecce) per raggiungere un certo punto nel tabellone di gioco prima degli altri.

Amico, vorrei avere ancora il mio BigTrak ...


4
Giochiamo semi-regolarmente nella nostra serata di gioco (fino a 8 persone, la maggior parte sono studenti di matematica o CS). È bene mostrare come il multithreading può andare storto :-p
Paŭlo Ebermann,

@Paulo - LOL Non ci ho mai pensato in questo modo, ma hai ragione!
Sistema

6

Mostra qualcosa di semplice, ma utile. Un buon esempio penso che sarebbe il seguente:

  1. Ottieni una cartella piena o immagini (basta che non si adattino tutte a una schermata in Esplora cartelle)
  2. Dì loro che il tuo obiettivo è ridimensionare le immagini (forse così puoi inviarle via email agli amici o pubblicare online da qualche parte, qualunque cosa)
  3. Dimostrare di ridimensionare un'immagine in GIMP / Photoshop / qualunque cosa
  4. Ora fai notare che farlo ha richiesto almeno 30 secondi e hai molte immagini, non vuoi passare un'ora a farlo
  5. Scrivi uno script di shell per ridimensionarli tutti usando ImageMagick
  6. Li stupirai che il ridimensionamento di tutte le immagini con il tuo semplice programma a 3 righe sia stato più veloce del ridimensionamento di una singola immagine in Photoshop

Le ragioni per cui mi piace questo approccio sono:

  • Non devi dire loro perché la programmazione è utile, hanno appena visto il perché
  • Puoi scrivere l'intero programma in un paio di secondi mentre stanno guardando (ti consiglio di provarlo in anticipo, poiché le dimostrazioni vanno sempre male)
  • Non stai assumendo che siano idioti / che necessitino di una sorta di esempio di "bambino" - Questo è un semplice esempio, ma ha usi nel mondo reale .

Potresti essere in grado di pensare a esempi migliori, ma penso che lo stile sia utile per una "prima introduzione".


5

La maggior parte dei quindicenni "in questi giorni" ha molta esperienza con i computer. Vorrei un approccio più pratico. Le mostrerei un po 'di codice (non proverei a spiegarlo in dettaglio, ma forse coprirò le basi estreme del "flusso") e le mostrerei qual è il risultato. Anche HTML funzionerà per questo tipo di esempio. Quindi dì "Ogni giorno, praticamente lo faccio ... tranne che con decine di migliaia di righe di codice e un programma molto grande e complesso".

Spiega quindi che tipo di problemi risolvi programmando e perché ti piace farlo. Ad esempio, direi che mi piace programmare perché "Adoro vedere il mio codice prendere vita nel computer come un'applicazione"


4

In primo luogo, hai una competizione che devi sfatare.

I film, la cultura popolare e persino le persone sul campo ( e questa domanda del resto ) tentano di rappresentare la programmazione (e la maggior parte del campo dell'informatica) come un qualche tipo di magia. Non è magia

La programmazione sta semplicemente descrivendo le attività e quindi combinandole per risolvere un problema. Se stai cercando di trovare un parallelo, usa la matematica. Un computer è come un insegnante di matematica che ti richiede di mostrare tutto il tuo lavoro .

Da un punto di vista fisico, i computer non sono smart-- hanno solo sapere quanto diciamo loro. Quindi, quando un programmatore di computer desidera creare un programma che, ad esempio, riproduce musica da un CD, "semplicemente" deve dire al computer come leggere i dati memorizzati sul CD, quindi come convertirli in onde sonore e infine , come emettere quelle onde sonore dagli altoparlanti.

Portando questa idea al livello successivo, puoi continuare su come la programmazione costruisce le attività una sopra l'altra. Proprio come lui / lei ha dovuto imparare l'aritmetica prima che potessero imparare l'algebra in matematica, ai computer deve anche essere detto come 'fare le basi' prima che tu possa dire loro come fare compiti più complessi. Nel corso degli anni, gli informatici e i programmatori sono stati in grado di "insegnare" ai computer le basi abbastanza da poter iniziare a "parlare" molto più vicino a come parliamo.

Nella vita reale, il tuo insegnante di matematica potrebbe dirti di risolvere "15 al potere di 3", ma sai come farlo solo perché ti era stato precedentemente insegnato che "X al potere di Y" si interrompe nei compiti di "Moltiplica X per X e fallo Y volte" [tecnicamente Y -1 volte, ma eh.]

Proprio come le tue lezioni di matematica, i programmatori hanno stabilito una base di compiti "noti", quindi non abbiamo bisogno di concentrarci sui dettagli delle piccole cose e possiamo dedicare il nostro tempo a risolvere i problemi reali e non tanto a come eseguire il sottostante attività: ora possiamo supporre che un computer capisca come fare le cose di base.


3

Farei ciò che mi ha attaccato quando avevo circa 9 anni. Prendi il C64 dal soppalco e faccio:

10 PRINT "YOU SMELL"

20 GOTO 10

(Grazie papà).

Quindi quando il divertimento è finito. Le mostrerei il gioco di indovinare il numero. Sì, tutto in BASIC. Non c'è bisogno di morire per un linguaggio moderno per mostrare a un computer che sta prendendo istruzioni.


2
Buono. Hai colpito il chiodo sulla testa. Rendilo davvero semplice e rendilo divertente. E BASIC è perfetto per questo.
Mike Dunlavey,

1
D'accordo, BASIC è fantastico e GOTO è il miglior linguaggio per iniziare. Il mio primo programma è stato molto simile.
Tomas Andrle

Non dirò di essere totalmente contrario, ma non ho imparato a conoscere goto fino a dopo alcuni anni di programmazione in C ++. Anche da allora, non ho mai scritto un singolo goto in vita mia. Bene o male, non giudicherò - volevo solo che fosse noto che Goto non è necessariamente ... uh ... necessario.
31eee384,

3

Potrebbe essere utile iniziare con qualcosa che fa abitualmente, come Facebook, e spiegarle come un aspetto semplice come l'accesso può essere molto complicato.

Da qui puoi diramare in database, progettazione di applicazioni e poi in alcuni aspetti della sicurezza che è qualcosa di utile che può portare via.

Puoi anche chiederle qualcosa del tipo "Se ci fosse una cosa su Facebook che potresti cambiare, quale sarebbe?" Quindi illustrala come potresti apportare il cambiamento e quante persone sarebbero coinvolte.

Ho imparato per la prima volta a programmare Pascal e mi ha fatto impazzire il fatto che il mio programma accettasse il mio contributo, si fosse incasinato e stampato qualcosa di diverso. Sono stato agganciato da lì. Alcune persone si agganciano facilmente.


L'uso di Facebook è un buon suggerimento, grazie @ client09
Dexter,

2

Spero di essere andato in un posto di lavoro in un posto che presumibilmente sviluppa software che deve avere un certo interesse nel campo?

Non c'è una risposta prestabilita, la interrogerei per 5-10 minuti su ciò che sa, quindi proverei a costruirlo nel miglior modo possibile.


Non sono sicuro @Chris - ci sono molti ruoli diversi in un'azienda tecnologica, dalla contabilità alle risorse umane allo sviluppo e alla consulenza. Le stiamo dando un breve assaggio di molti ruoli diversi, quindi non credo che farei questa ipotesi
Dexter,

Beh, ad essere sinceri non hai mai dichiarato perché fosse il tipo di azienda. : p Sarebbe sicuro dire che se qualcuno andasse per un posto in un negozio di chitarre probabilmente si interesserebbe alle chitarre piuttosto che essere un liutaio di legno.
Anonimo il

2

Inizia ad alto livello. Forse spiegare che la programmazione per computer riguarda la risoluzione dei problemi: risolvere un problema e escogitare una soluzione scritta come un insieme di istruzioni che una macchina può usare e comprendere.

La parte difficile potrebbe essere quella di fornire esempi che una ragazza di 15 anni troverebbe interessante e pertinente . Non essendo mai stato in quella situazione e non conoscendola, non sono sicuro di cosa raccomandare per questo ... Evita esempi di codice, fino alla fine, e salvo casi molto semplici o interessanti, come un programma "Hello world" o qualcosa di semplice e grafico (disegna alcune forme in una finestra, traccia un mouse, ecc ...).


Non credo di poter insegnare a qualcuno sulla programmazione senza mostrare loro almeno alcuni esempi del codice su cui sto lavorando ..
Dexter,

@Dexter: tra 30 minuti, non sono sicuro che vorrei soffermarmi troppo su come appare il codice. Non intendevo non mostrare nulla, ma dato che non hai molto tempo, non credo che il codice dovrebbe essere al centro dell'attenzione. Potrebbe diventare molto secco e noioso. Parla di più di idee e concetti se puoi. Se riesci a trovare un semplice esempio (forse meno di 10 righe) che è facile da capire e anche interessante, provalo!
FrustratedWithFormsDesigner,

d'accordo, ma penso che piuttosto che fare un semplice esempio del capitolo 1, preferirei mostrare un programma che ho sviluppato e attivare alcune righe di codice per mostrare un risultato .. alla fine non penso di essere potrò insegnarle come programmare, ma forse posso ispirarla a voler saperne di più ..
Dexter,

2

Ecco la mia opinione su questo dopo un paio di tentativi falliti e un paio abbastanza buoni:

La programmazione è problem solving.

Inizia con cose concrete che sono programmate e che usano ogni giorno: browser Internet (Facebook), cellulare, registratore di cassa, ecc. Fagli dare molti esempi. Stabilisci che tutte queste cose hanno una specie di computer. Il cuore di un computer è il processore.

Il processore è come un lavoratore molto veloce, ma molto stupido. Se gli dai alcune istruzioni, le farà esattamente come dici tu. Non farà nulla in più e non ti dirà se qualcosa che gli hai detto di fare era sbagliato. Questo processore fa tutto, però: se dici esattamente come farlo, può fare una telefonata o inserire un'immagine in un'e-mail.

Chiedile come avrebbe detto a un lavoratore molto veloce ma molto stupido di acquistare una lattina di soda da una macchina per bevande. Mentre inizia a descrivere i passaggi ("Inserisci i soldi nella macchina e premi il pulsante") inizia a dissezionarli come un programma ("Che cosa sono i soldi? Come li inserisco nella macchina? Quando inserisco i soldi nella macchina e premo il pulsante allo stesso tempo, non succede nulla. "). Se hai una lavagna, inizia a sinistra con il suo primo set di istruzioni. Mentre li rivede, posiziona il nuovo elenco più grande sul lato destro. Quando hai un buon set di istruzioni, inizia a generalizzare i pezzi ("Rimuovere i soldi dalla tasca e rimuovere la soda dal vassoio suona simile - quali parti sono uguali / diverse?") Prendi le generalizzazioni e mettile nel mezzo e tagliare via i pezzi che ora comprendono. Prova a legare alla fine i pezzi per abbinarli alle sue istruzioni originali, un po 'come le chiamate di funzione simili. Altri buoni esercizi: spedisci una lettera, attraversa una porta, disegna un cerchio / quadrato / triangolo.

Quindi la programmazione è la risoluzione dei problemi: suddividere i problemi in parti, identificare le parti comuni e raggruppare quelle parti per risolvere i problemi. Presto scopri che alcune parti sono comuni a molti problemi e poi inizi a metterle insieme per risolvere problemi che non sapevi nemmeno di avere.

Ok, a questo punto potrebbe capire ma probabilmente è annoiata. Seguitelo con una serie di fantastici esempi di programmazione. Gli shader e il relativo codice visivo sono facili da provare: puoi creare una foto e iniziare a modificarla con piccole modifiche al codice. Se ha espresso interesse per Facebook, mettiti in mostra parlando con Facebook tramite REST per vedere i dati di amici di amici (6 gradi su di lei). Se le piacciono i videogiochi, mostra un paio di demo di giochi open source insieme a qualche frammento del loro codice e di come aiutano il gioco a funzionare. Termina mostrando un paio di strumenti gratuiti e risorse che potrebbe indagare a casa. (Python, C #, ecc.)

I miei tentativi falliti: cercare di spiegare il calcolo pi (stavano chiedendo), il gioco da tavolo C-Jump http://c-jump.com/ (non l'hanno capito e le istruzioni erano buggy), e codificare dal vivo un 2d gioco (non riuscivo a trattenere l'interesse, non importa quanto piccoli passi tra le demo).

In bocca al lupo!


2

Crea un programma semplice. No, non "Hello World!"

Quello che farei è dire che ci sono molti tipi di linguaggi di programmazione - quelli che creano giochi, quelli che controllano i robot - ma quello con cui lavorerai è l'HTML.

Crea una pagina web senza nulla e poi aggiungi un modulo che invierà un'email al suo indirizzo email. Presumibilmente ha un telefono cellulare in grado di avvisare il proprietario che hanno una nuova e-mail, quindi potresti dirle che è un ottimo modo per i suoi amici e familiari di contattarla. Se in futuro avrà il suo sito Web, puoi dirle che può inserire il modulo sul suo sito Web, consentendo ai suoi clienti e partner commerciali di contattarla.

In alternativa, se è un po 'birichina, ti dirò cosa mi ha interessato alla programmazione: l'hacking. In passato, ho realizzato il miglior programma mai realizzato per scherzare su AOL (al di fuori di un programma che ha superato il mio in una sola delle dozzine di cose che il mio ha fatto) - all'età di 14-15 anni. Per quanto riguarda il cappello bianco, ho anche realizzato uno dei primi programmi di rimozione dello spam (1995.) Sono stato in grado di rendere la mia esperienza online molto più piacevole e la lasceremo. Tutto quello che volevo fare su un computer era un'avventura o un puzzle che dovevo capire, e le cose che volevo fare su un computer erano infinite. Certo, farlo funzionare a volte era un mal di testa, ma scrivere un programma che riusciva a fare le cose meglio e più velocemente di quanto qualsiasi umano potesse, o fare cose che erano semplicemente impossibili per il grande pubblico, era come costruire un bel macchinario di cui si potesse essere orgogliosi. Ora, probabilmente stai cercando di evitare qualcosa di serio, ma sarebbe estremamente facile creare qualcosa in Visual Basic che possa essere avviato all'avvio (seduto sul lato dello schermo o nella barra delle applicazioni) e da lì, potresti fargli lanciare i suoi siti Web preferiti, i suoi programmi preferiti, ecc. Potresti farle conoscere i comandi necessari per avviare un exe e un sito Web, e poi chiederle semplicemente di creare alcuni pulsanti, quindi aggiungere il codice a quei pulsanti , inserendo i suoi siti Web preferiti (Facebook, Twitter, ecc.) e i programmi (iTunes, elaboratore di testi, ecc.) Se il suo computer è nella sua stanza, è possibile anche lanciare una sveglia per aggiungere funzionalità. Ovviamente, 30 minuti sono troppo brevi per superarla, quindi dovresti già averlo fatto. Alla fine, le invieresti per email un piccolo manuale utente di 2-3 pagine, il codice e il file .exe ... e poi la lasceresti con un po 'di vendite: all'inizio non è facile, ma una volta ottenuto il impiccarlo, non è poi così male, sarà estremamente utile nella vita e aiuterà a sviluppare il suo pensiero analitico.


2

Insegnavo agli studenti universitari di 18 anni e suppongo che quelli di 15 anni siano più o meno gli stessi. Non aspettarti il ​​successo senza pratica. Mi ci sono volute alcune settimane nella mia prima lezione per "rompere".

La cosa più grande che dovevo imparare era che ciò che pensavo fosse così semplice ed ovvio che temevo di non poter riempire il tempo non era affatto così per gli studenti. Ho imparato che devi fare piccoli passi, altrimenti è solo magia "gee whiz".

Non riesco a capire come ti comporti in 30 minuti, ma la prima cosa che ho fatto è stato mostrare loro un piccolo computer fatto in casa che avevo costruito, programmato per riprodurre un po 'di melodia facendo clic su un altoparlante dentro e fuori. Ho spiegato che poteva suonare una nota decrementando un contatore, per agire come un ritardo, tra i clic. Ho appena scritto lo pseudo-codice alla lavagna, proprio come una ricetta. Quindi, c'era un piccolo condensatore che potevo agganciare sotto un filo che avrebbe fatto funzionare l'intera cosa circa 1000 volte più lentamente. Poi hanno potuto sentire click - wait - click - wait ... Poi quando ho sganciato il condensatore, è scoppiato con la piccola melodia.

Il punto era di capire che i computer fanno solo cose semplici e le fanno una alla volta. Non iniziano ogni passaggio fino al completamento del passaggio precedente. (Sì, sì, lo so - pipeline e tutto il resto, ma stiamo parlando con i neofiti .) È solo la velocità elettronica che li fa sembrare che facciano tutto in una volta, che è ciò che i neofiti tendono ad assumere (insieme alla lettura della mente) . Questo è uno dei concetti di base senza i quali non puoi iniziare a capire la programmazione e i computer. Per noi, questo è così approfondito che non ci rendiamo nemmeno conto di conoscerlo, ma i principianti non lo sanno.


1

So che non è un linguaggio di programmazione ma penso che l'HTML sia un buon punto di partenza. Perché ottieni risultati immediati .... inizia con

Ciao mondo

Quindi fa:

Ciao <b> Mondo </b>

Eccetera.


1

Se fossi in me, le direi che la programmazione consiste nel dividere un compito in piccoli compiti in un modo che ti aiuti a risolverli; e quindi esprimere quei piccoli compiti in una lingua che non può essere fraintesa da un computer idiota. Ma devi anche farlo in modo tale che anche altri programmatori possano capirlo facilmente - e non è la stessa cosa.

Cioè, oltre a quello che hanno detto tutti gli altri ...


1

Questa è più delle mie esperienze personali che una semplice "risposta".

Perché mi sono interessato? I miei genitori hanno acquistato un IBM PC XT nel 1984 (sono nato nel 1984). Ha una RAM da 640kb e un HDD da 20 MB e un FDD da 5 "e ha eseguito MS-DOS v3.2. Non mi è stato permesso di toccarlo fino a quando non ero nel 5 ° standard e quando finalmente mi è stato permesso di usarlo, ho versato tutti i miei anni di curiosità accumulata in esso.

D'altra parte a mia sorella è stato permesso quello stesso PC e un mackintosh Quadra 610 ogni volta che lo desiderava e ci ha prestato molta attenzione quanto ha pagato al tavolo su cui era sistemata.

Insegnare a mia sorella ... Ho provato a insegnare a mia sorella la programmazione al computer in BASIC. L'ho portata a tutto, dall'avvio del computer alla digitazione del programma e all'esecuzione. Era come programma di linea.

10 PRINT "CAT"
20 END

Ci è voluta mezz'ora. Quando alla fine lo ha eseguito, ha stampato la parola "CAT" ed era furiosa. Si aspettava che comparisse l'immagine di un gatto. Si precipitò fuori dalla stanza e quella fu la fine della programmazione per sempre!

Morale: l'output dovrebbe essere proporzionale al tempo e agli sforzi che hanno investito.

Insegnare ai bambini delle superiori Labview e Lego NXT Sono stato un mentore per la PRIMA Robotica per un anno e ho dovuto guidare i bambini nella programmazione del robot in NI Labview. Francamente, l'abilità di programmazione richiesta era molto al di sopra del livello di un bambino delle superiori. Ma la competizione aveva lo scopo di far appassionare i bambini all'ingegneria e aumentare la loro capacità di affrontare una sfida. Finché i programmi avevano solo un'istruzione if e un ciclo, le cose andavano bene. Le persone abbandonarono la sezione di programmazione del robot quando videro il diagramma del codice che avevo creato per il robot che avevamo costruito l'anno precedente.

Per quanto le persone affermino che i quindicenni possono fare cose complesse e possono avere un'attenzione nell'arco di ore, ho trovato una strana mancanza di motivazione in loro per farlo. Volevano fare cose facili che non tassassero il cervello. Preferivano molto CAD e fresare parti sul tornio piuttosto che scrivere programmi.


1

Che cos'è CS?

Penso che prima di entrare nelle demo, ti aiuti a dare una breve occhiata al ruolo di CS nel mondo. Mi è piaciuta la descrizione di Hal Abelson di CS relativa alla matematica: mentre la matematica ti aiuta a descrivere il mondo in termini di leggi, CS ti aiuta a descrivere come fare le cose. Il suo esempio era la funzione radice quadrata: la matematica la definirà, ma non ti aiuterà a trovarla per un dato input. CS lo farà. A un livello inferiore, l'ingegneria elettrica e la fisica hanno gettato le basi per l'hardware che ha permesso a Internet, ma hanno lasciato aperte le domande su come convincere le persone a usarlo.

Com'è essere un programmatore?

Quindi c'è la domanda su cosa significhi essere un programmatore. Ciò che mi ha attirato è stato il fatto che ha una svolta più rapida di provare qualcosa, testarlo, risolverlo, rispetto a qualsiasi altro campo tecnico. È una soluzione continua dei problemi, mentre in altri campi il tempo di risposta per un singolo ciclo può essere di mesi. È anche utile in quasi ogni altro campo tecnico, il che è più di quanto si possa dire per ... la maggior parte degli altri campi tecnici. Quindi, se non sai ancora cosa vuoi fare (probabilmente), è una buona cosa iniziare presto. Al college, poche cose ti renderanno più utile a più professori che essere in grado di codificare i loro esperimenti.

Caramelle per gli occhi, legate al codice

Quindi, ovviamente, non dimenticare le demo. Potrebbe essere interessante ottenere una copia del terremoto (open-source) e apportare alcune modifiche di una riga (ad esempio, modificare la forza di gravità) e ricompilare, ad esempio. Dai anche un'occhiata al codice. Rassicurala che non dovrebbe aspettarsi di capire molto, può sembrare incomprensibile ora, ma poi di nuovo, così fanno i giornali in lingue straniere che non ha ancora imparato. Puoi dire che ciò nonostante può vedere che le cose vengono assegnate alle cose, agli oggetti viene detto cosa fare, ed ecco dove impostiamo la gravità, ecc.


1

Ho iniziato a programmare a 14 anni. Mentre la maggior parte (47 dei 50 studenti che si sono iscritti) hanno abbandonato la scuola a metà anno o hanno semplicemente deciso di non continuare il corso avanzato il prossimo anno, mi sono bloccato e ho imparato qualcosa di molto importante:

La programmazione ti dà la possibilità di creare qualcosa dal nulla. Hai il potere di trasformare le parole in uno strumento utile che soddisfa un'esigenza, un'attività divertente per te e i tuoi amici, o semplicemente qualcosa che puoi mostrare ai tuoi amici e dire "Guarda cosa ho fatto".

Inizialmente ci è stato insegnato "Hello World", ma non mi interessava fino a quando non riuscissi a far interagire il mio codice con l'utente . Nel momento in cui ci hanno insegnato a leggere input con "cin", ho deciso di creare un programma Mad-Lib che potevamo suonare in classe. Il mio primo ostacolo è stato leggere l'input contenente spazi, seguito dalla formattazione dell'output. In seguito volevo essere in grado di salvare queste storie in un file e quindi avevo bisogno di imparare il file IO. Affrontare gli ostacoli per raggiungere i miei obiettivi era ciò che mi ha tenuto impegnato.

Più tardi nell'anno abbiamo scoperto che gli amministratori di rete stavano registrando il nostro uso di "Net send" e il client Novell SendMessage che stavamo usando per comunicare durante le lezioni di computer, e l'hanno disabilitato dopo che gli studenti lo hanno usato per imbrogliare su un test. Quindi ho scritto una chat room per sostituire quella disabilitata dagli amministratori. È stata la prima cosa veramente utile che ho creato. L'ho modellato sul sistema di chat di Battle.Net, completo di registrazione utente, moderatori e persino una crittografia di base e un sistema di file shadow per impedire agli utenti di manomettere (tutti i file dovevano risiedere su un'unità di rete condivisa per consentire agli studenti di accedere e utilizzare il programma). Questi non erano concetti di cui ero già a conoscenza, ma soluzioni che ho escogitato da solo per risolvere un problema. Per me è stata la gioia della programmazione.

Quindi, per rispondere correttamente alla domanda, oltre alla discussione su cosa significhi sviluppare software, una demo interattiva è probabilmente un'ottima idea. Preferibilmente qualcosa che risolve un problema che ha, come il ridimensionamento automatico di tutte quelle immagini giganti dalla sua macchina fotografica. Anche se un po 'più complicata, potrebbe divertirsi con una semplice pagina web lascia un messaggio che può condividere con i suoi amici. Potresti averlo e-mail a qualcuno ogni volta che viene pubblicato un nuovo messaggio e fargli modificare il codice per inviarlo alla sua e-mail anziché alla tua. Inoltre, fai in modo che la pagina mostri l'ultimo numero X di commenti e le faccia regolare anche quel numero e vedi quali sono i risultati.


1

Nei luoghi in cui lavoravo, a volte c'erano esperienze di lavoro con bambini che arrivavano. Alcuni erano interessati ai computer, altri no. Li usavamo per farli sedere davanti a un computer e per farli scrivere un gioco d'ipotesi. (Il computer seleziona casualmente un numero, l'utente riceve un feedback se la sua ipotesi era troppo alta / bassa.) È semplice da fare ed è davvero un risultato divertente. Niente è più potente di mostrare loro in modo tangibile ciò che LORO possono creare.


1

Quando vuoi ottenere - e mantenere - l'attenzione di qualcuno, poi CHIEDI, non dirlo. Chiedi come avrebbero svolto un compito semplice, come bere un bicchiere d'acqua. Quindi mostra loro come seguire le istruzioni che hanno fornito (come "Scendi in fondo al corridoio") in realtà non gestisce i problemi di quando girare a sinistra, girare a destra, fermarti, ecc. Comprendere e gestire quelle condizioni al contorno, questo è il business di programmazione! Quindi puoi mostrare come un ciclo "da fare" fino a quando può gestire il tipo di situazione "cammina fino a quando non raggiungi il muro", per rendere i meta-compiti fuori dal compito un piede davanti all'altro di camminare.


1

Non sono sicuro che questa sia una leggenda o una storia vera, ma un giorno stavo leggendo perché il fortunato si è irrigidito. Parte di una storia era il modo in cui mostrava la programmazione a un bambino (o forse anche ai bambini) che incontrava su un treno.
Come alcuni di voi potrebbero sapere, perché era un ragazzo di Ruby (e Ruby, beh, è ​​abbastanza amichevole con gli umani normali). Stava lavorando a qualche gioco in Ruby, mentre un bambino gli si avvicinava per vedere cosa stava facendo. Prima ha mostrato loro il risultato : il gioco di lavoro. Quindi, ha mostrato al bambino come può modificare le cose nel codice per cambiare il risultato. Quindi ha lasciato che il bambino giocasse con il codice e vedesse il risultato modificato.
Penso che dovrebbe essere il tuo flusso di lavoro generale: risultato, modifica, gioco. Dovresti trovare qualche progetto (il gioco sarebbe la scelta migliore) in un linguaggio amico dell'uomo e mostrarlo al bambino.

Come ho triste, non ho idea se questa storia è vera o no. È ancora molto bello.

Inoltre, un'altra cosa. Ricordo la mia prima esperienza con la programmazione - MessageBoxin Delphi. È stato bello, perché ho potuto far fare al computer quello che volevo e vedere immediatamente il risultato.
Quindi, sono comparsi i microcontrollori. Erano persino migliori, perché il mio codice poteva cambiare il mondo reale. Voglio dire, assegnare un valore alla variabile ha smesso di essere così astratto, in quanto ha fatto apparire una tensione sulla porta di uscita, che poi ha fatto muovere il mio motore. È stato bello. Puoi scegliere in questo modo: mostra al bambino qualcosa come Arduino.

Vedi, penso che si tratti di cambiare e vedere il risultato.


0

Mostrale il risultato finale di alcune delle cose che hai fatto. Parla in generale del tuo ruolo nei progetti. Forse anche aiutarla a fare un ciao mondo se sembra interessata.


0

La mia analogia preferita per la programmazione è la magia (stile di Harry Potter), come Satanicpuppy. Lo uso sia per colleghi non tecnici che per bambini, sembra funzionare abbastanza bene e trasmette sicuramente la potenza che i computer ci danno.

I computer sono le nostre bacchette magiche. Ci permettono di eseguire la magia dato il giusto movimento del polso e degli incantesimi. Come programmatori, abbiamo accesso ai libri degli incantesimi (biblioteche) elaborati e perfezionati dai nostri predecessori. Possiamo creare nuovi incantesimi e incantesimi o lavorare con quelli esistenti. Alcuni sono facili, altri richiedono più pratica per usarli davvero in modo efficace, ci sono spesso compromessi e molti modi diversi per risolvere lo stesso problema (dovrei usare una buona pozione o un incantesimo?).

Questa metafora estesa può davvero essere allungata bene e spesso mi permette di trasmettere la mia passione per la programmazione in un modo accessibile alle persone fuori dal campo.


0

Il modo migliore per capire i bambini è quello di essere un bambino prima ..! Da bambino odiavo fare i compiti, le imposizioni ecc.! quindi ci sono punti di ingresso in cui puoi attirare la loro attenzione. In 30 minuti, anche se non possiamo spiegare tutto, possiamo provare a dare loro una sorta di esposizione dove i bambini interessati lo trovano come fonte di ispirazione. Inizia con i loro argomenti correlati come i compiti a casa, ecc. Spiega loro come un computer può scrivere l'imposizione in pochi secondi ecc.

Vi auguro tutto il meglio.. ! buon lavoro

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.