J'ai été volontaire pour m'asseoir et parler de la vie et du travail d'un développeur avec un étudiant d'expérience de travail de 15 ans la semaine prochaine.
Les captures sont que
Que dois-je couvrir et que diable puis-je espérer lui apprendre en seulement une demi-heure?
Je suppose qu'elle n'a probablement aucune expérience en développement ou en programmation.
J'interagis beaucoup avec les lycéens, donc je réponds assez souvent à cette question. Gardez à l'esprit que les jeunes de 15 ans sont beaucoup plus faciles à expliquer la programmation qu'à 50 ans - vous n'avez donc pas besoin de bêtises ou d'utiliser des analogies farfelues.
Je commence généralement par des exemples de programmes:
Après cela, j'explique généralement que nous codons des programmes dans un langage formel que l'ordinateur peut reconnaître, souvent en les tapant dans quelque chose d'aussi simple que le Bloc-notes. Les langues ressemblent à un croisement entre les mathématiques et l'anglais, décrivant des concepts et donnant des formules et des instructions à suivre par l'ordinateur.
Ensuite, ils demandent généralement si je suis sur l'ordinateur tout le temps, si c'est pourquoi je suis toujours sur Facebook, et pourquoi mes yeux ne se sont pas encore détériorés. Les gars me demandent si je sais comment "pirater les gens", et les filles demandent si c'est beaucoup d'argent ou combien de filles il y a dans les cours d'informatique.
Après cela, s'ils sont toujours intéressés, ils commencent généralement à poser des questions spécifiques auxquelles il est beaucoup plus facile de répondre (ou du moins à Wiki): des choses comme la façon dont vous feriez un jeu, le fonctionnement de Windows Messenger, etc.
Si vous avez un ordinateur, vous pouvez montrer et dire du code - quelque chose qui aurait des effets tangibles, comme un gestionnaire de clic de bouton dans la boîte de dialogue des paramètres de Firefox, la boucle principale ou le code physique dans un moteur de jeu, certains Source JavaScript à partir d'un site Web, etc.
Je l'ai expliqué à mon enfant de cinq ans avec ce qui suit:
Moi: "Tu sais comment, dans les histoires, les gens disent des mots magiques et changent les choses dans le monde?"
Elle: "Ouaaa?"
Moi: "C'est ça la programmation informatique."
Elle (doucement): "Wow."
15 à 30 minutes ne suffisent pas à expliquer quoi que ce soit de réel, et expliquer la complexité sous-jacente est un moyen sûr de les faire crier. Vous y travaillez tous les jours, vous oubliez à quel point c'est cool. Aucune autre profession au monde ne crée des choses fonctionnelles à partir de rien d'autre que des mots ... À un moment donné, tout le monde doit aller dans le monde de la viande et commencer à battre les choses avec un marteau. C'est la seule façon pour eux de faire de leur idée une réalité.
Pas nous.
Une personne de 15 ans peut comprendre n'importe quel concept. J'ai moi-même commencé à programmer à 14 ans (à l'école, il y a de nombreuses années)
30 minutes suffisent pour une démo. Montrez-lui la magie de la programmation avec quelque chose d'aussi répandu qu'un navigateur.
En tant que jeune de presque 15 ans, je peux vous dire avec confiance que vous devriez avoir un début spectaculaire .
Expliquez comment vous le faites.
10101010
toute la journée. Dites-leur que vous ne savez même pas comment faire cela. (Lie. Vous savez-vous ce que 10101010
signifie, non? ;)) Dites-leur que c'était il y a des années.Montrez-leur un échantillon d'un pseudocode. Rendez-le facile à comprendre:
Display Window
Display "I like cheese!"
Display OK button
If user clicks OK button, close Window
Passez par cette étape par étape. Dites-leur que ce n'est pas exactement à quoi ressemble le code. Le code ressemble à English + Math
. Mais il n'est pas difficile d'apprendre la "langue" (lire: syntaxe) dans laquelle vous parlez.
Montrez-leur un exemple avec un peu plus de "mathématiques", cette fois.
User inputs A
User inputs B
C = A + B
Display C
Expliquez que ce code ajoute deux nombres ensemble, comme une calculatrice. Montrez-leur le "vrai" code pour cela. (Assurez-vous de mettre la majeure partie de l'interface utilisateur et d'autres éléments dans un fichier séparé et de conserver le fichier que vous leur montrez court et simple.) Modifiez-le en un programme de soustraction (en changeant le signe de +
à -
) juste devant leurs yeux.
Expliquez ce qu'ils doivent savoir pour faire de la programmation. (À différents niveaux.)
x + 1 = 2
, puis x = 1
.Nous en savons plus que vous ne le pensez.
Oui, nous avons encore besoin d'explications.
10101010
.Certains d'entre nous connaissent ce genre de choses, mais ne le dites pas de toute façon.
Si vous commencez à parler de choses comme le processus, les schémas, les exigences, etc., elle va s'arrêter immédiatement. Les enfants d'aujourd'hui sont graphiques et visuellement motivés, donc j'apporterais quelque chose pour aider à promouvoir ces types de stimulus. Montrez-lui quelque chose de stylé sur le Web, puis décrivez-lui ce qui fait que cela se produit. Je suggérerais même de prendre votre ordinateur portable de développement et de faire en sorte que quelque chose de "cool" se produise à l'écran - changez le code devant elle, puis regardez-le changer à l'écran. À cet âge, ils sont TRÈS intelligents et tout ce qui est visuel aidera spark.
Il y a deux grandes analogies sur lesquelles je m'appuie pour expliquer le travail des programmeurs. L'une est une recette; cette métaphore est utile pour expliquer à petite échelle ce que fait chaque ligne de code. Le travail d'un programmeur écrit la recette et l'ordinateur est le cuisinier.
L'autre analogie est qu'un grand programme est comme une grande entreprise. Il y a tout un tas de départements différents qui se concentrent sur différents domaines et envoient des messages dans les deux sens, et l'ensemble finit par atteindre les objectifs de l'entreprise. Le travail d'un programmeur consiste à concevoir la façon dont l'organisation est configurée, et l'ordinateur est tout le personnel de l'entreprise.
Je dirais qu'il faut rester général. La programmation et de nombreuses autres professions se résument à la résolution de problèmes. Montrez-lui comment vous résolvez des problèmes au quotidien. Vous pourriez lui parler d'un projet sur lequel vous avez travaillé et de la façon dont il va aider vos clients. Incluez également un peu pourquoi vous aimez (vraisemblablement) votre travail.
Dans mon cas, j'ai développé un site Web de didacticiels vidéo éducatifs où d'autres membres du personnel publient des didacticiels. J'expliquais la motivation du projet (enseigner aux autres à distance sans avoir à attacher les gens), les problèmes que j'ai rencontrés (je n'ai pas nécessairement à les considérer comme des problèmes difficiles) et comment je les ai résolus. Je dirais également pourquoi j'aime la programmation en premier lieu: j'aime créer des choses et la contribution de la programmation au monde moderne.
Donnez-lui des exemples de logiciels sur lesquels vous avez travaillé. Vous avez un client qui utilise publiquement votre logiciel? Développez-vous une application interne que vous pourriez lui montrer? Montrez-lui le résultat final de votre travail, ce que l'utilisateur final voit et utilise.
Ensuite, expliquez que vous avez aidé à l'écrire. Passez en revue les parties que vous avez écrites. Montrez du code si vous le pouvez. Décrivez comment ces lignes de code font fonctionner une partie de l'application.
Parlez du plaisir que vous ressentez à voir votre code utilisé par les gens.
C'est comme ça que je l'ai expliqué à mon cousin de 14 ans de toute façon. Il était assez impressionné et a décidé de suivre un cours de programmation au prochain trimestre.
Connaissez-vous le jeu de société Robo Rally?
J'ai trouvé que c'est l'analogie amusante du préfet pour la programmation. Vous programmez essentiellement votre robot à l'aide de commandes simples (flèches principalement) pour atteindre un certain endroit du plateau de jeu avant les autres.
Mec j'aimerais avoir encore mon BigTrak ...
Montrez quelque chose de simple, mais d'utile. Je pense qu'un bon exemple serait le suivant:
Les raisons pour lesquelles j'aime cette approche sont:
Vous pourrez peut-être penser à de meilleurs exemples, mais je pense que le style est utile pour une "première intro".
La plupart des jeunes de 15 ans "de nos jours" ont beaucoup d'expérience avec les ordinateurs. J'irais pour une approche plus pratique. Je lui montrerais un peu de code (n'essayez pas de l'expliquer en détail, mais peut-être couvrir les bases extrêmes du "flux") et lui montrer quel est le résultat. Même HTML fonctionnera pour ce genre d'exemple. Dites ensuite "Tous les jours, je fais essentiellement cela ... sauf avec des dizaines de milliers de lignes de code et un programme très vaste et complexe".
Expliquez ensuite le type de problèmes que vous résolvez en programmant et pourquoi vous aimez le faire. Par exemple, je dirais que j'aime la programmation parce que "j'aime voir mon code prendre vie sur l'ordinateur comme une application"
Premièrement, vous avez de la concurrence que vous devez démystifier.
Les films, la culture populaire et même les gens du domaine ( et cette question d'ailleurs ) tentent de décrire la programmation (et l'essentiel du domaine informatique) ) comme une sorte de magie. Ce n'est pas magique.
La programmation consiste simplement à décrire des tâches, puis à combiner ces tâches pour résoudre un problème. Si vous essayez de trouver un parallèle, utilisez les mathématiques. Un ordinateur est comme un professeur de mathématiques qui vous oblige à montrer tout votre travail .
D'un point de vue physique, les ordinateurs ne sont pas intelligents - ils savent seulement autant que nous leur disons. Ainsi, lorsqu'un programmeur informatique veut créer un programme qui, par exemple, lit de la musique sur un CD, il doit simplement dire à l'ordinateur comment lire les données stockées sur le CD, puis comment convertir ces données en ondes sonores et enfin , comment reproduire ces ondes sonores à partir de vos haut-parleurs.
Prenant cette idée au niveau suivant, vous pouvez continuer sur la façon dont la programmation construit les tâches les unes sur les autres. Tout comme il/elle a dû apprendre l'arithmétique avant de pouvoir apprendre l'algèbre en mathématiques, les ordinateurs doivent également savoir comment `` faire les bases '' avant de pouvoir leur dire comment effectuer des tâches plus complexes. Au fil des ans, les informaticiens et les programmeurs ont pu "enseigner" aux ordinateurs suffisamment de bases au point où nous pouvons commencer à "leur parler" beaucoup plus près de la façon dont nous nous parlons.
Dans la vraie vie, votre professeur de mathématiques peut vous dire de résoudre "15 à la puissance de 3", mais vous ne savez comment le faire que parce qu'on vous avait précédemment appris que "X à la puissance de Y" se décompose en tâches de "Multipliez [~ # ~] x [~ # ~] par [~ # ~] x [~ # ~] , et faites-le [~ # ~] y [~ # ~] fois "[techniquement [~ # ~] y [~ # ~] - 1 fois, mais hein.]
Tout comme vos cours de mathématiques, les programmeurs ont établi une base de tâches `` connues '', nous n'avons donc pas besoin de nous concentrer sur les détails des petites choses et pouvons consacrer notre temps à résoudre les problèmes réels et pas tant comment effectuer les tâches sous-jacentes - nous pouvons maintenant supposer qu'un ordinateur comprend comment faire les choses de base.
Je ferais ce qui m'a accroché vers 9 ans. Sortez le C64 du grenier et faites:
10 PRINT "YOU SMELL"
20 GOTO 10
(Merçi papa).
Ensuite, lorsque le plaisir est terminé. Je lui montrerais le jeu des devinettes. Oui, tout en BASIC. Il n'y a pas besoin de mourir d'un langage moderne pour montrer à un ordinateur de prendre des instructions.
Il pourrait être utile de commencer par quelque chose qu'elle fait régulièrement, comme Facebook, et de lui expliquer comment un aspect simple comme la connexion peut être très compliqué.
Vous pouvez vous connecter à partir d'ici aux bases de données, à la conception d'applications, puis à certains aspects de la sécurité, ce qui est utile pour elle.
Vous pouvez même lui demander quelque chose comme: "S'il y avait une chose à propos de Facebook que vous pouviez changer, quelle serait-elle?" Ensuite, expliquez-lui comment vous pourriez effectuer le changement et combien de personnes seraient impliquées.
J'ai d'abord appris à programmer Pascal et j'ai été tout pompé que mon programme ait accepté ma contribution, ait joué avec elle et imprimé quelque chose de différent. J'étais accro à partir de là. Certaines personnes se verrouillent facilement.
Voici mon point de vue après quelques échecs et quelques bonnes tentatives:
La programmation est la résolution de problèmes.
Commencez avec des choses concrètes et programmées qu'ils utilisent tous les jours - navigateur Internet (facebook), téléphone portable, caisse enregistreuse, etc. Demandez-leur de vous donner de nombreux exemples. Établissez que toutes ces choses contiennent une sorte d'ordinateur. Le cœur d'un ordinateur est le processeur.
Le processeur est comme un travailleur très rapide mais très stupide. Si vous lui donnez des instructions, il les fera exactement comme vous le dites. Il ne fera rien de plus et ne vous dira pas si quelque chose que vous lui avez dit de faire était mal. Ce processeur fait tout, cependant - si vous lui dites exactement comment le faire, il peut passer un appel téléphonique ou mettre une photo dans un e-mail.
Demandez-lui comment elle dirait à un travailleur très rapide mais très stupide d'acheter une canette de soda à une machine à soda. Alors qu'elle commence à décrire les étapes ("Mettez de l'argent dans la machine et appuyez sur le bouton.") Commencez à le disséquer comme un programme ("Qu'est-ce que l'argent? Comment puis-je le mettre dans la machine? Quand je mets de l'argent dans la machine et appuyez sur le bouton en même temps, rien ne se passe. "). Si vous avez un tableau blanc, commencez à gauche avec son premier ensemble d'instructions. Pendant qu'elle les révise, placez la nouvelle liste plus grande sur le côté droit. Lorsque vous avez un bon ensemble d'instructions, commencez à généraliser les pièces ("Retirez l'argent de votre poche et retirez le soda du plateau, son similaire - quelles parties sont les mêmes/différentes?") Prenez les généralisations et placez-les au milieu et rayer les morceaux qu'ils englobent maintenant. Essayez éventuellement de lier les pièces pour qu'elles correspondent à ses instructions d'origine, un peu comme des appels de fonction. Autres bons exercices: envoyez une lettre, passez une porte, dessinez un cercle/carré/triangle.
La programmation est donc la résolution de problèmes: décomposer les problèmes en parties, identifier les parties communes et les regrouper pour résoudre les problèmes. Bientôt, vous découvrez que certaines pièces sont communes à de nombreux problèmes, puis vous commencez à assembler des pièces pour résoudre des problèmes que vous ne saviez même pas que vous aviez.
D'accord, à ce stade, elle peut comprendre, mais elle s'ennuie probablement. Suivez-le avec un ensemble d'exemples de programmation sympas. Les shaders et le code visuel associé sont faciles à démontrer - vous pouvez mettre une image et commencer à y apporter des modifications avec de très petits changements de code. Si elle a manifesté son intérêt pour Facebook, montrez-lui de parler à Facebook via REST pour voir les données d'amis de ses amis (6 degrés)). Si elle aime les jeux vidéo, montrez quelques jeux open source des démos ainsi que quelques extraits de leur code et comment ils aident le jeu. Terminez-le en montrant quelques outils et ressources gratuits qu'elle pourrait étudier à la maison. (Python, C #, etc.)
Mes tentatives infructueuses: essayer d'expliquer le calcul de pi (ils demandaient), le jeu de société C-Jump http://c-jump.com/ (ils ne l'ont pas compris et les instructions étaient boguées) ), et le codage en direct d'un jeu 2d (ne pouvait tout simplement pas retenir l'intérêt, peu importe le nombre de pas que je faisais entre les démos).
Bonne chance!
Faites un programme simple. Non, pas "Hello World!"
Ce que je ferais, c'est de dire qu'il existe de nombreux types de langages de programmation - ceux qui font des jeux, ceux qui contrôlent les robots - mais ce avec quoi vous allez travailler est le HTML.
Créez une page Web sans rien, puis ajoutez un formulaire qui enverra un e-mail à son adresse e-mail. Elle a probablement un téléphone portable qui est capable d'avertir le propriétaire qu'il a un nouveau courriel, vous pouvez donc lui dire que c'est un excellent moyen pour ses amis et sa famille de la contacter. Si elle obtient son propre site Web à l'avenir, vous pouvez lui dire qu'elle peut mettre le formulaire sur son site Web, permettant à ses clients et partenaires commerciaux de la contacter.
Alternativement, si elle est un peu espiègle, je vais vous dire ce qui m'a intéressé à la programmation: le piratage. À l'époque, j'ai fait le meilleur programme jamais conçu pour déconner sur AOL (en dehors d'un programme qui a surpassé le mien dans une seule des dizaines de choses que le mien a fait) - à l'âge de 14-15 ans. Du côté du chapeau blanc, j'ai également créé l'un des premiers programmes de suppression de spam (1995). J'ai pu rendre mon expérience en ligne beaucoup plus agréable, et nous allons en rester là. Tout ce que je voulais faire sur un ordinateur était une aventure ou un puzzle que je devais comprendre, et les choses que je voulais faire sur un ordinateur étaient infinies. Bien sûr, le faire fonctionner était parfois un casse-tête, mais écrire un programme qui accomplissait les choses mieux et plus rapidement que n'importe quel être humain, ou faire des choses qui étaient tout simplement impossibles pour le grand public, c'était comme construire une belle machine que l'on pouvait être fier de. Maintenant, vous évitez probablement tout problème sérieux, mais il serait extrêmement facile de créer quelque chose dans Visual Basic qui pourrait être lancé au démarrage (assis sur le côté de l'écran ou de la barre d'état système) et à partir de là, vous pouvez lui faire lancer ses sites Web préférés, ses programmes préférés, etc. Vous pouvez lui présenter les commandes nécessaires pour lancer un exe et un site Web, puis lui demander de créer des boutons, puis d'ajouter le code à ces boutons , en mettant dans ses sites Web préférés (facebook, Twitter, etc.) et programmes (iTunes, traitement de texte, etc.) Si son ordinateur est dans sa chambre, vous pouvez également lancer un réveil dessus pour des fonctionnalités supplémentaires. Bien sûr, 30 minutes sont trop courtes pour lui expliquer cela, vous devez donc déjà le faire. À la fin, vous lui enverriez un petit manuel d'utilisation de 2 à 3 pages, le code et le .exe ... et lui laisseriez un petit argument de vente: ce n'est pas facile au début, mais une fois que vous obtenez le accrochez-vous, ce n'est pas si mal, sera extrêmement utile dans la vie et aidera à développer sa pensée analytique.
J'avais l'habitude d'enseigner à des étudiants de 18 ans, et je suppose que les jeunes de 15 ans sont à peu près les mêmes. Ne vous attendez pas au succès sans pratique. Il m'a fallu quelques semaines dans mon premier cours pour me "casser".
La plus grande chose que j'ai dû apprendre était que ce que je pensais était si simple et évident que j'avais peur de ne pas pouvoir remplir le temps n'était pas du tout comme ça pour les étudiants. J'ai appris que vous devez faire des pas de bébé - sinon c'est juste de la magie "gee whiz".
Comment vous ajustez cela en 30 minutes, je ne suis pas sûr, mais la première chose que j'ai faite a été de leur montrer un petit ordinateur fait maison que j'avais construit, qui a été programmé pour jouer un petit morceau en cliquant sur un haut-parleur. J'ai expliqué qu'il pouvait jouer une note en décrémentant un compteur, pour agir comme un retard, entre les clics. Je viens d'écrire le pseudo-code sur le tableau, tout comme une recette. Ensuite, il y avait un petit condensateur que je pouvais accrocher sous un fil qui ferait fonctionner le tout environ 1000 fois plus lentement. Ensuite, ils pouvaient entendre cliquer - attendre - cliquer - attendre ... Puis, quand j'ai décroché le condensateur, il a éclaté avec le petit air.
Le but était de faire comprendre que les ordinateurs ne font que des choses simples, et les font une à la fois. Ils ne démarrent pas chaque étape tant que l'étape précédente n'est pas terminée. (Ouais, ouais, je sais - pipelining et tout ça, mais nous parlons à débutants.) Ce n'est que la vitesse électronique qui les fait paraître tout faire en même temps, ce que les débutants ont tendance à supposer (avec lecture de l'esprit). C'est l'un des concepts vraiment basiques sans lesquels vous ne pouvez pas commencer à comprendre la programmation et les ordinateurs. Pour nous, c'est tellement ancré que nous ne réalisons même pas que nous le savons, mais les débutants ne le savent pas.
J'espère avoir été en stage dans un endroit qui développe vraisemblablement un logiciel qui doit l'intéresser dans le domaine?
Il n'y a pas de réponse fixe, je la questionnerais pendant 5 à 10 minutes sur ce qu'elle sait, puis j'essayais de m'appuyer dessus du mieux que vous pouvez.
Commencez à haut niveau. Peut-être expliquer que la programmation informatique consiste à résoudre des problèmes: prendre un problème et concevoir une solution qui est écrite comme un tas d'instructions qu'une machine peut utiliser et comprendre.
La partie difficile pourrait être de fournir des exemples qu'une fille de 15 ans trouverait intéressant et pertinent. N'ayant jamais été dans cette situation et ne la connaissant pas, je ne sais pas quoi recommander pour cela ... quelque chose de simple et graphique (dessiner des formes dans une fenêtre, suivre une souris, etc ...).
Si c'était moi, je lui dirais que la programmation consiste à diviser une tâche en petites tâches d'une manière qui vous aide à les résoudre; puis d'exprimer ces petites tâches dans une langue qui ne peut pas être mal comprise par un ordinateur idiot. Mais vous devez également le faire de telle manière que les autres programmeurs puissent le comprendre facilement aussi - et ce n'est pas la même chose.
Autrement dit, en plus de ce que tout le monde a dit ...
C'est plus de mes expériences personnelles qu'une simple "réponse".
Pourquoi suis-je intéressé? Mes parents ont acheté un PC IBM XT en 1984 (je suis né en 1984). Il a 640 Ko RAM et 20 Mo de disque dur et un FDD de 5 "et a exécuté MS-DOS v3.2. Je n'ai pas été autorisé à le toucher avant d'être dans la 5ème norme et quand j'ai finalement été autorisé pour l'utiliser, j'y ai versé toutes mes années de curiosité accumulée.
Ma sœur d'autre part a été autorisée à utiliser ce même PC et un mackintosh Quadra 610 chaque fois qu'elle le voulait et elle en a tenu compte autant qu'elle a payé à la table sur laquelle il était installé.
Enseigner à ma sœur ... J'ai essayé d'enseigner la programmation informatique à ma sœur en BASIC. Je l'ai faite à tout, du démarrage de l'ordinateur à la saisie du programme et à son exécution. C'était un programme en ligne.
10 PRINT "CAT"
20 END
Cela a pris une demi-heure. Quand elle l'a finalement exécuté, il a imprimé le mot "CAT" et elle était furieuse. Elle s'attendait à voir apparaître une photo d'un chat. Elle est sortie en trombe de la pièce et c'était la fin de la programmation pour toujours!
Moralité: le résultat devrait être proportionnel au temps et aux efforts qu'ils ont consacrés.
Enseignement aux lycéens Labview et Lego NXT J'ai été mentor pour le FIRST Robotics pendant un an et j'ai dû guider les enfants dans la programmation du robot dans NI Labview. Franchement, les compétences en programmation requises étaient bien au-dessus du niveau d'un lycéen. Mais le concours visait à susciter l'enthousiasme des enfants pour l'ingénierie et à hausser la barre sur la capacité de relever un défi. Tant que les programmes n'avaient qu'une instruction if et une boucle, tout allait bien. Les gens ont abandonné la section de programmation du robot lorsqu'ils ont vu le diagramme de code que j'avais créé pour le robot que nous avions construit l'année précédente.
Autant que les gens disent que les jeunes de 15 ans peuvent faire des choses complexes et peuvent avoir des heures d'attention, j'ai trouvé un étrange manque de motivation en eux pour le faire. Ils voulaient faire des choses faciles qui ne taxaient pas leur cerveau. Ils préfèrent de beaucoup CAD et fraiser des pièces sur la machine à tour que d'écrire des programmes.
Je pense qu'avant de vous lancer dans les démos, il est utile de donner brièvement votre avis sur la place de CS dans le monde. J'ai aimé la description de Hal Abelson de CS par rapport aux mathématiques: alors que les mathématiques vous aident à décrire le monde en termes de lois, CS vous aide à décrire comment faire les choses. Son exemple était la fonction racine carrée: les mathématiques la définiront, mais ne vous aideront pas à la trouver pour une entrée donnée. CS le fera. À un niveau inférieur, l'ingénierie électrique et la physique ont jeté les bases du matériel qui a permis l'Internet, mais ont laissé ouvertes les questions de savoir comment inciter les gens à l'utiliser.
Ensuite, il y a la question de ce que c'est que d'être programmeur. Ce qui m'a attiré, c'est qu'il a un délai d'exécution plus rapide pour essayer quelque chose, le tester, le réparer, que tout autre domaine technique. C'est une résolution de problème sans escale, alors que dans d'autres domaines, le délai d'exécution d'une boucle unique peut être de plusieurs mois. Il est également utile à presque tous les autres domaines techniques, ce qui est plus que ce qui peut être dit pour ... la plupart des autres domaines techniques. Donc, si vous ne savez pas encore ce que vous voulez faire (probablement), c'est une bonne chose de devenir bon au début. Au collège, peu de choses vous rendront plus utiles à plus de professeurs que de pouvoir coder leurs expériences.
Alors bien sûr, n'oubliez pas les démos. Il peut être intéressant d'obtenir une copie de Quake (open-source), de faire un changement d'une ligne (par exemple, changer la force de gravité) et de recompiler, par exemple. Demandez-lui également de regarder le code. Rassurez-la qu'elle ne devrait pas s'attendre à comprendre grand-chose, cela peut sembler du charabia maintenant, mais là encore, il en va de même pour les journaux en langues étrangères qu'elle n'a pas encore appris. Vous pouvez dire qu'elle peut néanmoins voir que des choses sont attribuées à des choses, des objets sont informés de ce qu'il faut faire, et c'est ici que nous définissons la gravité, etc.
J'ai commencé la programmation à l'âge de 14 ans. Alors que la plupart (47 des 50 étudiants inscrits) ont abandonné en milieu d'année ou ont simplement décidé de ne pas poursuivre le cours avancé l'année prochaine, je suis resté avec et j'ai appris quelque chose de très important:
La programmation vous donne la possibilité de créer quelque chose à partir de rien. Vous avez le pouvoir de transformer les mots en un outil utile qui répond à un besoin, une activité divertissante pour vous et vos amis, ou simplement quelque chose que vous pouvez montrer à votre amis et dites: "Regardez ce que j'ai fait."
On nous a appris "Hello World" pour commencer, mais je n'avais aucun intérêt jusqu'à ce que je puisse faire interagir mon code avec l'utilisateur. Au moment où on nous a appris à lire les entrées avec "cin", j'ai décidé de créer un programme Mad-Lib que nous pourrions jouer en classe. Mon premier obstacle a été la lecture d'une entrée contenant des espaces, suivie d'une mise en forme de la sortie. Plus tard, je voulais pouvoir enregistrer ces histoires dans un fichier et j'ai donc dû apprendre le fichier IO. S'attaquer aux obstacles pour atteindre mes propres objectifs a été ce qui m'a gardé engagé.
Plus tard dans l'année, nous avons découvert que les administrateurs réseau consignaient notre utilisation de "Net send" et du client Novell SendMessage que nous utilisions pour communiquer pendant les cours d'informatique, et ils l'ont désactivé après que les étudiants l'aient utilisé pour tricher lors d'un test. Alors j'ai écrit une salle de chat pour remplacer celle que les administrateurs ont désactivée. C'était la première chose vraiment utile que j'avais créée. Je l'ai modélisée d'après le système de chat de Battle.Net, avec enregistrement des utilisateurs, modérateurs et même un cryptage de base et un système de fichiers cachés pour empêcher les utilisateurs de falsifier (tous les fichiers devaient résider sur un lecteur réseau partagé afin que les étudiants accèdent et utilisent le programme). Ce n'étaient pas des concepts que je connaissais déjà, mais des solutions que j'ai trouvées par moi-même pour résoudre un problème. Pour moi, c'était la joie de la programmation.
Donc, pour répondre correctement à la question, au-delà de la discussion sur ce que signifie développer un logiciel, une démo interactive est probablement une excellente idée. De préférence quelque chose qui résout un problème qu'elle a, comme redimensionner automatiquement toutes ces images géantes de son appareil photo. Bien qu'un peu plus compliqué, elle pourrait s'amuser avec une simple page Web de laisser un message qu'elle peut partager avec ses amis. Vous pouvez lui envoyer un e-mail à chaque fois qu'un nouveau message est publié et lui demander de modifier le code pour l'envoyer à son e-mail au lieu du vôtre. Demandez également à la page d'afficher le dernier nombre X de commentaires et demandez-lui également d'ajuster ce nombre et de voir quels sont les résultats.
Là où j'avais l'habitude de travailler, nous avions parfois des enfants qui avaient une expérience de travail. Certains s'intéressaient aux ordinateurs, d'autres non. Nous les avions l'habitude de les faire asseoir devant un ordinateur et de leur faire écrire un jeu de devinettes. (L'ordinateur sélectionne un nombre au hasard, l'utilisateur reçoit des commentaires si sa supposition était trop élevée/faible.) C'est simple à faire et c'est vraiment un résultat amusant. Rien n'est plus puissant que de leur montrer concrètement ce qu'ils peuvent créer.
Je ne sais pas si c'est une légende ou une histoire vraie, mais je lisais pourquoi le chanceux s'est raidi un jour. Une partie de l'histoire était comment il a montré la programmation à un enfant (ou peut-être même des enfants) qu'il avait rencontré dans un train.
Comme certains d'entre vous le savent peut-être, _pourquoi était un gars de Ruby (et Ruby est, enfin, assez amical avec les humains ordinaires). Il travaillait sur un jeu de Ruby, tandis qu'un gamin s'approchait de lui pour voir ce qu'il faisait. Il leur a montré le résultat d'abord - le jeu de travail. Ensuite, il a montré à l'enfant comment il peut modifier les choses dans le code pour changer le résultat. Puis il a laissé l'enfant jouer avec le code et voir le résultat modifié.
Je pense que cela devrait être votre flux de travail général - résultat, modifier, jouer. Vous devriez trouver un projet (le jeu serait le meilleur choix) dans un langage convivial et le montrer à l'enfant.
Comme je suis triste, je n'ai aucune idée si cette histoire est vraie ou non. C'est encore très cool.
Et encore une chose. Je me souviens de ma première expérience avec la programmation - MessageBox
dans Delphi. C'était cool, parce que je pouvais faire en sorte que l'ordinateur fasse ce que je voulais et voir immédiatement le résultat.
Puis, des microcontrôleurs sont apparus. Ils étaient encore meilleurs, car mon code pouvait changer le monde réel. Je veux dire, attribuer une valeur à une variable a cessé d'être si abstrait, car cela a fait apparaître une tension sur le port de sortie, ce qui a ensuite fait bouger mon moteur. C'était cool. Vous voudrez peut-être choisir cette façon - montrez à l'enfant quelque chose comme Arduino.
Vous voyez, je pense qu'il s'agit de changer et de voir le résultat.
Lorsque vous voulez attirer - et garder - l'attention de quelqu'un, alors DEMANDEZ, ne dites PAS. Demandez-leur comment ils effectueraient une tâche simple, comme prendre un verre d'eau. Ensuite, montrez-leur comment le fait de suivre les instructions qu'ils ont fournies (telles que "Descendre dans le couloir") ne résout pas réellement les problèmes de virage à gauche, de droite, d'arrêt, etc. Comprendre et gérer ces conditions aux limites, c'est l'affaire de programmation! Ensuite, vous pouvez montrer comment une boucle "faire jusqu'à" peut gérer la situation de type "marcher jusqu'à ce que vous arriviez au mur", pour créer des méta-tâches à partir de la tâche d'un pied devant l'autre. de marcher.
Je sais que ce n'est pas un langage de programmation, mais je pense que HTML est un bon point de départ. Parce que vous obtenez des résultats immédiats ... commencez par
Bonjour le monde
Alors fais:
Bonjour <b> Monde </b>
Etc.
La meilleure façon de comprendre les enfants est d'être un enfant d'abord ..! Enfant, je détestais faire des devoirs, des impositions, etc.! il y a donc des points d'entrée où vous pouvez attirer leur attention. En 30 minutes, bien que nous ne puissions pas tout expliquer, nous pouvons essayer de leur donner une sorte d'exposition où les enfants intéressés trouvent cela comme source d'inspiration. Commencez avec leurs sujets connexes comme les devoirs, etc. Dites-leur comment un ordinateur peut écrire l'imposition en quelques secondes, etc.
Je vous souhaite le meilleur.. ! bon travail
Les principes fondamentaux de la programmation qui existent dans pratiquement tous les langages de programmation sont:
* Devrait probablement être fait dans l'ordre respectif.
Ce sont probablement les choses les plus importantes qui pourraient être expliquées. Après tout cela, si vous avez assez de temps, ce que vous n'aurez probablement pas, essayez d'expliquer les graphiques.
- L'enfant ou les enfants sont presque certainement parfaitement capables de ne pas s'ennuyer. Donnez simplement quelques exemples de choses faites en utilisant la programmation.
Permettez-moi tout d'abord de recalibrer les attentes de chacun quant à ce qu'un adolescent de quinze ans instruit peut faire ou comprendre.
Nous en avons un sur mon lieu de travail pendant deux semaines, qui n'a aucune expérience de la programmation. Il sait faire fonctionner un ordinateur, mais n'a rien à voir avec un "utilisateur avancé".
Nous lui avons montré comment interroger une base de données, et il a répondu à des questions et déterré des factoïdes en écrivant son propre SQL. Nous lui avons remis une feuille de calcul et lui avons demandé de calculer certains indicateurs statistiques; les mathématiques qui étaient enseignées à l'école, mais sans l'automatisation d'un tableur. Et nous lui avons donné un peu d'étude de marché sur des fournisseurs potentiels, des trucs alimentés par Google qui devaient se sentir assez proches de certains de ses projets d'école. En ce moment, il travaille sur un didacticiel pratique xhtml + css, qui devrait lui permettre de modifier une partie de notre site Web la semaine prochaine. Nous n'avons pas essayé de l'impressionner avec nos connaissances en science des fusées ou nos pouvoirs magiques, et il s'est rendu utile pour nous en faisant des choses étrangement proches de la programmation.
Maintenant, avec 30 minutes, vous pouvez commencer par lui demander ce qu'elle a vu ce jour-là, à quoi elle pense que vous êtes impliqué, expliquer votre rôle dans l'entreprise, lui donner une démonstration rapide (préparée à l'avance) de quelque chose sur lequel vous travaillez (ou quoi que ce soit avec une boucle de rétroaction rapide d'édition, jsdo.it était une bonne suggestion). Discutez des choses avec lesquelles les ordinateurs sont impliqués et trouvez-en certains qui l'intéressent, ou demandez-lui de contribuer de manière plus intelligente à des programmes qui pourraient améliorer certaines activités. Une demi-heure est trop courte pour la pratique mais devrait être suffisante pour une bonne discussion.
Montrez-lui le résultat final de certaines des choses que vous avez faites. Parlez en général de votre rôle dans les projets. Peut-être même l'aider à faire un bonjour si elle semble intéressée.
Mon analogie préférée pour la programmation est la magie (style harry potter), comme Satanicpuppy. J'utilise cela pour les pairs non techniques ainsi que pour les enfants, cela semble fonctionner assez bien et transmet définitivement la puissance que les ordinateurs nous donnent.
Les ordinateurs sont nos baguettes magiques. Ils nous permettent d'effectuer de la magie compte tenu du mouvement droit du poignet et des incantations. En tant que programmeurs, nous avons accès à des livres de sorts (bibliothèques) travaillés et affinés par nos prédécesseurs. Nous pouvons créer de nouveaux sorts et incantations ou travailler avec ceux qui existent déjà. Certains sont faciles, certains demandent plus de pratique pour être vraiment efficaces, il y a souvent des compromis et de nombreuses façons différentes de résoudre le même problème (dois-je utiliser une bonne potion ou une incantation?).
Cette métaphore étendue peut vraiment être bien étirée et elle me permet souvent de transmettre ma passion pour la programmation d'une manière accessible aux personnes extérieures au domaine.
Créer un monde virtuel à l'intérieur de n'importe quel ordinateur dédié à résoudre un ensemble donné de problèmes.
Cela se fait en comprenant d'abord les problèmes, en modélisant le monde requis, puis en expliquant à l'ordinateur ce qu'il faut faire pour des états du monde donnés et les entrées de l'utilisateur.
Cela combine la façon dont je l'ai compris à un âge encore plus jeune avec les bases de l'expérience que j'ai acquise depuis.