30 minutos para explicar a programação a um adolescente de 15 anos [fechado]


100

Fui voluntário para sentar e conversar sobre a vida e o trabalho de um desenvolvedor com um aluno de 15 anos de experiência profissional na próxima semana.

O problema é que

  • Eu tenho apenas meia hora e
  • Serei apenas uma das pessoas conversando com ela - outras pessoas em diferentes funções nos negócios também estarão analisando os elementos de seus trabalhos ao longo do dia.

O que devo cobrir e o que diabos posso ensinar em apenas meia hora?

Suponho que ela provavelmente não tenha experiência com desenvolvimento ou programação.


158
É deprimente o quão paternalista muitas dessas respostas são para as crianças - elas têm pouco tempo de atenção, não entendem as coisas se não são visuais, não conseguem lidar com nada complicado. Estamos falando de um garoto de quinze anos aqui. Os jovens de quinze anos são capazes de entender e fazer coisas complicadas, passando horas se envolvendo profundamente em algo e tendo pensamentos abstratos. Eu aceitaria um garoto de quinze anos inteligente por qualquer um de vocês idiotas!
Tom Anderson

8
@ tom Por outro lado, eu pessoalmente experimentei como a maioria dos adultos acha algo entediante além de visuais em um computador. Depende da criança e de quanto interesse ela tem nos computadores.
Jhocking

6
@jh: Heh! Suponho que a questão não é se essa pessoa tem quinze anos, mas se é inteligente e curiosa. Todos nós (com exceção do Maxpm) agora somos velhos, mas já tínhamos quinze anos, e duvido que aqueles de nós que somos adultos inteligentes e curiosos fossem adolescentes maçantes e desinteressados.
Tom Anderson

33
"Primeiro, chego ao trabalho um pouco depois das 10 da manhã, tomo muito café, persigo-o com Mountain Dew e bebidas energéticas. Passo as próximas duas horas checando minhas correspondências, trocando receitas com a única desenvolvedora feminina do edifício inteiro, depois um breve cochilo depois do almoço Levante-se, verifique o e-mail novamente, navegue no youtube para ver vídeos de gatos, acompanhe as últimas histórias em quadrinhos de dilbert e smbc. Antes que você perceba, são quatro e meia da tarde para voltar para casa. Não posso fazer muito, mas 100 programadores fazem a mesma coisa todos os dias, 3 anos; é assim que nascem os videogames. "
Julieta

5
@ Tom: exatamente. Muitos programadores começaram antes dos 15 anos, então eu não entendo a condescendência.
Neil G.

Respostas:


130

Eu interajo muito com os estudantes do ensino médio, por isso respondo a essa pergunta com bastante frequência. Lembre-se de que as crianças de 15 anos são muito mais fáceis de explicar a programação para as de 50 anos - portanto, você não precisa fazer coisas idiotas nem usar analogias absurdas.

Normalmente começo com exemplos de quais programas são:

  • Aplicativos como iTunes, Photoshop, Chrome e jogos, incluindo jogos de console.
  • Sistemas operacionais como Windows, Mac OS, iOS do iPhone, Android. (Confie em mim, eles saberão do que você está falando.)
  • Programas que analisam números ou resolvem problemas matemáticos realmente complicados - simulações meteorológicas, simulações biológicas, cálculo de pi, IA, processamento de linguagem etc.
  • Os sites mais sofisticados também envolvem programação.
  • Máquinas de venda automática de bilhetes de trânsito e caixas eletrônicos, microondas e frigobar, navegação de carro.

Depois disso, geralmente explico que codificamos programas em uma linguagem formal que o computador possa reconhecer, geralmente digitando-os em algo tão simples quanto o Bloco de Notas. Os idiomas parecem um cruzamento entre matemática e inglês, descrevendo conceitos e fornecendo fórmulas e instruções para o computador seguir.

Então eles costumam perguntar se eu estou no computador o tempo todo, se é por isso que estou sempre no Facebook e por que meus olhos ainda não estão ruins. Os caras perguntam se eu sei "hackear as pessoas", e as garotas perguntam se é um bom dinheiro ou quantas garotas existem nas aulas de ciência da computação.

Depois disso, se eles ainda estão interessados, geralmente começam a fazer perguntas específicas muito mais fáceis de responder (ou pelo menos ao Wiki): coisas como como você faria um jogo, como o Windows Messenger funciona etc.

Se você tem um computador por perto, pode mostrar e contar algum código - algo que teria efeitos tangíveis, como um manipulador de cliques de botão na caixa de diálogo de configurações do Firefox, o loop principal ou código de física em um mecanismo de jogo, alguns Fonte JavaScript de um site etc.


73
Obrigado por me lembrar que explicar a programação a uma criança pode ser mais fácil do que explicá-la a um adulto. Eu continuo esquecendo que eles nunca não foi cercado por computadores.
jhocking

12
hahaha eu conseguir que um o tempo todo, se você sabe como "hack pessoas" hahahahaha
John Connelly

3
@jhocking Eu também acho que muitos deles são mais brilhantes do que boa parte da geração de caixas idiotas. Qualidade à parte, a enorme quantidade de texto que eles lêem é obrigada a fazer algum bem.
Rei Miyasaka

4
@rei: Bem, eu tenho habilidades sociais avançadas e achei digno de curiosidade a quantidade de atenção que as poucas mulheres nessas classes receberam ... Era bem-intencionada, mas ... alarmante. Se fosse eu, eu teria corrido gritando. Estar cercado por uma horda de respiradores suados na boca é um desagrado para qualquer pessoa normal, então você precisa gostar da atenção ou realmente gosta de ficção científica. Portanto, certamente não me surpreendeu que houvesse tão poucas mulheres. Eu imagino que em escolas menores não é tão horrível.
21811 Satanicpuppy

