「言われてみると、なぜ?」——普段は気にしないけど、指摘されると答えに詰まる身近な問い。今回のテーマは「なぜプログラミングできる人は頭がいいと思われるのか」。飲み会で「エンジニアです」と自己紹介すると、「すごい、頭いいんですね」と返される。プログラミングスクールの広告は「論理的思考力が身につく」と謳い、子ども向けプログラミング教育は「考える力を育てる」と訴求する。だが実際のところ、プログラミングにIQテストのような知性は必要なのだろうか。
「コードが書ける=知的」というバイアスの構造
プログラミングが知性と結びつけられる背景には、いくつかの認知バイアスが絡み合っている。
| バイアスの種類 | 内容 | プログラミングへの適用 |
|---|---|---|
| 不透明性バイアス | 理解できないものを高度と判断する | コードは非エンジニアには暗号に見える |
| ハロー効果 | 一つの優れた特性が全体評価を引き上げる | 「コードが書ける」→「他のことも頭がいい」 |
| 希少性バイアス | 少数派のスキルを過大評価する | 人口の数%しかコードを書けないという認識 |
| 努力の不可視性 | 見えない努力を才能と誤認する | 何年もの学習を「センス」と捉える |
| メディア表象 | 映画・ドラマでの天才ハッカー像 | ソーシャル・ネットワーク、MR.ROBOT |
特に強力なのは「不透明性バイアス」だ。人間は自分が理解できないものを、実際以上に高度なものと判断する傾向がある。英語の文章は「なんとなく読める」人が多いが、Pythonのコードは全く読めない人がほとんどだ。この「読めなさ」が、プログラミングに神秘的な知的オーラをまとわせている。
実際のプログラミングに必要な能力は「知性」とは少し違う
現場のエンジニアに「プログラミングに一番必要な能力は?」と聞くと、「天才的な頭脳」という答えはほぼ返ってこない。
エンジニアが挙げる「本当に必要な能力」:
- 忍耐力(エラーと何時間も向き合う根気)
- 検索力(Stack OverflowやGitHubで答えを見つける技術)
- パターン認識(過去に見たコードの構造を応用する力)
- 段階的思考(大きな問題を小さな問題に分解する力)
- コミュニケーション力(仕様を理解し、チームと共有する力)
- 継続的な学習習慣(技術は常に変化する)
これらは「IQが高い」とは似て非なるものだ。段階的思考は訓練で身につくし、検索力は経験で磨かれる。むしろプログラミングは、芸術やスポーツに近い「技能」の側面が強い。練習すれば上達し、サボれば鈍る。天賦の才よりも、地道な反復と好奇心がものを言う世界だ。
なぜこの誤解は解けないのか
「プログラミング=頭がいい」という認識が根強い理由は、この誤解を解くインセンティブが誰にもないからだ。
この誤解から利益を得ている人々:
- エンジニア本人:社会的評価が上がるので否定する理由がない
- プログラミングスクール:「知性が身につく」と訴求したほうが受講生が集まる
- テック企業:エンジニアの社会的地位が上がれば採用に有利
- メディア:天才ハッカーのほうが記事やドラマとして面白い
- 教育行政:プログラミング教育の必修化を正当化できる
全員が「プログラミング=知的」という物語から恩恵を受けている。誰も困っていないので、誤解は訂正されない。むしろ社会全体で強化され続けている。
「頭がいい」の定義自体が変わりつつある
ただし、視点を変えれば、この認識は完全な誤りでもない。現代社会において「頭がいい」の定義自体が変化しているからだ。
かつて「頭がいい」は暗記力や計算速度を意味していた。しかしAIが暗記も計算も代替する時代に、価値を持つのは「問題を定義する力」「抽象化する力」「システム思考」——まさにプログラミングで鍛えられる能力群だ。
つまり、プログラミングが人を「頭よく」するのではなく、社会が「頭の良さ」の定義をプログラミング的な思考に寄せてきている。因果が逆なのだ。
次に「すごいですね、頭いいんですね」と言われたとき、あなたはどう答えるだろうか。謙遜するか、素直に受け取るか。あるいは「頭がいいとは何か」を問い返すか。その選択もまた、一つの思考実験かもしれない。
出典・参考
- Kahneman, D.「Thinking, Fast and Slow」(2011) - 認知バイアスに関する基礎文献
- Stack Overflow Developer Survey 2024
- 文部科学省「プログラミング教育の手引」
- IEEE「What Makes a Great Software Engineer?」(2023)
