私は来週、15歳の職業体験生と一緒に座って、開発者の生活と仕事について話すことを志願しました。
キャッチは
- 私はちょうど30分を持っています、そして
- 私は彼女と話をする人の1人に過ぎません。ビジネスでさまざまな役割を果たしている他の人たちも、彼女と一緒に仕事の要素を1日中駆け抜けていきます。
私は何をカバーすべきですか、そして私はちょうど30分で彼女に教えることができますか?
彼女にはおそらく開発やプログラミングの経験がないと思います。
私は来週、15歳の職業体験生と一緒に座って、開発者の生活と仕事について話すことを志願しました。
キャッチは
私は何をカバーすべきですか、そして私はちょうど30分で彼女に教えることができますか?
彼女にはおそらく開発やプログラミングの経験がないと思います。
回答:
私は高校生とよくやり取りするので、この質問によく答えます。15歳の方が50歳の方よりもプログラミングを説明する方がはるかに簡単です-だから物事を馬鹿にしたり、とてつもない類推を使う必要はありません。
私は通常、プログラムとは何かの例から始めます。
その後、私は通常、コンピューターが認識できる正式な言語でプログラムをコーディングしていることを説明し続けます。多くの場合、それらをメモ帳のような単純なもので入力します。言語は数学と英語のクロスのように見え、概念を説明し、コンピューターが従うべき式と指示を与えます。
それから彼らは通常私がいつもコンピューターにいるのか、これが私がいつもFacebookにいるのか、そして私の目がまだ悪くないのかと尋ねます。「人をハックする」方法を知っているかどうか、男は尋ねます、そして、女の子はそれが良いお金であるか、またはコンピューター科学のクラスに何人の女の子がいるか尋ねます。
その後、彼らがまだ興味を持っている場合、彼らは通常、答えるのがはるかに簡単な(または少なくともWikiに)特定の質問をし始めます:あなたがゲームを作る方法、Windows Messengerの仕組みなどのようなもの
コンピュータを使用している場合は、Firefoxの設定ダイアログボックスのボタンクリックハンドラー、ゲームエンジンのメインループまたは物理コード、 WebサイトなどからのJavaScriptソース。
私は5歳の子供に次のように説明しました:
私:「物語の中で、人々は魔法の言葉をどのように言い、世界の物事を変えるか知っていますか?」
彼女:「うん?」
私:「それがコンピュータープログラミングです。」
彼女(静かに):「すごい。」
15〜30分では現実を説明するのに十分ではありません。根本的な複雑さを説明することは、彼らを悲鳴を上げる確実な方法です。あなたは毎日働いていますが、それがいかにかっこいいかを忘れています。世界の他の職業は言葉だけで機能的なものを作成することはありません...ある時点で、他の誰もが肉の世界に出て、ハンマーで物を叩き始めなければなりません。それが彼らのアイデアを実用的なものにする唯一の方法です。
私たちではありません。
15歳の人はどんな概念でも理解できます。私自身は14でプログラミングを始めました(何年も前に学校で)
デモには30分で十分です。ブラウザーのようなものでプログラミングの魔法を見せてください。
ほぼ15歳の私は、あなたが素晴らしいスタートを切るべきだと自信を持って伝えることができます。
作り方を説明してください。
10101010
1日中入力しないように伝えます。どうすればいいかわからないことを伝えます。(うそ。あなたは何を10101010
意味するのか知っていますよね?)疑似コードのサンプルを見せてください。わかりやすくする:
Display Window
Display "I like cheese!"
Display OK button
If user clicks OK button, close Window
そのステップを一歩ずつ進みます。これは、コードが正確にどのように見えるかではないことを伝えます。コードは次のようになりEnglish + Math
ます。しかし、あなたが話す「言語」(読み方:構文)を学ぶことは難しくありません。
今回はもう少し「数学」の例を示してください。
User inputs A
User inputs B
C = A + B
Display C
このコードは、電卓のように2つの数値を加算することを説明します。このための「本物の」コードを見せてください。(UIとその他のものの大部分を別のファイルに入れ、表示するファイルは短くシンプルにしてください。)目の前で減算記号に変更します(符号をから+
に変更します-
)。
プログラミングを行うために知っておくべきことを説明します。(さまざまなレベルで。)
x + 1 = 2
、then などの基本的な代数スキルx = 1
。あなたが思っている以上に知っています。
ええ、まだ説明が必要です。
10101010
。このことを知っている人もいますが、とにかく言わないでください。
プロセス、パターン、要件などについて話し始めると、彼女はすぐにシャットダウンします。今日の子供たちはグラフィックで視覚的に動機付けられているので、私はそれらのタイプの刺激を促進するために何かを持ち込みます。ウェブ上で彼女におしゃれなものを見せ、それから何が起こるかを高レベルで説明します。開発用ラップトップを持ち込んで、画面上で「クール」なことを行うことをお勧めします。彼女の前でコードを変更してから、画面上で変更を確認してください。その年齢では、彼らは非常に賢く、視覚的なものは興味を刺激するのに役立ちます。
Alice
ませんか?
私はそれを一般的なものにしておくと思います。プログラミングと他の多くの職業は、問題解決に要約されます。日常的に問題を解決する方法を彼女に示してください。あなたが取り組んでいるプロジェクトと、それがどのようにあなたのクライアントを助けるかについて彼女に話すかもしれません。また、(おそらく)あなたの仕事が好きな理由についても少し記入してください。
私の場合、他のスタッフメンバーがチュートリアルを投稿する教育ビデオチュートリアルWebサイトを開発しました。プロジェクトの動機(人々を結びつけることなく他の人を教える)、直面した問題(必ずしもこれらを難しい問題と見なす必要はありません)、およびそれらをどのように解決したかについて説明します。そもそもプログラミングが好きな理由についても話します。私は、物を作り、プログラミングが現代世界に貢献するのが好きです。
あなたが取り組んできたソフトウェアの例を彼女に教えてください。ソフトウェアを公に使用しているクライアントがいますか?彼女に見せることができる社内アプリを開発していますか?彼女にあなたの仕事の最終結果、エンドユーザーが見、使用しているものを見せてください。
次に、あなたがそれを書いたのを助けたことを説明します。書いた部分に目を通します。可能であれば、いくつかのコードを表示します。これらのコード行がアプリケーションの一部を動作させる方法の概要を説明します。
あなたのコードが人々によって使用されているのを見てどれだけの楽しみを得るかについて話してください。
とにかく、私は14歳のいとこにそれを説明した方法です。彼はかなり感銘を受け、次の学期にプログラミングクラスを受講することにしました。
ボードゲームロボラリーに精通していますか?
私はそれがプログラミングの最高の楽しみの類推であることがわかりました。基本的に、単純なコマンド(主に矢印)を使用してロボットをプログラミングし、ゲームボードの特定の場所に他の場所より先に到達します。
私はまだBigTrakを持っていたらいいのに…
シンプルだが便利なものを見せてください。私が思う良い例は次のようになります:
このアプローチが好きな理由は次のとおりです。
より良い例を考えることができるかもしれませんが、このスタイルは「最初のイントロ」に役立つと思います。
「最近」の15歳のほとんどは、コンピューターの経験が豊富です。もっと実践的なアプローチが必要です。私は彼女に少しのコードを見せて(詳細に説明しようとせず、「フロー」の極端な基本をカバーするかもしれません)、結果が何であるかを彼女に見せます。このような例ではHTMLでも機能します。次に、「毎日、基本的にそれを行います。数万行のコードと非常に大きく複雑なプログラムを除いて」と言います。
次に、プログラミングによってどのような問題を解決するのか、なぜそれを行うのが好きなのかを説明します。たとえば、「自分のコードがアプリケーションとしてコンピューターに命を吹き込むのを見るのが好きだから」、プログラミングが好きだと言います。
第一に、あなたはあなたが暴く必要がある競争を持っています。
映画、ポピュラーカルチャー、さらにはこの分野の人々(さらにはこの問題について)は、プログラミング(およびコンピューターサイエンス分野の大部分)をある種の魔法として描写しようとします。それは魔法ではありません。
プログラミングとは、単にタスクを記述し、それらのタスクを組み合わせて問題を解決することです。パラレルを見つけようとしている場合は、数学を使用してください。コンピューターは数学の先生のようで、すべての作品を見せる必要があります。
物理的な観点から見ると、コンピューターはスマートではありません。コンピューターは、私たちが伝えただけの知識しか持っていません。そのため、コンピュータープログラマーが、たとえばCDから音楽を再生するプログラムを作成する場合、CDに保存されたデータの読み取り方法をコンピューターに伝え、そのデータを音波に変換し、最後に、それらの音波をスピーカーから出力する方法。
このアイデアを次のレベルに進めて、プログラミングがどのようにタスクを積み重ねるのかについて話を進めることができます。数学で代数を学ぶ前に算数を学ばなければならなかったように、より複雑なタスクを行う方法を教える前に、コンピューターに「基本」を教える必要があります。長年にわたり、コンピューター科学者とプログラマーは、コンピューターとの会話にはるかに近い「会話」を開始できるようになるまで、コンピューターの基本を十分に「教える」ことができました。
実際の生活に戻って、数学の先生は「15の3乗」を解くように言うかもしれませんが、「XのY乗」は次のタスクに分解されると以前に教えられていたので、あなたはそれを行う方法しか知っていません「XをXで乗算し、Y回実行します」[技術的にはY -1回ですが、ええ。]
私たちは小さな物事の細部に焦点を当てる必要はありませんので、多くの実際の問題を解決するには、私たちの時間を費やすことができず、そんなにあなたの数学の授業のように、プログラマは「知られている」タスクの基盤を確立している方法を根本的に実行しますタスク-コンピューターが基本的なことを理解していると仮定できるようになりました。
私が9歳のときに夢中になったものをやります。C64をロフトから取り出して、次の操作を行います。
10 PRINT "YOU SMELL"
20 GOTO 10
(ありがとう、お父さん)。
それからその楽しみが終わったとき。彼女に数字当てゲームを見せます。はい、すべてベーシックです。コンピューターに指示を表示するために現代言語を使用する必要はありません。
Facebookのように彼女が日常的に行うことから始めて、ログインのような1つの単純な側面が非常に複雑になる可能性があることを彼女に説明すると役立つかもしれません。
ここからデータベース、アプリケーション設計、さらにセキュリティのいくつかの側面に分岐できます。これは彼女が持ち帰ることができる助けになります。
彼女に、「Facebookについて何か変更できることがあったら、どうなるか」と尋ねることさえできます。次に、どのように変更を加えるか、何人の人が関与するかを彼女に説明します。
私は最初にPascalをプログラムすることを学びましたが、私のプログラムが私の入力を受け入れ、それを台無しにし、別の何かを印刷したことに、私は皆興奮しました。私はそこから夢中になりました。一部の人々は簡単にラッチします。
私は、おそらく彼女がこの分野に興味を持たなければならないソフトウェアを開発する仕事の場所に行ったことを望んでいますか?
決まった答えはありません。彼女が知っていることを5〜10分間クイズします。
高レベルで開始します。コンピュータープログラミングは問題を解決することだと説明するかもしれません。問題を取り上げ、マシンが使用して理解できる一連の命令として書かれたソリューションを考案することです。
難しい部分は15歳の女の子が面白くて関係があると思う例を思いつくかもしれません。そのような状況に陥ったことがなく、彼女を知らないので、私はそのために何を勧めるべきかわからない...「Hello world」プログラムやシンプルでグラフィカルなもの(ウィンドウに図形を描く、マウスを追跡するなど)。
これは、2、3回失敗し、2、3回かなり成功した後の私の見解です。
プログラミングは問題解決です。
インターネットブラウザー(facebook)、携帯電話、レジなど、毎日使用するようにプログラムされた具体的なものから始めます。多くの例を挙げてください。これらすべてのものに一種のコンピューターが搭載されていることを確認してください。コンピューターの心臓部はプロセッサーです。
プロセッサは非常に高速ですが、非常に愚かな労働者のようなものです。いくつかの指示を与えると、あなたの言うとおりにそれらを実行します。それは余分なことは何もせず、あなたがそれをするように命じた何かが間違っていたかどうかを教えません。ただし、このプロセッサはすべてを実行します。実行方法を正確に伝えると、電話をかけたり、電子メールに写真を入れたりできます。
ソーダマシンからソーダの缶を買うように非常に速いが非常に愚かな労働者にどのように伝えるか彼女に尋ねてください。彼女が手順の説明を始めると(「お金を機械に入れてボタンを押す」)、プログラムのように分析を開始します(「お金とは?機械に入れる方法は?機械にお金を入れて押すと同時にボタンを押しても、何も起こりません。」)。ホワイトボードを持っている場合は、最初の指示から左から始めてください。彼女がそれらを改訂するとき、新しい大きなリストを右側に配置します。適切な指示がある場合は、ピースの一般化を開始します(「ポケットからお金を取り出して、トレイからソーダを取り出します。似たような音がします。どの部分が同じか異なりますか?」)。そして、それらが包含している部分を交差させます。最終的には、関数呼び出しのような元の指示と一致するようにピースを結び付けてみてください。他の良い練習:手紙を郵送し、ドアを通って行き、円/正方形/三角形を描きます。
プログラミングは問題解決です。問題をパーツに分割し、共通のパーツを特定し、それらのパーツをグループ化して問題を解決します。すぐに、いくつかの部品が多くの問題に共通していることがわかり、部品をまとめて、自分が持っていることすら知らなかった問題を解決し始めます。
さて、この時点で彼女は理解できるかもしれませんが、おそらく退屈しているでしょう。一連のクールなプログラミング例でフォローアップしてください。シェーダーと関連するビジュアルコードは簡単にデモできます。非常に小さなコード変更で画像を作成し、変更を開始できます。彼女がFacebookに興味を示した場合は、RESTを介してFacebookと会話して、友人の友人(彼女の6度)のデータを表示します。ビデオゲームが好きな場合は、2、3のオープンソースゲームのデモと、コードのスニペットおよびそれらがゲームの動作にどのように役立つかを披露してください。最後に、自宅で調査できる無料のツールとリソースをいくつか紹介します。(Python、C#など)
私の失敗した試み:パイ計算を説明しようとして(彼らは尋ねていました)、C-Jumpボードゲームhttp://c-jump.com/(彼らはそれを取得せず、命令はバグがありました)、2dをライブコーディングしましたゲーム(デモの間にどれだけ小さなステップを踏んでも、興味を引くことができませんでした)。
幸運を!
簡単なプログラムを作成します。いいえ、「Hello World!」ではありません
私がしたいことは、ゲームを作成するもの、ロボットを制御するものなど、多くの種類のプログラミング言語があると言うことですが、あなたが作業するのはHTMLです。
何も含まれていないWebページを作成し、彼女のメールアドレスにメールを送信するフォームを追加します。彼女はおそらく、新しい電子メールがあることを所有者に通知できる携帯電話を持っているので、友人や家族が彼女に連絡するのに最適な方法であることを彼女に伝えることができます。将来彼女が自分のWebサイトを取得した場合は、フォームをWebサイトに配置して、顧客やビジネスパートナーが彼女に連絡できるようにすることができます。
あるいは、彼女が少しいたずら好きなら、私がプログラミングに興味を持った理由、つまりハッキングについてお話しします。当時、私はAOLをいじくり回すためにこれまでで最高のプログラムを作成しました(14から15歳のとき、私がやったことの数十のうちの1つだけで私のものよりも優れていた1つのプログラム以外)。ホワイトハット側では、最初のスパム除去プログラムの1つも作成しました(1995年)。オンラインエクスペリエンスをより楽しくすることができました。コンピューターでやりたいことはすべて冒険やパズルであり、それを把握しなければなりませんでした。コンピューターでやりたいことは無限でした。確かに、それを機能させることは頭痛の種でしたが、人間ができるよりも速くより良いものを達成するプログラムを書くことは、あるいは、一般の人々にとって単に不可能なことをすることは、誇りに思うような素晴らしい機械を作るようなものでした。さて、あなたは恐らく深刻なものから遠ざかりたいと思うかもしれませんが、起動時に起動できるもの(スクリーンまたはシステムトレイの横に座っている)をVisual Basicで作成することは非常に簡単です。彼女のお気に入りのWebサイト、彼女のお気に入りのプログラムなどを起動させることができます。exeとWebサイトを起動するために必要なコマンドを彼女に紹介し、ボタンを作ってからボタンにコードを追加するだけです。 、お気に入りのWebサイト(facebook、twitterなど)およびプログラム(iTunes、ワードプロセッサなど)を配置します。彼女のコンピューターが部屋にある場合、機能を追加するために目覚まし時計を投げることもできます。もちろん、30分では短すぎて彼女を通り抜けることができないため、既に完了している必要があります。最後に、2〜3ページのユーザーマニュアル、コード、および.exeを彼女にメールで送信し、少し売り込みを残します。最初は簡単ではありませんが、それをこつこつ、それはそれほど悪くはない、人生で非常に有用であり、彼女の分析的思考を開発するのに役立ちます。
私は18歳の大学生を教えていましたが、15歳の人もほぼ同じだと思います。練習せずに成功を期待しないでください。最初のクラスで「壊れる」には数週間かかりました。
私が学ばなければならなかった最大のことは、私が時間を埋めることができなかったのではないかと心配していたので、学生にとってはまったくそうではなかったと思ったことです。私はあなたが赤ちゃんのステップで行かなければならないことを学びました-そうでなければ、それはただの「ジーウィズ」マジックです。
30分でこれにどのようにフィットするかはわかりませんが、最初にしたことは、私が作った小さな自家製コンピューターを見せることでした。クリック間の遅延として機能するために、カウンターをデクリメントすることで音を鳴らすことができると説明しました。レシピのように、ボードに擬似コードを書いたところです。次に、ワイヤの下にフックできる小さなコンデンサがあり、全体が約1000倍遅くなります。その後、彼らはクリックを聞くことができました-待機-クリック-待機...その後、コンデンサーを外したとき、それは小さな調子で爆発しました。
これのポイントは、コンピューターが単純なことだけを行い、それらを一度に1つずつ行うことです。前の手順が完了するまで、各手順は開始されません。(ええ、ええ、私は知っています-パイプライン処理などすべてですが、私たちは初心者と話しています。)電子メールの速度だけで、一度にすべてを実行するように見えるようになります。 。それは、プログラミングとコンピューターを理解し始めることができない、非常に基本的な概念の1つです。私たちにとって、これは非常にきめ細かいので、私たちはそれを知っていることさえ認識していませんが、初心者はそれを知りません。
これは、単純な「答え」というよりも私の個人的な経験です。
なぜ興味を持ったのですか? 私の両親は1984年にIBM PC XTを購入しました(私は1984年に生まれました)。640kbのRAMと20MBのHDD、5インチFDDを搭載し、MS-DOS v3.2を実行しました。5番目の標準になるまで触ることはできませんでした。それに蓄積された好奇心の。
一方、私の妹は、同じPCとQuadra 610マッキントッシュを必要なときにいつでも許可され、彼女はそれがセットされたテーブルに払ったのと同じくらいの注意を払った。
妹 を教える...私はBASICで妹のコンピュータープログラミングを教えようとしました。コンピューターを起動してからプログラムを入力して実行するまで、私は彼女にあらゆることをさせました。それはラインプログラムとしてでした。
10 PRINT "CAT"
20 END
これには30分かかりました。彼女が最終的にそれを実行したとき、それは単語「CAT」を印刷し、彼女は激怒しました。彼女は猫の写真が現れると思っていました。彼女は部屋から飛び出し、それは永遠にプログラミングの終わりでした!
道徳:アウトプットは、彼らが費やす時間と努力に比例するほうがよい。
高校生のLabviewとLego NXT を教える 1年間、最初のロボティクスの指導者であり、NI Labviewでロボットのプログラミングを指導する必要がありました。率直に言って、必要なプログラミングスキルは高校生のレベルをはるかに上回っていました。しかし、競争は子供たちに工学に興奮させ、挑戦する能力の水準を上げることを目的としていました。プログラムにifステートメントと1つのループがある限り、問題はありませんでした。私たちが昨年構築したロボット用に作成したコード図を見たとき、人々はロボットのプログラミングセクションから脱落しました。
15歳の人は複雑なことをすることができ、何時間も注意を払うことができると人々が述べているのと同じくらい、そうするための意欲の奇妙な欠如に気付きました。彼らは脳に負担をかけない簡単なことをしたかったのです。彼らは、プログラムを書くよりも、旋盤でCADやフライス盤を使うことを好んだ。
デモに入る前に、CSの世界での位置付けを簡単に説明すると役立つと思います。私はHal Abelsonの数学に関するCSの説明が好きです。数学は法律の観点から世界を説明するのに役立ちますが、CSは物事のやり方を説明するのに役立ちます。彼の例は平方根関数でした:数学はそれを定義しますが、与えられた入力に対してそれを見つけるのを助けません。CSがします。下位レベルでは、電気工学と物理学がインターネットを可能にするハードウェアの基礎を築きましたが、それを人々に利用させる方法についての疑問を残しました。
次に、プログラマーになるのはどういうことかという疑問があります。私を惹きつけたのは、他のどの技術分野よりも、試行錯誤、テスト、修正を迅速に行えることです。他のフィールドでは、1つのループの所要時間は数か月になる場合がありますが、それは問題の解決につながります。また、他のほとんどすべての技術分野にも言えることです。これは、他のほとんどの技術分野で言うことができる以上のものです。そのため、まだ何をしたいのかわからない場合(可能性が高い場合)、早く上手になるのは良いことです。大学では、実験をコード化できるよりも多くの教授にとってあなたをより便利にするものはほとんどありません。
それからもちろん、デモを忘れないでください。たとえば、地震のコピー(オープンソース)を入手して、1行の変更(重力の強さの変更など)を行い、再コンパイルするのはクールかもしれません。また、彼女にコードを見てもらいます。彼女はあまり理解することを期待していないことを彼女に安心させてください、それは今ではちょろちょくのように思えるかもしれませんが、再び、彼女がまだ学んでいない外国語の新聞もそうです。それにもかかわらず、彼女は物事が物事に割り当てられていること、物事が何をすべきかを教えられていること、そしてここで重力を設定することなどを見ることができると言うことができます。
プログラミングを始めたのは14歳でした。ほとんど(入学した50人の学生のうち47人)が年の途中で中退したか、来年は上級コースに進学しないことに決めましたが、私はそれにこだわって非常に重要なことを学びました:
プログラミングにより、何もないところから何かを作成することができます。あなたは、言葉をあなたのニーズを満たす便利なツール、あなたとあなたの友人のための楽しい活動、またはあなたの友人に見せて「私がしたことを見てください」と言うことができる何かに変える力を持っています。
最初は「Hello World」と教えられましたが、ユーザーとコードをやり取りできるようになるまで興味がありませんでした。「cin」で入力を読むように教えられた瞬間、私はクラスでプレイできるMad-Libプログラムを作成しようとしました。最初のハードルは、スペースを含む入力を読み取り、その後に出力をフォーマットすることでした。後で、これらのストーリーをファイルに保存できるようにしたかったので、ファイルIOを学習する必要がありました。自分の目標を達成するために障害に取り組むことが、私を引き付け続けたものです。
その年の後半に、ネットワーク管理者が、「Net send」およびコンピュータークラス中に通信するために使用していたNovell SendMessageクライアントの使用をログに記録していることを発見しました。そこで、管理者が無効にしたチャットルームを置き換えるチャットルームを作成しました。それは私が作成した最初の本当に有用なものでした。Battle.Netのチャットシステムをモデルにし、ユーザー登録、モデレーター、さらに基本的な暗号化とシャドウファイルシステムを備えて、ユーザーが改ざんされるのを防ぎます(すべてのファイルは、学生がプログラムへのアクセスと使用)。これらは私がすでに知っていた概念ではありませんでしたが、問題を解決するために自分で考えた解決策です。私にとって、それはプログラミングの喜びでした。
したがって、ソフトウェアを開発することの意味を議論する以外に、質問に適切に答えるためには、おそらくインタラクティブなデモは素晴らしいアイデアです。できれば、カメラの巨大な写真をすべて自動的にサイズ変更するなど、彼女が抱えている問題を解決するものが必要です。もう少し複雑ですが、彼女は友達と共有できるシンプルなメッセージを残すウェブページを楽しんでいるかもしれません。新しいメッセージが投稿されるたびに誰かにメールを送信し、コードを編集して自分のメールではなくメールに送信させることができます。また、ページに最後のX個のコメントを表示し、その数も調整してもらい、結果を確認してもらいます。
これが伝説なのか本当の話なのかはわかりませんが、ある日ラッキースティッフの理由を読んでいました。物語の一部は、彼が電車で出会った子供(あるいは子供も)にプログラミングを見せた方法でした。
ご存じの方もいるかもしれませんが、_whyはRubyの男でした(Rubyは、普通の人間にとって非常に友好的です)。彼はRubyでいくつかのゲームに取り組んでいたが、何人かの子供が彼に近づいて彼が何をしているのかを見ていた。彼は最初に結果を示した-作業ゲーム。その後、彼は、結果を変更するためにコード内の物事を変更する方法を子供に示しました。それから彼は子供にコードを遊ばせ、変更された結果を見てもらいました。
結果、修正、プレイ-それがあなたの一般的なワークフローであるべきだと思います。人間にやさしい言語でいくつかのプロジェクト(ゲームが最適です)を見つけて、子供に見せてください。
悲しいことに、この話が真実かどうかはわかりません。まだとてもクールです。
また、もう1つ。MessageBox
Delphi でのプログラミングの最初の経験を覚えています。コンピューターに自分のやりたいことをさせて、すぐに結果を見ることができたので、それはクールでした。
その後、マイクロコントローラが登場しました。私のコードは現実世界を変えることができるので、それらはさらに優れていました。つまり、変数に値を割り当てると抽象的でなくなり、出力ポートに電圧が表示され、エンジンが動きました。かっこよかった。この方法を選択できます-Arduinoのような子供に見せます。
おわかりのように、結果を変えることと見ることがすべてだと思います。
私のプログラミングの好きな例えは、悪魔のような魔法(ハリーポッタースタイル)です。私は子供だけでなく非技術的な仲間にもこれを使用します。それはかなりうまくいくようで、コンピューターが私たちに与える力を確実に伝えます。
コンピューターは私たちの魔法の杖です。手首と呪文の正しいフリックが与えられれば、魔法を実行することができます。プログラマーとして、私たちは前任者によって機能し洗練されたスペルブック(ライブラリ)にアクセスできます。新しい呪文や呪文を作成したり、既存の呪文や呪文を扱うことができます。いくつかは簡単で、いくつかは実際に効果的に使用するためにもっと練習する必要があり、多くの場合、トレードオフと同じ問題を解決するための多くの異なる方法があります(良いポーションや呪文を使用する必要がありますか?)
この拡張されたメタファーは、実際にうまく拡張でき、多くの場合、プログラミングに対する私の情熱を現場外の人がアクセスできる方法で伝えることができます。
子供を理解する最善の方法は、最初に子供になることです。子供の頃、私は宿題や面付けなどをするのが嫌いでした。あなたが彼らの注意を引くことができるエントリーポイントがあります。すべてを説明することはできませんが、30分間で、興味のある子供たちがインスピレーションとしてそれを見つける一種の露出を与えることができます。宿題などの関連トピックから始めます。コンピューターがほんの数秒で面付けを書く方法などを伝えます。
あなたの人生に幸あれ.. !よくやった