4
Bem, eu geralmente chego pelo menos quinze minutos atrasado, ah, eu uso a porta lateral - assim Lumbergh não pode me ver, heh heh - e, uh, depois disso, eu meio que espaço por cerca de uma hora. Sim, eu apenas olho para a minha mesa; mas parece que estou trabalhando. Eu faço isso provavelmente por mais uma hora depois do almoço também. Eu diria que em uma determinada semana provavelmente só faço cerca de quinze minutos de trabalho real, real.
TeamBob

73

Expliquei isso aos meus cinco anos de idade com o seguinte:

Eu: "Você sabe como, nas histórias, as pessoas dizem palavras mágicas e mudam as coisas no mundo?"
Ela: "Yeaaa?"
Eu: "É isso que é a programação de computadores".
Ela (calmamente): "Uau".

15 a 30 minutos não são suficientes para explicar algo real, e explicar a complexidade subjacente é uma maneira de fazê-los gritar. Você trabalha nele todos os dias, esquece como é legal. Nenhuma outra profissão no mundo cria coisas funcionais a partir de nada além de palavras ... Em algum momento, todo mundo precisa entrar no mundo da carne e começar a bater nas coisas com um martelo. Essa é a única maneira de transformar sua ideia em algo funcional.

Nós não.


77
lol @ ensinando seu filho que você é um assistente
jhocking

23
"Nenhuma outra profissão no mundo cria coisas funcionais a partir de nada além de palavras" - fazem advogados e legisladores contratados.
Tom Anderson

48
@ Tom Eles provavelmente limitam mais as coisas funcionais do que as criam.
Maxpm

16
Tom: Não, eles não. Um resumo jurídico não é mais uma coisa funcional do que uma história ou poema. Uma lei é como uma planta: ela expõe uma idéia, mas então alguém precisa entrar no mundo da carne e aplicá-la. Mas código? Eu poderia escrever um programa para comprar ou vender ações com base em sua própria lógica interna, e isso funcionaria sem mais informações minhas. Eu poderia escrever um para governar as comportas, redirecionar a eletricidade, acender ou apagar as luzes, dependendo da hora do dia. É único entre as profissões.
Satanicpuppy

15
@Satanicpuppy: Não, você não poderia escrever um programa que faria qualquer uma dessas coisas. Um engenheiro eletrônico pode construir um computador que possa fazê-lo. Se você perguntou bem, talvez ele faça com que ela se espalhe pelo mundo da carne e imponha seus programas.
Tom Anderson

56

Uma pessoa de 15 anos pode entender qualquer conceito. Eu mesmo comecei a programar aos 14. (na escola, muitos anos atrás)

30 minutos são suficientes para uma demonstração. Mostre a ela a mágica da programação com algo tão difundido quanto um navegador.

  1. Encontre um PC conectado à Internet. (mais divertido se não for seu e ainda mais se for dela)
  2. Acesse http://api.jquery.com/jQuery.getJSON/
  3. Role a página e encontre o código HTML para o exemplo de gatos .
  4. Selecione o código HTML e copie-o.
  5. Vá para http://jsdo.it e clique em Iniciar codificação .
  6. Abra uma conta usando seu OpenID. (processo de uma etapa)
  7. Selecione a guia HTML no painel esquerdo e cole lá.
    • em um segundo, um monte de gatos aparecerá no painel direito
  8. Corte o javascript e cole-o na guia JavaScript . (para destaque da sintaxe)
    • em um segundo, os gatos são atualizados automaticamente no painel direito
  9. Procure a propriedade tags no javascript e altere-a para "dog".
    • um bando de cães aparece
  10. Faça-a repetir o processo sozinha com outras tags de sua escolha.
    • sugira que tente com duas tags, separadas por vírgula
  11. Altere a linha "if (i == 3)" para "if (i == 5)"; deixe-a perceber que
    • agora existem 6 imagens e antes eram 4
    • seria melhor se o número no código corresponder ao número na página
  12. Corrija o bug juntos (troque essa linha e a anterior)
  13. ...

1
Ou você pode usar jsFiddle, sem a necessidade de se inscrever: jsfiddle.net/WXVra
rjmunro


26

Passos

Com quase 15 anos, posso dizer com segurança que você deve ter um começo espetacular .

  1. Explique o que os programadores fazem. (Jogos, simuladores.) Mostre algo bacana que você fez. (No computador. Por favor, nenhuma linha de comando - isso parece assustar a todos.)
  2. Explique como você faz isso.

    • Diga a eles que você não digita o 10101010dia todo. Diga a eles que você nem sabe como fazer isso. ( Lie. Você não sabe o que 10101010significa, certo;?)) Diga-lhes que isso foi há anos.
    • Inicie o seu IDE. Certifique-se de que parece legal - MSVS2010, QtCreator e NetBeans são bons. Certifique-se de remover algumas coisas extras para parecer menos intimidador (menos menus), mas mantenha os efeitos visuais.
    • Mostre a eles uma amostra de algum pseudocódigo. Facilite a compreensão:

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

      Siga esse passo a passo. Diga a eles que isso não é exatamente como o código se parece. Código parece English + Math. Mas não é difícil aprender o "idioma" (leia-se: sintaxe) em que você fala.

    • Mostre a eles um exemplo com um pouco mais de "matemática", desta vez.

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

      Explique que esse código adiciona dois números, como uma calculadora. Mostre a eles o código "real" para isso. (Certifique-se de colocar a maior parte da interface do usuário e outras coisas em um arquivo separado e mantenha o arquivo que você mostra curto e simples.) Altere-o para um programa de subtração (alterando o sinal de +para -) bem diante dos olhos deles.

  3. Explique o que eles precisam saber para fazer a programação. (Em vários níveis.)

    • Habilidades básicas de álgebra, como se x + 1 = 2, então x = 1.
    • Habilidades para resolver problemas.
    • ["Avançado"] Matemática de nível superior. Isso é para programadores que trabalham em lugares como a NASA.

