記事を読むメリット
- プログラミング学習に対する不安が消える
- 他の記事と合わせて読むと初心者でも3ヶ月~半年でプログラミングで稼げるようになる
プログラミングを勉強しようと思ってるけど、素質とか向き不向きってあるのかな?
なんか色々ググってたら「60%の人間はプログラミングの素質がない」っていう検索候補が出てきた…マジで?
今回はこのような方に向けた記事です。
結論としては、「60%の人間はプログラミングの素質がない」という論文は撤回済みなので気にしなくてOKです。
ちなみにこの記事を書いている僕は、プログラミングを独学して3ヶ月で月10万円稼ぎ、1年でエンジニアになりました。
- 「60%の人間はプログラミングの素質がない」という論文は撤回済み
- プログラミングに必要なのはセンスや才能ではなく「行動力」と「継続力」
僕のパソコンスキルは子供の頃にWindowsのペイントとソリティアで遊んだことがある程度でしたが、コツコツ継続して勉強した結果、プログラミングで稼げるようになりました。
プログラミングを身につけるために必要なのは、素質やセンスや才能ではなく「行動力」と「継続力」です。
「プログラミングに素質とか向き不向きってあるのかな?」と悩んでいる方の参考になれば幸いです。
- 「60%の人間はプログラミングの素質がない」って本当?※論文は撤回済み
- プログラミングに必要なのは素質や才能よりも「行動力」と「継続力」
- とはいえ、身につくスピードに個人差はある
- プログラミングを身につけるためのコツ3つ
- まとめ:向き不向きではなく自分がやりたいかどうかが大事
「60%の人間はプログラミングの素質がない」って本当?※論文は撤回済み
まず結論として、「60%の人間はプログラミングの素質がない」という論文は撤回されています。
撤回前と撤回後の論文を以下に要約しました。
※僕の英語力は不定詞がギリぐらいのミジンコレベルなので、生成AI(Claude)に翻訳と要約をしてもらいました。
撤回前の論文
原文:Saeed Dehnadi and Richard Bornat: The Camel has Two Humps, 2006
撤回前の論文の要約さらに要約プログラミングを学ぶのは非常に難しく、大学の初級プログラミングコースでは30〜60%の学生が失敗する。
これまでさまざまな教授法や教材が試されてきたが、成功率は向上していない。
プログラミング能力は一般的な知能やテスト結果とは相関がない。
著者らはプログラミング適性テストを開発し、コース開始前から誰が合格できるかを高い精度で予測できるようになった。
テストでは、変数の割り当てなどの簡単なプログラムについて、被験者がどのようなメンタルモデルを使うかを調べた。
一貫した合理的なモデルを使う群は合格率が高く、モデルが不安定な群は合格率が低かった。
テストの結果、プログラミング能力は生まれついた資質であり、教育ではそれを変えられないことが分かった。
合格見込みのない生徒にプログラミングを教えるのは無駄であり、適性のある生徒のみに集中すべきである。
こっちは相棒のサイード・デフナディだ!
俺たち2人で最高にクールなプログラミングの適性テストを開発したぜ!これでそいつの生まれ持ったプログラミングの適性がバッチリ分かるぜ!
プログラミングができるかどうかは生まれ持った適性で決まるから、適性のない奴がいくら勉強しても時間の無駄だぜ。
リチャード・ボーナットとサイード・デフナディという学者が「プログラミングができるかどうかは生まれ持った資質で決まる」と主張しました。
プログラミング業界で有名な「ふたこぶラクダ論文※」と呼ばれるものです。
しかし、発表から約8年後に撤回されました。
※プログラミング学習者の成績をグラフにすると、低成績者と好成績者の2つの山になり、ラクダのコブのように見えるということが名前の由来です。「上等にできる人と全くできない人に極端に分かれる」という意味です。
撤回後の論文
原文:Richard Bornat: Camel and humps: a retraction, 2014
論文要約さらに要約リチャード・ボーナットは2006年に「The camel has two humps」という論文を書き、サイード・デフナディの研究結果を過剰に一般化し、プログラミング能力には個人差があり、一部の人はプログラミングを学べないことを主張した。
しかし、当時ボーナットは抗うつ剤の副作用で気分障害に陥っており、自身の主張は過剰なものだった。
デフナディの研究は、novice(初心者)がプログラムの実行について何らかの合理的なメンタルモデルを持っている可能性を示唆するにすぎず、プログラミング適性テストを発見したわけではない。
デフナディのテストで一貫した回答をした者の方が、プログラミングコースで合格する可能性が高いという予測は再現可能だが、成績の程度は予測できない。
ボーナットはかつての過剰な主張を撤回し、デフナディの発見した現象自体の重要性は認めている。最近の研究でその現象の理由が徐々に明らかになりつつある。
2006年に発表した、「ふたこぶラクダ論文」があるだろう?あれは言い過ぎたから取り消すぜ。ソーリー。
俺たちは完璧なプログラミング適性テストを開発したと思っていたが、どうやらあれはただの性格診断テストだったみたいだ。
俺たちは脳みそに栄養がいってなかったようだな。
帰ってチェリーパイでも食べて寝るよ。
たぶんチェリーパイは書いてないと思いますが、論文は撤回されています。
プログラミングに必要なのは素質や才能よりも「行動力」と「継続力」
論文も撤回されていますし、僕自身の経験も含めると、プログラミングに必要なのは、素質や才能よりも「行動力」と「継続力」です。
多少の要領の悪さやセンスのなさは「行動力」でカバーできます。
独学期間中の僕の行動は以下の感じです。
- 1日平均7〜8時間勉強(ニートで時間が無限にあった)
- 分からないところはすぐ調べる
- 勉強する前に悩まずに勉強しながら悩んだ
- 3ヶ月ぐらい勉強したらすぐ案件に応募した
自分にセンスや才能があるのかは分からなかったので、分からないことで悩むよりとにかく行動しました。
行動すると知識や経験が増えるので、どんどん身についていきました。
やる前から「自分って才能あるかな?どうかな?」と考え過ぎずに、とりあえずやってみるのが吉です。
「プログラミング」と聞くだけで、「なんか難しそう」と拒否反応を起こして学ばない人がほとんどなので、プログラミングは「とりあえずやってみる人」と「継続した人」が勝ちます。
学習の始め方やコードの書き方はネットで色々公開されているので、まずは無料で独学でプログラミングに触れてみるのもありです。
◆関連記事:プログラミング独学におすすめのサイト6選【補足:無料にこだわり過ぎない方が身につきます】
◆関連記事:プログラミングの独学は何から始めたらいい?【まずは目的を決めよう】
とはいえ、身につくスピードに個人差はある
とはいえ、身につくスピードに個人差があるのは事実です。
僕は独学1年でエンジニアになりましたが、半年ぐらいでなれる人もいます。
この「身につく時間に個人差がある」ということを「向き不向き」と表現したりしますが、別の言い方をすれば、「身につく時間に個人差はあれど継続すればほぼ誰でも身につく」ということです。
これは車の運転免許と同じです。
仮免で落ちまくる人もいれば、ほとんど勉強しなくても最後までストレートで卒業できる人もいたりと、卒業までにかかる時間に個人差はありますが、通い続ければ誰でも卒業できます。
「運転免許が取得できなかった」という人は、教習所に通うのを途中で辞めた人か、何かしらの違反期間中の人だけです。
プログラミングもそれと同じで、かかる時間に個人差はあっても学習することを辞めなければ必ず身につきます。
◆関連記事:プログラミングできない奴ちょっと来い※できない原因は努力不足です
プログラミングを身につけるためのコツ3つ
プログラミングを身につけるためのコツは以下の3つです。
一部、Googleの開発チームのルールを引用しています。
気楽に学ぼう
一番大事なマインド的な部分です。
プログラミングは気楽に学びましょう。
完璧主義だったり、ガチガチに思考を固めて学ぶと、なにか上手くいかなかったときに挫折しやすくなります。
特に初心者の場合は分からなくて当たり前ですし、エラーを起こして当たり前です。
分からないところがあったら飛ばしてOKです。
今勉強している言語で意味が分からなくなったら、他の言語を学んでOKです。
「まず初心者はHTML・CSSから学んだ方がいい」
「いや、簡単すぎて時間の無駄だから学びたい言語から学んだ方がいい」
みたいな学ぶ順番に関しても巷でなんだかんだ言われていますが、結論としては学ぶ順番もなんでもOKです。
「こうした方がいいんじゃないか」
「ああした方がいいんじゃないか」
といって悩んで行動できなくなるぐらいなら、間違っててもいいので行動しましょう。
行動して「なんか違うな」と思ったらやり直せばOKです。
「エラーを起こしてOK」「やる気なくて勉強しない日があってOK」「色んな言語に手を出してOK」です。
プログラミング学習で一番大事なのは「気楽に学ぶ」ことです。
15分考えて分からなかったら調べる or 人に聞く
これはGoogleの人工知能チームの「15分ルール」と呼ばれているものです。
内容は以下です。
- ①何か問題が起きたら最初の15分は自分自身で解決を試みる
- ②15分後も解決していなかったら必ず人に聞く
Googleがこのルールで伝えたい意味合いとしては、「前者を守らないと他人の時間を無駄にし、後者を守らないと自分の時間を無駄にする」という感じですが、
プログラミング初心者に置き換えると「前者を守らないとプログラミングに一番必要な”考える力”が身にかず、後者を守らないと1人で抱え込んで挫折する」という感じです。
バグやエラーが起きたら、すぐに答えを見たりせずにまずは自分で考え、15分考えても分からなかったら詳しい人に聞きましょう。
まずは自分で考えないと、考える力が身につきません。
詳しい人に聞かずに抱え込むと、挫折のリスクが高まります。
プログラミングを身につけるコツとして、この「15分ルール」を意識しましょう。
とにかく手を動かしてエラーを経験しまくる
プログラミングを身につける方法は「手を動かす&手を動かす&手を動かす」です。
車の運転免許・スポーツ・プログラミングなどの「スキル」というものを身につけるためには、手を動かす以外の方法はありません。
僕もそうでしたが、動画やテキストを見て分かったつもりになっても、実際に手を動かすとマジでチンプンカンプンだったりします。
とにかく手を動かしましょう。
それに、初心者のうちはエラーを起こしてナンボです。
エラーを出すごとにその言語のルールや仕様を学んでいくことになるので、エラー=上達のチャンスです。
エラーを必要以上に恐れずに、自分を成長させてくれる幸運の女神だと思って1つずつ対処していきいましょう。
プログラミングを身につけるコツとして、とにかく手を動かしてエラーを経験しまくりましょう。
まとめ:向き不向きではなく自分がやりたいかどうかが大事
記事のまとめ- 「60%の人間はプログラミングの素質がない」という論文は撤回されている
- プログラミングに必要なのは素質やセンスや才能ではなく「行動力」と「継続力」
- とはいえ、身につくスピードに個人差はあるのは事実
- 逆にいえば、「身につく時間に個人差はあれど継続すればほぼ誰でも身につく」ということ
- プログラミングを身につけるためのコツは「気楽に学ぼう」「15分考えて分からなかったら調べる or 人に聞こう」「とにかく手を動かしてエラーを経験しまくろう」の3つ
人には何事も向き不向きがあって当たり前です。
個人的には「向き・不向き」と「できる・できない」は関係ないと思っています。
向いてないからといって、できない理由にはなりません。
大事なのは向き不向きではなく、「自分がやりたいかどうか」ではないでしょうか。
僕も最近ボイスパーカッションを練習していますが、なんか口周りの筋肉が弱いらしく、全然音が出ません。
すかしっぺみたいな音しか出ません。
口周りの筋肉が弱いので僕はボイパには向いていませんが、自分がやりたいと思ったので、できるようになるまでやります。
向き不向きではなく、やりたいと思ったのでやります。
何事もそんな感じでいいと思います。
必要以上に向き不向きを気にするより、やりたいと思ったら行動するのが吉です。
意外と才能が開花するかもしれませんしね。
悩む前に行動あるのみです。
今回は以上です。
関連記事