自分のしていることを見て、面白いと思って質問してくれる友達がたくさんいます
Do you think I could be a programmer?
私の反応は
... ummm ... do you like math?
役立つ回答が欲しいので、誰もが最初から始めるだろう誰かのためのかなりまともな適性検査を知っているが、批判的思考と問題解決のスキルがあるかどうか知りませんでしたか?
「数学が好き」は悪いテストです。私は数学が好きではありませんでした(主に高校の数学の教師の90%が嫌だったからです)。
「数学」と言うとき、ほとんどの人はあなたが「非常に厳密な一連の規則に従って方程式を慎重に解く」ことを意味すると考えます。プログラミングはそのようなものではありません。
プログラミングは、図面に似ています。達成できることは、想像できることによってのみ制限されます。
重要なのは、システムを想像し、それがどのように機能するかを見る能力です。
Brainbench Aptitude Test ;をしている子供の頃から覚えています。証明書がまだどこかに保存されています...
テストの概要:
Abstract Thinking
Process Flow
Spatial Manipulation
Analytical Reasoning
Inductive Reasoning
Logic Application
Word Problems
Attention to Detail
Following Instructions
Reading Comprehension
Rule Interpretation
Writing Analysis
Mathematical Problem-Solving
Word Problems
Process Mapping
General Processes
Letter Manipulation Processes
Number Manipulation Processes
Shape Manipulation Processes
良いものがすでにある可能性があります。
たとえば、 非プログラミングヤギからのプログラミング羊の分離 に関する説明を参照してください。
プログラミングのすべての教師は、彼らの結果が「二重のこぶ」を表示することに気づきます。それはまるで2つの母集団があるかのようです。それぞれが独自のベルカーブを持つ[プログラムする]ことができる人々と[プログラムする]ことができない人々です。プログラミング教育と学習に関するほとんどすべての研究は教育に集中しています。言語を変更し、アプリケーション領域を変更し、IDEを使用して動機付けに取り組みます。それは機能しません。二重こぶが持続します。コースが始まる前に、プログラムできる母集団を選択するテストがあります。二重こぶを選択できます。おそらくこれは信じられないかもしれませんが、話を聞いた後で確認できます。正確な方法はわかりません/なぜ機能するか、しかしいくつかの良い理論があります。
テストが識別するのは、一貫性のある人々が一連の命令を操作可能にする方法です。つまり、彼らは心の中でモデル(抽象化)を構築し、彼らと協力することができます。
もっと重要な「テスト」は、彼らがいじれる簡単なプログラミング言語/環境を彼らに示すことだと思います。たとえば、 processing または python です。彼らがそのような言語を使って学び、楽しむことができるなら-たぶん単純なタスクか2つを解決している間に-それはおそらくあなたが求めることができる最高の「適性テスト」でしょう。
「あなたは数学が好きですか?」悪いスタートではありません。数学は重要です、その後...
彼らが問題を取り、それをブロックに分解し始めることができるかどうかをスピーチで確認することをお勧めします。基本的な問題をステップバイステップで実行できるかどうかは、最初の良いスタートです。
彼らがうまく答えることができれば、プログラマーが日々持っている分析的かつ深い方法で、おそらくそれを処理することができます。
コーディングにさらされると、強制するか強制しないかのどちらかになります。適性は、それが得意かどうかの1つの要因にすぎません。良い例への暴露、指導、タスクの時間、努力は他にもあります。何かを本当に望んでいる/必要としていることは、他の要素を利用することをはるかに簡単にします。
「あなたは数学が好きですか」よりも良い質問は「論理的なパズルを解くのが好きですか」ですか。これは、数独などのようなものです。「ジョン、アン、ピーター、メアリー、ブルターニュは隣人です。ジョンは白い車を持っています。ブルターニュはアンの左側に住んでいます。彼らが住んでいるのか?」
それがプログラミングなのです。1つの巨大な論理パズル。
もっと良い質問は、「レゴブロックを使って物を作るのが好きですか?」だと思います。
ギュストーのように、映画ラタトゥイユのキャラクターはこう言った:
誰でも料理できます。
同様に、誰でもプログラムできます。しかし、誰もがそれで素晴らしいとは限りません。ほとんどのプログラミングジョブには、平均的なレベルの適性と能力が必要です。
はいと答えてください。どうして?ほとんどの人は、自分が賢いと思う人に感謝されたいと思っているからです。
好きな数学は重要だと思います。真面目な数学者になるために必要とされる厳密に証明されたものを楽しむという観点からではありません。しかし、あなたにとって重要な問題を考えると、それを数学的な方法で解決することに関連する問題を定式化できますか。コンピュータが行うことはすべて数学であり、ある種のシンボリックデータを受け取り、何らかの操作を実行すると私は主張します。それが数学の本質です。だから、数学的な構造のようなものに物事を抽象化し、前進するための理由を理解することができるはずです。それがなければ、あなたはただハッキングして、いくつかのコードを捨てて、それがあなたが望んでいることを望んでいるだけです。タイプミスを犯して迷うことなく複雑な代数を解くことができることは、おそらくそれほど必要ではありません。しかし、計画を策定できることが重要です。私はしばしば、10行のプログラムを作成して、あまりにも複雑ではない数学が正しく行われたことを確認します。検証、発見の目的でコンピューターを数学と組み合わせ、そして詳細を計算するためにそれらがたくさんある場合、それは本当の鍵です。