Termos que você pode usar

Sabemos mais do que você pensa.

  • Facebook, Twitter, Redes sociais
  • Windows, Mac, Linux
  • Projeto, Mais rápido, Teste, Iniciar / Executar

Termos que você deve explicar

Sim, ainda precisamos de algumas coisas explicadas.

  • Compilador: converte código (como exemplo na etapa 2) em 10101010.
  • Linguagem de programação: parece um exemplo na etapa 2.

Termos que você não pode usar

Alguns de nós sabem disso, mas por favor não o digam de qualquer maneira.

  • Qualquer tipo de "sistema" que não seja Sistema Operacional
  • Otimização, Análise (oh oh)
  • Entrada / Saída (se você precisar usar isso, tente simplificar o máximo possível)

Procurando por um IDE 'legal'? Não precisa procurar mais do que o Xcode.
Alan Zeino

2
@ Alan Zeino você quer dizer Emacs.
rightfold 13/09/11

Eu gosto mais desta resposta. Eu acho que alguém que adota essa abordagem conseguiria mais do que alguém trabalhando com as outras respostas (também de alta qualidade) para essa pergunta.
24512 TehShrike

17

Se você começar a falar sobre coisas como processo, padrões, requisitos e outros, ela será desligada imediatamente. As crianças de hoje são gráficas e visualmente motivadas, então eu traria algo para ajudar a promover esses tipos de estímulo. Mostre a ela algo bacana na web e, em um nível alto, descreva a ela o que faz isso acontecer. Eu até sugeriria levar seu laptop de desenvolvimento e fazer com que algo "legal" acontecesse na tela - altere o código na frente dela e observe-o mudar na tela. Nessa idade, eles são MUITO inteligentes e qualquer coisa visual ajudará a despertar interesse.


Ah, sim, o visual é uma ótima ideia. Correndo o risco de ser muito parecido com uma classe, é bem provável que desenhe diagramas no quadro branco para ilustrar tudo o que digo.
precisa

1
Falando sobre recursos visuais, que tal mostrar a ela um pequeno vídeo ou programa Alice?
Carlos Campderrós

9
@Carlos Com 15 anos de idade, posso atestar pessoalmente que odeio Alice com a paixão ardente de mil sóis. Provavelmente porque eu já sei programar. Não tenho certeza de como os iniciantes o veem.
Maxpm

1
+1 em "altere o código na frente dela e depois observe-o mudar na tela" - comece mostrando a ela uma conexão direta entre a coisa "real" e o código por trás dela. Algo moderadamente profundo, como a classificação ou consulta de alguns dados, não apenas aprimorando um pouco o JSP ou a formatação de string. Faça essa conexão e construa a partir dela.
Tom Anderson

1
A capacidade de mudar o olhar de um programa com apenas algumas linhas de código é o que me meteu programação há muitos anos - Obrigado pela sugestão
Dexter

13

Existem duas grandes analogias em que confio ao explicar o trabalho dos programadores. Um é uma receita; essa metáfora é útil para explicar em pequena escala o que cada linha de código está fazendo. O trabalho de um programador está escrevendo a receita, e o computador é o cozinheiro.

A outra analogia é que um grande programa é como uma grande empresa. Há um monte de departamentos diferentes que se concentram em diferentes áreas e enviam mensagens para frente e para trás, e o conjunto acaba cumprindo os objetivos da empresa. O trabalho de um programador está projetando como a organização é configurada e o computador é todo o pessoal da empresa.


8

Eu diria que seja geral. A programação e muitas outras profissões se resumem à solução de problemas. Mostre a ela como você resolve problemas diariamente. Você pode contar a ela sobre um projeto em que você está trabalhando e como isso ajudará seus clientes. Inclua também um pouco sobre por que você (presumivelmente) gosta do seu trabalho.

No meu caso, desenvolvi um site de tutoriais em vídeo educacional, onde outros membros da equipe publicam tutoriais. Eu explicaria sobre a motivação do projeto (ensinar outras pessoas remotamente sem ter que amarrar as pessoas), os problemas que enfrentei (não preciso necessariamente vê-los como problemas difíceis) e como os resolvi. Eu também falaria sobre por que gosto de programar: gosto de criar coisas e a contribuição da programação para o mundo moderno.


8

Dê a ela exemplos de software em que você trabalhou. Você tem um cliente que usa publicamente seu software? Você desenvolve um aplicativo interno que pode mostrar a ela? Mostre a ela o resultado final do seu trabalho, o que o usuário final vê e usa.

Depois, explique que você ajudou a escrevê-lo. Examine as partes que você escreveu. Mostre algum código, se puder. Descreva como essas linhas de código fazem parte do aplicativo funcionar.

Fale sobre o quanto você desfruta ao ver seu código sendo usado por pessoas.

Foi assim que expliquei para o meu primo de 14 anos. Ele ficou bastante impressionado e decidiu fazer uma aula de programação no próximo semestre.


5
Funciona bem se você trabalha com software que parece legal para não programadores. Muitos dos meus projetos recentes vivem em um banco de dados e "parecem" uma linha de comando (e até os que não estavam em um aplicativo da Web pareciam muito monótonos - mas, desde que os dados fossem processados, ninguém se importava). Para um não programador, é um prompt piscando que gera uma linha de texto a cada poucos minutos e depois para. Tão chato de olhar ... suspiro :(
FrustratedWithFormsDesigner

1
Tenha uma visão maior do "resultado final do seu trabalho". Isso não significa apenas o software em que você trabalhou; também pode significar os vários aplicativos clientes habilitados pelo software de back-end em que você trabalhou.
Jhocking

Pelo menos você não é um desenvolvedor do SharePoint como eu, @FrustratedWithFormsDesigner. Tenho certeza de que posso encontrar algo que pareça legal entre todos os meus colchetes angulares!
Dexter

4
@FrustratedWithFormsDesigner Fui no dia "vamos convencer as crianças da escola que vale a pena aplicar no CS" quando eu tinha 15 anos, junto com várias outras crianças brilhantes da minha escola. Material da linha de comando OLHADO FRESCO. Parecia super poderoso para nós, e isso o tornava COOOOOL. Não assuma que 15 anos de idade meninas não querem governar o universo :)
testerab

Certamente você programou algo divertido no seu tempo livre, o que poderia mostrar. Programei um jogo Tetris, um visualizador de fractal e um solucionador de sudoku. Qualquer um destes é divertido de mostrar.
Carra

7

Você está familiarizado com o jogo de tabuleiro Robo Rally?

Eu descobri que é a analogia divertida do prefeito para a programação. Você está basicamente programando seu robô usando comandos simples (principalmente setas) para chegar a um determinado ponto no tabuleiro de jogo antes dos outros.

Cara, eu gostaria de ainda ter meu BigTrak ...


4
Jogamos isso semi-regularmente em nossa noite de jogos (até 8 pessoas, a maioria são estudantes de matemática ou ciências da computação). É bom para mostrar como multithreading pode ir :-P errado
Paulo Ebermann

@Paulo - LOL Nunca pensei nisso dessa maneira, mas você está certo!
Sistema de Down

6

Mostre algo simples, mas útil. Um bom exemplo, acho que seria o seguinte:

  1. Coloque uma pasta cheia ou imagens (o suficiente para que nem todas caibam em uma tela no explorador de pastas)
  2. Diga a eles que seu objetivo é redimensionar as imagens (talvez você possa enviá-las por e-mail a amigos ou publicar online em algum lugar, qualquer que seja)
  3. Demonstre o redimensionamento de uma imagem no GIMP / Photoshop / qualquer que seja
  4. Agora, observe que isso levou pelo menos 30 segundos e você tem muitas imagens, não quer gastar uma hora fazendo isso
  5. Escreva um script de shell para redimensionar todos eles usando o ImageMagick
  6. Surpreenda-se com o fato de o redimensionamento de todas as imagens com seu programa simples de 3 linhas ser mais rápido do que o redimensionamento de uma única imagem no Photoshop

As razões pelas quais eu gosto dessa abordagem são:

  • Você não precisa dizer a eles por que a programação é útil, eles apenas viram por que
  • Você pode escrever o programa inteiro em alguns segundos enquanto eles estão assistindo (eu recomendo que tente com antecedência, pois as demonstrações sempre dão errado)
  • Você não está assumindo que eles são idiotas / precisam de algum tipo de exemplo "infantil" - este é um exemplo simples, mas tem usos no mundo real .

Você pode pensar em exemplos melhores, mas acho que o estilo é útil para uma "primeira introdução".


5

A maioria dos jovens de 15 anos "hoje em dia" tem muita experiência com computadores. Eu iria para uma abordagem mais prática. Eu mostraria a ela um pouco de código (não tente explicá-lo em detalhes, mas talvez cubra o extremo do "fluxo") e mostre a ela qual é o resultado. Até o HTML funcionará para esse tipo de exemplo. Então diga "Todos os dias, eu faço basicamente isso ... exceto com dezenas de milhares de linhas de código e um programa muito grande e complexo".

Em seguida, explique que tipo de problemas você resolve programando e por que gosta de fazê-lo. Por exemplo, eu diria que gosto de programar porque "adoro ver meu código ganhar vida no computador como um aplicativo"


4

Em primeiro lugar, você tem a concorrência que precisa desmascarar.

Filmes, cultura popular e até pessoas da área ( e essa questão ) tentam retratar a programação (e a maior parte do campo da ciência da computação) como algum tipo de mágica. Isso não é mágico.

Programar é simplesmente descrever tarefas e depois combiná-las para resolver um problema. Se você está tentando encontrar um paralelo, use matemática. Um computador é como um professor de matemática que exige que você mostre todo o seu trabalho .

Do ponto de vista físico, os computadores não são inteligentes - eles sabem apenas o que dizemos a eles. Portanto, quando um programador de computador deseja criar um programa que, por exemplo, reproduz músicas de um CD, "simplesmente" precisa informar ao computador como ler os dados armazenados no CD, como convertê-los em ondas sonoras e, finalmente, , como emitir essas ondas sonoras dos seus alto-falantes.

Levando essa idéia para o próximo nível, você pode continuar sobre como a programação cria tarefas umas sobre as outras. Assim como ele / ela teve que aprender aritmética antes de aprender álgebra em matemática, os computadores também precisam ser instruídos a "fazer o básico" antes que você possa dizer a eles como executar tarefas mais complexas. Ao longo dos anos, cientistas da computação e programadores foram capazes de "ensinar" computadores o suficiente sobre o básico, a ponto de podermos começar a "conversar" com eles muito mais perto de como conversamos.

Na vida real, seu professor de matemática pode dizer para você resolver "15 à potência de 3", mas você só sabe fazer isso porque foi ensinado anteriormente que "X à potência de Y" se divide nas tarefas de "Multiplique X por X e faça-o Y vezes" [tecnicamente Y -1 vezes, mas eh.]

Muito parecido com suas aulas de matemática, os programadores criaram uma base de tarefas 'conhecidos' por isso não precisa se concentrar sobre os detalhes das pequenas coisas e pode dedicar nosso tempo para resolver os problemas reais e não tanto como para executar o subjacente tarefas - agora podemos assumir que um computador entende como fazer coisas básicas.


3

Eu faria o que me deixava viciado aos 9 anos. Pegue o C64 no sótão e faça:

10 PRINT "YOU SMELL"

20 GOTO 10

(Obrigado pai).

Então, quando a diversão disso acabar. Eu mostraria a ela o jogo de adivinhação de números. Sim, tudo em BASIC. Não há necessidade de um idioma moderno mostrar um computador recebendo instruções.


2
Boa. Você acerta o prego na cabeça. Torne tudo muito simples e divertido. E o BASIC é perfeito para isso.
Mike Dunlavey

1
De acordo, o BASIC é ótimo e o GOTO é a melhor construção de idioma para começar. Meu primeiro programa foi muito parecido.
Tomas Andrle

Não vou dizer que sou totalmente contra isso, mas não aprendi sobre ir até depois de alguns anos de programação em C ++. Desde então, nunca digitei um único pulo na minha vida. Bom ou ruim, não vou julgar - só queria que soubesse que ir não é necessariamente ... uh ... necessário.
31Je384

3

Pode ser útil começar com algo que ela faz rotineiramente, como o Facebook, e explicar como um aspecto simples, como fazer login, pode ser muito complicado.

Você pode ramificar daqui para bancos de dados, design de aplicativos e, em seguida, alguns aspectos de segurança, algo útil que ela pode tirar.

Você pode até perguntar a ela algo como: "Se houvesse uma coisa no Facebook, você poderia mudar, o que seria?" Depois, ensine como você pode fazer a alteração e quantas pessoas estariam envolvidas.

Eu aprendi a programar Pascal pela primeira vez e fiquei impressionado que meu programa aceitasse minha entrada, mexesse nela e imprimisse algo diferente. Eu fui fisgado a partir daí. Algumas pessoas travam fácil.


Usando o Facebook é uma boa sugestão, graças @ client09
Dexter

2

Espero ter ido para um estágio em algum lugar que presumivelmente desenvolva software que ela deve ter algum interesse no campo?

Não há uma resposta definida, eu a questionaria por 5 a 10 minutos sobre o que ela sabe e, em seguida, tentaria desenvolver isso da melhor maneira possível.


@Chris, não tenho certeza - existem muitas funções diferentes em uma empresa de tecnologia, da contabilidade ao RH, ao desenvolvimento e consultoria. Estamos dando a ela uma breve amostra de vários papéis diferentes, então acho que não faria essa suposição
Dexter

Bem, para ser justo, você nunca afirmou por que tipo de empresa era. : p Seria seguro dizer que se alguém fosse para uma colocação em uma loja de violão, provavelmente estaria interessado em guitarras, em vez de ser um luthier de madeira.
Anônimo

2

Comece de alto nível. Talvez explique que a programação de computadores é sobre a solução de problemas: pegar um problema e criar uma solução que é escrita como um monte de instruções que uma máquina pode usar e entender.

A parte difícil pode ser a de exemplos que uma menina de 15 anos acharia interessante e relevante . Nunca tendo estado nessa situação e não a conhecendo, não sei o que recomendar para isso ... Evite exemplos de código até o final e exceto em casos muito simples ou interessantes, como o programa "Hello world" ou algo simples e gráfico (desenhe algumas formas em uma janela, rastreie um mouse, etc ...).


Eu não acho que eu poderia ensinar alguém sobre programação sem mostrando-lhes, pelo menos, algumas amostras do código que eu estou trabalhando em ..
Dexter

@ Dexter: Em 30 minutos, não tenho certeza se gostaria de me concentrar muito na aparência do código. Eu não quis mostrar nada, mas como você não tem muito tempo, não acho que o código deva ser o foco. Pode ficar muito seco e chato. Fale mais sobre idéias e conceitos, se puder. Se você puder encontrar um exemplo simples (talvez menos de 10 linhas) que seja fácil de entender e também interessante, vá em frente!
FrustratedWithFormsDesigner

concordou, mas acho que, em vez de seguir um exemplo simples do capítulo 1, prefiro mostrar um programa que desenvolvi e alternar algumas linhas de código para mostrar um resultado. vai ser capaz de lhe ensinar como programar, mas talvez eu possa inspirá-la a querer saber mais ..
Dexter

2

Aqui está minha opinião depois de algumas falhas e algumas boas tentativas:

Programar é resolver problemas.

Comece com coisas concretas que são programadas para serem usadas todos os dias - navegador de internet (facebook), telefone celular, caixa registradora, etc. Obtenha-os para dar muitos exemplos. Estabeleça que todas essas coisas tenham um tipo de computador. O coração de um computador é o processador.

O processador é como um trabalhador muito rápido, mas muito burro. Se você der algumas instruções, elas serão executadas exatamente como você diz. Não fará nada extra e não dirá se algo que você disse para fazer estava errado. No entanto, esse processador faz tudo - se você disser exatamente como fazê-lo, poderá fazer uma ligação ou colocar uma foto em um email.

Pergunte a ela como ela diria a um trabalhador muito rápido, mas muito burro, para comprar uma lata de refrigerante em uma máquina de refrigerante. Quando ela começa a descrever as etapas ("Coloque o dinheiro na máquina e pressione o botão."), Comece a dissecá-lo como um programa ("O que é dinheiro? Como o coloco na máquina? Quando coloco o dinheiro na máquina e pressione o botão ao mesmo tempo, nada acontece. "). Se você possui um quadro branco, inicie à esquerda com o primeiro conjunto de instruções. Enquanto ela os revisa, coloque a nova lista maior no lado direito. Quando você tiver um bom conjunto de instruções, comece a generalizar as peças ("Remova o dinheiro do bolso e remova o refrigerante da bandeja com um som semelhante - que partes são iguais / diferentes?") Pegue as generalizações e coloque-as no meio e riscam as peças que agora englobam. Tente, eventualmente, amarrar as peças para combinar com as instruções originais, como chamadas de função. Outros bons exercícios: envie uma carta, passe por uma porta, desenhe um círculo / quadrado / triângulo.

Portanto, programar é resolver problemas: dividir problemas em partes, identificar partes comuns e agrupar essas partes novamente para resolver problemas. Logo, você descobre que algumas partes são comuns em muitos problemas e começa a juntar as peças para resolver problemas que nem sabia que tinha.

Ok, a essa altura ela pode entender, mas provavelmente está entediada. Siga-o com um conjunto de exemplos interessantes de programação. Os shaders e o código visual relacionado são fáceis de demonstrar - você pode exibir uma imagem e começar a fazer alterações com alterações muito pequenas no código. Se ela manifestou interesse no Facebook, mostre conversas com o Facebook pelo REST para ver dados de amigos de amigos (6 graus dela). Se ela gosta de videogame, mostre algumas demos de jogos de código aberto, juntamente com alguns trechos de código e como eles ajudam o jogo a funcionar. Finalize mostrando algumas ferramentas e recursos gratuitos que ela poderia investigar em casa. (Python, C # etc.)

Minhas tentativas fracassadas: tentando explicar o cálculo do pi (eles estavam perguntando), o jogo de tabuleiro C-Jump http://c-jump.com/ (eles não entenderam e as instruções eram de buggy) e codificação ao vivo em 2D game (simplesmente não conseguia despertar o interesse, não importando quão pequenos passos eu estava dando entre as demos).

Boa sorte!


2

Faça um programa simples. Não, não "Olá, mundo!"

O que eu faria é dizer que existem muitos tipos de linguagens de programação - que fazem jogos, que controlam robôs -, mas o que você vai trabalhar é o HTML.

Faça uma página da Web sem nada e adicione um formulário que enviará um email para o endereço de email dela. Ela provavelmente possui um telefone celular capaz de notificar o proprietário de que ele tem um novo e-mail, para que você possa dizer a ela que é uma ótima maneira de seus amigos e familiares entrarem em contato com ela. Se ela obtiver seu próprio site no futuro, você poderá dizer a ela que ele pode colocar o formulário em seu site, permitindo que seus clientes e parceiros de negócios entrem em contato com ela.

Como alternativa, se ela é um pouco travessa, vou lhe dizer o que me interessou em programar: hackers. Naquela época, eu fiz o melhor programa já feito para mexer com a AOL (fora de um programa que superou o meu em apenas uma das dezenas de coisas que o meu fez) - com 14 a 15 anos. No lado do chapéu branco, também criei um dos primeiros programas de remoção de spam (1995). Consegui tornar minha experiência on-line muito mais agradável e deixaremos assim. Tudo o que eu queria fazer no computador era uma aventura ou quebra-cabeça que eu precisava descobrir, e as coisas que eu queria fazer no computador eram infinitas. Certamente, fazê-lo funcionar às vezes era uma dor de cabeça, mas escrever um programa que realizava as coisas melhor e mais rápido do que qualquer humano poderia, ou fazer coisas que eram simplesmente impossíveis para o público em geral, era como construir uma boa peça de máquina da qual se pudesse orgulhar. Agora, você provavelmente evita qualquer coisa séria, mas seria extremamente fácil criar algo no Visual Basic que pudesse ser iniciado na inicialização (sentado na lateral da tela ou na bandeja do sistema) e, a partir daí, você poderia fazê-lo lançar seus sites favoritos, seus programas favoritos etc. Você poderia apresentá-la aos comandos necessários para iniciar um exe e um site, e depois pedir a ela para fazer alguns botões e adicionar o código a esses botões , colocando seus sites favoritos (facebook, twitter etc.) e programas (iTunes, processador de texto etc.) Se o computador dela estiver no quarto dela, você também poderá acionar um despertador para aumentar a funcionalidade. Claro, 30 minutos é muito curto para orientá-la sobre isso, então você já deve ter feito. No final, você envia um e-mail com um pequeno manual de 2-3 páginas, o código e o .exe para ela ... e depois a deixa com um pequeno discurso de vendas: não é fácil no começo, mas depois de obter o o jeito, não é tão ruim, será extremamente útil na vida e ajudará a desenvolver seu pensamento analítico.


2

Eu costumava ensinar estudantes universitários de 18 anos, e suponho que os de 15 anos sejam iguais. Não espere sucesso sem prática. Levei algumas semanas na minha primeira aula para ser "arrombado".

A maior coisa que tive que aprender foi que o que eu pensava ser tão simples e óbvio que eu tinha medo de não conseguir preencher o tempo não era assim para os alunos. Eu aprendi que você tem que dar passos de bebê - caso contrário, é apenas mágica "gee whiz".

Como você se encaixa nisso em 30 minutos, não tenho certeza, mas a primeira coisa que fiz foi mostrar a eles um pequeno computador caseiro que eu construí, que foi programado para tocar uma pequena música clicando e entrando e saindo de um alto-falante. Expliquei que ele podia tocar uma nota diminuindo um contador, para agir como um atraso, entre cliques. Acabei de escrever o pseudo-código no quadro, como uma receita. Então, havia um pequeno capacitor que eu poderia prender sob um fio que faria a coisa toda funcionar cerca de 1000 vezes mais devagar. Então eles ouviram clique - espere - clique - espere ... Então, quando eu soltei o capacitor, ele explodiu com a pequena melodia.

O objetivo disso era entender que os computadores fazem apenas coisas simples e uma por vez. Eles não iniciam cada etapa até que a etapa anterior seja concluída. (Sim, sim, eu sei - canalização e tudo isso, mas estamos conversando com novatos .) É apenas a velocidade eletrônica que os faz parecer fazer tudo de uma só vez, que é o que os novatos tendem a assumir (junto com a leitura da mente) . Esse é um dos conceitos realmente básicos sem os quais você não pode começar a entender programação e computadores. Para nós, isso é tão complexo que nem percebemos que sabemos, mas os iniciantes não sabem.


1

Eu sei que não é linguagem de programação, mas acho que HTML é um bom lugar para começar. Porque você obtém resultados imediatos .... comece com

Olá Mundo

Então faça:

Olá <b> Mundo </b>

Etc.


1

Se fosse eu, diria a ela que programar é dividir uma tarefa em pequenas tarefas de uma maneira que o ajude a resolvê-las; e depois expressar essas pequenas tarefas em um idioma que não pode ser mal interpretado por um computador idiota. Mas você também precisa fazê-lo de tal maneira que outros programadores também possam entendê-lo facilmente - e isso não é a mesma coisa.

Ou seja, além do que todo mundo já disse ...


1

Essa é mais uma das minhas experiências pessoais do que uma "resposta" direta.

Por que me interessei? Meus pais compraram um IBM PC XT em 1984 (eu nasci em 1984). Ele tem 640kb de RAM e 20MB de HDD e um FDD de 5 "e executou o MS-DOS v3.2. Não era permitido tocá-lo até que eu estivesse no quinto padrão e, quando finalmente tive permissão para usá-lo, servi todos os meus anos de curiosidade acumulada nele.

Minha irmã, por outro lado, recebeu o mesmo PC e um Macintosh Quadra 610 sempre que quisesse e prestou tanta atenção a ela quanto na mesa em que estava.

Ensinando minha irmã ... Tentei ensinar programação de computadores a minha irmã no BASIC. Eu fiz tudo desde o início do computador até a digitação e execução do programa. Foi como programa de linha.

10 PRINT "CAT"
20 END

Isso levou meia hora. Quando ela finalmente o executou, imprimiu a palavra 'CAT' e ela ficou furiosa. Ela esperava que a foto de um gato aparecesse. Ela saiu da sala e esse foi o fim da programação para sempre!

Moral: é melhor que o resultado seja proporcional ao tempo e aos esforços que eles investem.

Ensinando as crianças do ensino médio Labview e Lego NXT Fui mentor da FIRST Robotics por um ano e tive que orientar as crianças na programação do robô no NI Labview. Francamente, a habilidade de programação necessária estava muito acima do nível de um garoto do ensino médio. Mas a competição tinha como objetivo deixar as crianças empolgadas com a engenharia e elevar a fasquia na capacidade de assumir um desafio. Desde que os programas tivessem apenas uma declaração if e um loop, tudo estava bem. As pessoas abandonaram a seção de programação do robô quando viram o diagrama de código que eu criei para o robô que construímos no ano anterior.

Por mais que as pessoas afirmem que as crianças de 15 anos podem fazer coisas complexas e ter atenção por horas, eu encontrei uma estranha falta de motivação nelas. Eles queriam fazer coisas fáceis que não sobrecarregavam seus cérebros. Eles preferiam o CAD e as peças fresadas na máquina do que os programas de gravação.


1

O que é CS?

Acho que antes de você fazer demos, isso ajuda a dar uma breve opinião sobre o lugar da CS no mundo. Gostei da descrição de CS de Hal Abelson em relação à matemática: enquanto a matemática o ajuda a descrever o mundo em termos de leis, o CS o ajuda a descrever como fazer as coisas. Seu exemplo foi a função de raiz quadrada: a matemática a definirá, mas não o ajudará a encontrá-la para nenhuma entrada. CS vai. Em um nível inferior, a engenharia elétrica e a física lançaram as bases para o hardware que permitia a Internet, mas deixaram em aberto as questões de como levar as pessoas a usá-lo.

Como é ser um programador?

Depois, há a questão de como é ser um programador. O que me chamou a atenção foi que ele tem uma recuperação mais rápida de tentar algo, testar, consertar, do que qualquer outro campo técnico. É uma solução sem problemas, enquanto em outros campos o tempo de resposta de um único loop pode ser de meses. Também é útil para quase todos os outros campos técnicos, o que é mais do que pode ser dito para ... a maioria dos outros campos técnicos. Portanto, se você ainda não sabe o que deseja fazer (provavelmente), é uma boa coisa começar cedo. Na faculdade, poucas coisas o tornarão mais útil para mais professores do que ser capaz de codificar seus experimentos.

Colírio para os olhos, vinculado ao código

Então, é claro, não esqueça as demos. Pode ser legal obter uma cópia do terremoto (código aberto) e fazer algumas alterações em uma linha (por exemplo, alterar a força da gravidade) e recompilar, por exemplo. Também dê uma olhada no código. Tranquilize-a de que ela não deve esperar entender muito, pode parecer bobagem agora, mas, novamente, o mesmo acontece com jornais em idiomas estrangeiros que ela ainda não aprendeu. Você pode dizer que, no entanto, ela pode ver que as coisas estão sendo atribuídas, objetos estão sendo instruídos sobre o que fazer, e é aqui que definimos a gravidade, etc.


1

Comecei a programar aos 14 anos. Embora a maioria (47 dos 50 alunos matriculados) tenha desistido no meio do ano ou tenha decidido não continuar no curso avançado no próximo ano, continuei com ele e aprendi algo muito importante:

A programação oferece a capacidade de criar algo do nada. Você tem o poder de transformar as palavras em uma ferramenta útil que preenche uma necessidade, uma atividade divertida para você e seus amigos, ou apenas algo que você pode mostrar a seus amigos e dizer: "Veja o que eu fiz".

Nós fomos ensinados "Olá Mundo", para começar, mas eu não tinha interesse até poder fazer meu código interagir com o usuário . No momento em que fomos ensinados a ler as entradas com "cin", propus-me a criar um programa Mad-Lib que pudéssemos tocar em sala de aula. Meu primeiro obstáculo foi ler entradas contendo espaços, seguidas pela formatação da saída. Mais tarde, eu queria poder salvar essas histórias em um arquivo e, portanto, precisava aprender as E / S de arquivos. Enfrentar obstáculos para alcançar meus próprios objetivos foi o que me manteve engajado.

Mais tarde, descobrimos que os administradores de rede estavam registrando nosso uso do "Net send" e do cliente Novell SendMessage que estávamos usando para se comunicar durante a aula de informática, e eles o desativaram depois que os alunos o usaram para trapacear em um teste. Então , escrevi uma sala de bate-papo para substituir a que os administradores desativaram. Foi a primeira coisa verdadeiramente útil que eu criei. Eu o modelei após o sistema de bate-papo da Battle.Net, completo com registro de usuários, moderadores e até mesmo um sistema básico de criptografia e arquivos de sombra para impedir que os usuários violem (todos os arquivos tinham que residir em uma unidade de rede compartilhada para que os alunos pudessem acessar e usar o programa). Esses não eram conceitos que eu já conhecia, mas as soluções que eu criei por conta própria para resolver um problema. Para mim, essa foi a alegria da programação.

Portanto, para responder à pergunta corretamente, além da discussão sobre o que significa desenvolver software, uma demonstração interativa é provavelmente uma ótima idéia. De preferência, algo que resolva um problema que ela tem, como redimensionar todas as fotos gigantes da câmera automaticamente. Embora um pouco mais complicada, ela pode se divertir com uma simples página da web que você pode compartilhar com seus amigos. Você pode mandar um e-mail para alguém sempre que uma nova mensagem for publicada e ela editar o código para enviá-lo para o e-mail dela em vez do seu. Além disso, faça com que a página mostre o último número X de comentários e faça com que ela ajuste esse número também, e veja quais são os resultados.


1

Onde eu costumava trabalhar, às vezes tínhamos crianças com experiência profissional entrando. Algumas estavam interessadas em computadores, outras não. Costumávamos fazê-los sentar na frente de um computador e fazê-los escrever um jogo de adivinhação. (O computador seleciona aleatoriamente um número, o usuário obtém feedback se o seu palpite foi alto / baixo demais.) É simples de fazer e é realmente um resultado divertido. Nada é mais poderoso do que mostrar tangivelmente o que ELES podem criar.


1

Quando você deseja obter - e manter - a atenção de alguém, PERGUNTE, NÃO DIGA. Pergunte como eles executariam uma tarefa simples, como beber água. Depois, mostre a eles como seguir as instruções que eles forneceram (como "Desça o corredor") não resolve os problemas de quando virar à esquerda, virar à direita, parar etc. Entender e lidar com essas condições de contorno, esse é o negócio de programação! Em seguida, você pode mostrar como um loop do tipo "faça até" pode lidar com o tipo de situação "ande até chegar à parede", para fazer meta-tarefas com a tarefa de um pé na frente da outra de andar.


1

Não tenho certeza se isso é uma lenda ou uma história verdadeira, mas eu estava lendo sobre o motivo da sorte um dia. Parte de uma história foi como ele mostrou a programação para uma criança (ou talvez até crianças) que conheceu em um trem.
Como alguns de vocês devem saber, _por que era um cara Ruby (e Ruby é, bem, sendo bastante amigável com humanos comuns). Ele estava trabalhando em algum jogo em Ruby, enquanto um garoto se aproximava dele para ver o que ele estava fazendo. Ele mostrou o resultado primeiro - o jogo de trabalho. Em seguida, ele mostrou ao garoto como ele pode modificar as coisas no código para alterar o resultado. Então ele deixou o garoto brincar com o código e ver o resultado modificado.
Eu acho que esse deve ser o seu fluxo de trabalho geral - resultar, modificar, jogar. Você deve encontrar algum projeto (o jogo seria a melhor escolha) em linguagem humana e mostrá-lo à criança.

Como estou triste, não tenho ideia se essa história é verdadeira ou não. Ainda é muito legal.

Além disso, mais uma coisa. Lembro-me da minha primeira experiência com programação - MessageBoxem Delphi. Foi legal, porque eu podia fazer o computador fazer o que eu queria e ver imediatamente o resultado.
Então, os microcontroladores apareceram. Eles foram ainda melhores, porque meu código poderia mudar o mundo real. Quero dizer, atribuir algum valor à variável deixou de ser tão abstrato, pois fazia aparecer uma voltagem na porta de saída, o que fazia meu motor se mover. Isso foi legal. Você pode escolher esse caminho - mostre ao garoto algo como o Arduino.

Veja bem, acho que é tudo uma questão de mudar e ver o resultado.


0

Mostre a ela o resultado final de algumas das coisas que você fez. Fale em geral sobre seu papel nos projetos. Talvez até a ajude a dar um olá mundo se ela parecer interessada.


0

Minha analogia favorita para programação é bruxaria (estilo harry potter), como Satanicpuppy. Eu uso isso para colegas não técnicos e crianças, parece que funciona muito bem e transmite definitivamente o poder que os computadores nos dão.

Os computadores são nossas varinhas mágicas. Eles nos permitem realizar magia com o movimento direito do pulso e encantamentos. Como programadores, temos acesso a livros de ortografia (bibliotecas) trabalhados e refinados por nossos antecessores. Podemos criar novos feitiços e encantamentos ou trabalhar com os existentes. Alguns são fáceis, outros exigem mais prática para realmente usá-lo efetivamente, geralmente existem trocas e muitas maneiras diferentes de resolver o mesmo problema (devo usar uma boa poção ou um encantamento?).

Essa metáfora estendida pode realmente ser bem esticada e muitas vezes me permite transmitir minha paixão pela programação de uma maneira que seja acessível a pessoas fora do campo.


0

A melhor maneira de entender as crianças é ser uma criança primeiro ..! Quando criança, eu odiava fazer trabalhos de casa, imposições etc.! então existem pontos de entrada onde você pode chamar a atenção deles. Em um intervalo de 30 minutos, embora não possamos explicar tudo, podemos tentar dar a eles um tipo de exposição em que crianças interessadas acham isso uma inspiração. Comece com tópicos relacionados, como trabalhos de casa, etc. Diga-lhes como um computador pode escrever imposição em apenas alguns segundos, etc.

Desejo a todos o melhor.. ! bom trabalho

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.