プログラミングに向き不向きはある?
向いているのはどんな人?
学歴や成績は関係ある?
こんなお悩みにお答えします。
この記事ではあなたがプログラミングに向いているのか、それとも向いていないのかを早い段階で判断するためのお手伝いをします。

現役の社内SEです。プログラミングに20年ほど携わってきました。今でも仕事でプログラミングしている筆者が解説します。
向き不向きはある
筆者は約20年に渡りプログラムを作る仕事に携わってきました。
上司、先輩、同期、後輩、部下、新卒、取引先、インターン生……と何十人もの人と関わってきた中で感じたことは、
プログラミングには確実に向き不向きがある
ということ。
大学院卒でも向いていない人はいますし、高卒で成績が下でもプログラミングは超絶できる有能な人を見てきました。
どんなに教育してもなかなか成長しない人もいれば、放置しててもどんどん成長していく人もいます。
これは個人の向き不向きが大きく関係していると考えられます。
これまでに何十人と見てきた経験を元に、プログラミングに向いている人と向いていない人の特徴を、ここからさらに詳しく解説していきます。
向いている人
コンピュータが好き
「好きこそものの上手なれ」
ということわざがあるように、プログラミングを得意とする人はコンピュータが好きな人が多いです。
ここで言うコンピュータとは、主にパソコンを指しますが、タブレット、スマホ、クラウドサーバーもコンピュータの一種なのでこれらに興味がある人も同様の事が言えます。
具体例としては、
パソコンでゲームをするのが好き
パソコンで動画編集に熱中した
コンピュータの仕組みに興味あり
こんな人です。
理屈は次の通り。
あらゆるプログラムはコンピュータ上で動きます。
プログラムとコンピュータは密接な関係があるため、コンピュータに興味関心があるとプログラムの仕組みが分かるようになり、プログラミングの理解もどんどん深まっていきます。
理解が深まる=作れるようになり、その結果、楽しいと感じます。
これがプログラミングを続けるモチベーションに繋がります。
向いている人の好サイクル
- コンピュータが好き
- 理解が深まる
- 作れるようになる
- 楽しいと感じる
- もっと好きになる
モノづくりが好き
モノづくりが好きな人はプログラミングに向いています。
プログラミングはコンピュータの中で作り上げていくモノづくりのひとつだからです。
ゲームの「シムシティ」を例に挙げます。
シムシティは道路を設置したり病院を設置したり、、、と町を作りあげていくゲームで、町が成長するにつれて人口も増えていきます。
自由な発送で作り上げていくところと、その結果として出来たものが動きだすところがプログラミングに通じます。
実際、筆者の後輩の中に、子供の頃「シムシティ」に熱中していた人がいました。
彼はプログラミング未経験者でしたが、プログラムを作る集中力が非常に高く、短期間で品質の高いものを作り上げてしまう優秀な人材になりました。
元々、素養が相当あったわけです。
このような事例からもモノづくりが好きな人はプログラミングに向いていると言えます。
理屈よりもやってみる人
理屈を考えるよりも、とにかく手を動かしてやってみる人はプログラミングに向いています。
なぜならプログラミングはコンピュータを動かすための手段だからです。
例えば自転車。
自転車は乗るのが目的ではなくて、遠くまで早く移動するための手段です。
子供の頃、自転車に乗れるようになったとき、理屈よりもまず乗ってみて、何度も練習してようやく乗れるようになった経験があなたもあるはず。
プログラミングも同じで、まずやってみて失敗を繰り返してだんだん使い方を覚えていくものです。
自転車と違ってプログラミングは知識や理論も大事ですが、理屈よりも手を動かしてどんどん試してみる人の方が習得が早いです。
要するに、
「習うより慣れろ」
の精神ですね。
面倒な繰返し作業が嫌い
何度も同じ作業を繰り返す事を「めんどう」あるいは「ムダ」と感じる人はプログラマに向いています。
なぜなら、この「めんどう」や「ムダ」という感情がよりよいプログラムを作ることにつながるからです。
例えば、家計簿をつけるとき、あなたなら①~⑤の中でどれを選びますか?
① 家計簿へ一つずつ手書きする
② 家計簿へレシートを貼る
③ 表計算ソフトへ一つずつ入力する
④ レシートを写真で撮って家計簿アプリに読み込ませる
⑤ クレジット決済とクラウド家計簿サービスを連携させる
家計簿をつける目的は、住居費、水道光熱費、食費、日用品、通信費…など、分類毎にどこにいくら使っているかを把握して使いすぎを防いだりすることですよね。
そのためには分類毎に金額を集計しなければなりません。
だとすると、①②はノートに記録をつける上に分類毎の金額を電卓で集計をしなければなりませんので非常に「めんどう」です。
③の表計算ソフトなら数式を作っておけば集計は自動でできますが、入力作業は避けられませんので「めんどう」です。
④は写真から品名、数量、単価を読み取って入力を自動化できるので楽です。しかし、レシートの写真を全て撮るという作業は避けられませんので「めんどう」です。
⑤は普段の決済をクレジットに集中させればクラウドの家計簿サービスが自動的に分類、集計してくれるため、そもそも家計簿をつけるという作業が必要ないので非常に「ラク」です。
もちろん、ライフスタイルや考え方によってどれを選択するかは個人の自由ですがプログラミングに向いている人は、より⑤に近い思考を持ちます。
このような「めんどう」という感情が改善の元となり、よりよいプログラムが作られていくのです。
この理屈から、面倒な繰り返し作業が嫌いな人はプログラミングに向いている、と言えるのです。
論理的な思考がある人
論理的な思考がある人はプログラミングに向いています。
論理的思考とは…
目的を達成するため
課題の解決に向けて
物事を体系的に整理し
矛盾なく
筋道を立てて
考える思考です。
……といってもこれだと抽象的な表現で分かりにくいので、論理的思考がどんなときにどう必要なのかを深掘りして説明していきます。
プログラムを作るとき
プログラムを新たに作る時に論理的思考が必要です。
ここで言う論理的思考とは、
目的の機能を実現するために順序立てて細かな処理に分解して考えること
です。
例えば、Amazonのようなネットショッピングサービスで商品を注文をする機能を作る場合は次のように細かな処理への落とし込みが必要になります。
step
1ショッピングカートの管理
・ユーザーが商品をカートに追加できるようにします。
・カート内の商品情報(数量、価格、合計金額など)を保持し、表示します。
step
2注文の処理
・ユーザーが支払いへ進むよう選択した場合、注文処理が始まります。
・お届け先情報を入力または選択させ、注文内容を確認します。
step
3支払の処理
・ユーザーに支払い方法を選択させ、支払い情報を入力させます。
・支払い情報の検証と処理を行い、支払いが成功した場合、注文を確定します。
step
4在庫管理
・注文が確定したら、商品の在庫を減少させます。
・在庫が不足している場合、ユーザーに通知を送ります。
step
5注文確認と通知
・ユーザーに注文確認メールや注文番号を表示し、注文が受け付けられたことを通知します。
step
6注文履歴とアカウント管理
・ユーザーが注文履歴を確認できるように、注文データをデータベースに保存します。
・ユーザーがアカウント情報を管理できるように、プロフィール編集機能を提供します。
大まかですが、注文機能一つとってもこのように多くの処理に分解して、順序立てて考える力が必要になります。
実際にプログラムにするには、上記の各ステップの処理をさらに細かくしていくことになります。
プログラムに問題があったとき
作ったプログラムに何らかの問題が起こったときに論理的思考が必要です。
ここで言う論理的思考とは、
問題の原因を的確に特定し、問題解決のために適切な手段は何かを考えること
です。
例えば、ネットショッピングのプログラムを作っていてテストで注文したときに、注文に失敗してエラーが出たとします。
ここで大事なのは「注文に失敗した原因は何か?」を追求すること。
ただ単に原因を推測するだけではダメで、
どのような時に問題が発生するのか?
問題が発生するときの注文状況はどうか?
問題が発生するときのエラーログには何が記録されているか?
このような情報を集めて、
問題が発生するときの再現条件は何か?
を特定する必要があります。
プログラムは同じ条件下では必ず同じ動作をしますので、再現条件まで分かったら後はプログラムを動かしながら問題の発生箇所を特定します。
発生箇所を詳しく調べれば原因が分かります。
原因が分かったら適切な対策は何かを考えてプログラムを修正すればOKです。
ネットショッピングの例に戻ります。
今回はプログラムを作っている途中だとして、必ず注文するときにエラーが発生するとします。
エラーログを確認したところ、支払情報の中に「配送先住所がない」というログがあったとします。
配送先の住所がないということは、配送先の住所情報をデータベースから取得するときに失敗したか、あるいは必要な処理に配送先の住所情報を渡せていない、などが考えられます。
該当する箇所のプログラムを詳しく調べたところ、配送先の住所情報をデータベースから取得できていない事が分かりました。
対策としてデータベースから配送先の住所情報を取得する箇所を修正するのが適切です。
このように、問題の原因を的確に特定し、問題解決のために適切な手段は何か?を筋道立てて考える力が必要になってきます。
向いてない人
コンピュータアレルギー
本記事の上の方で
「向いている人=コンピュータに興味関心がある人」
と書きました。
向いていない人はこれと真逆です。
コンピュータに興味関心が全くなく、極端な苦手意識がある人
このような人は無理にプログラミングをやろうとしても挫折するでしょう。
なぜなら、興味関心がないと理解が深まらず、楽しいと感じられないからです。
例えば、学校で学ぶ歴史の勉強。
歴史に興味がない人が教科書を読んでいても書いている言葉も理解できなくて、ただただ眠くなるだけですよね。
それでもどんどん授業は先に進んでいきます。授業に置いていかれるとますます理解が難しくなり、その結果楽しいと感じられなくなります。
こうなってくると、最終的に苦手(あるいは嫌い)になります。
コンピュータもこれと全く同じ理屈で興味関心がない人は向いていません。
文字を読むのが苦痛
文字を読むのが「つらい」と感じる人はプログラミングに向いていないです。
理由は3つあります。
① プログラムは文字の羅列だから
上の図のようにプログラムは文字の羅列で出来ています。
プログラミングはこのような文字の羅列と毎日にらめっこしながら作り上げていものです。
最初のうちは分からない事ばかりですので上の図の中身を今ここで理解できないのは当然ですが、これを見て「これ見るの嫌だなぁ」と拒否反応を感じる人はつらくなるのでやめた方がよいでしょう。
② 本や技術ドキュメントを読まなければならないから
プログラミングはスキルの習得までに多くの本や技術ドキュメントを読んで勉強したり、分からない事を調べたりする必要があります。
ある程度の基礎知識が身につけば新たに読むことも減ってきますが、新しい技術が出てくれば必要に応じて学ばなければなりません。
これを「キツい」と感じる人は長く続けることが難しいでしょう。
③ 仕様書を読まなければならないから
プログラムを仕事として作る前にはどんなものを作るのかが書かれた「仕様書」を読む必要があります。
会社やプロジェクトによってはきっちりした仕様書が出来上がる前にスタートすることも多々ありますが、少なくとも何らかの資料はあるはず。
場合によっては会議の議事録の寄せ集め……なんてことも考えられます。
やはりこれも文字の羅列ですので、文字を読むのがイヤな人はプログラミングの仕事もイヤになるかもしれません。
感情的な思考が強い
プログラムを作っていると、作っている最中にエラーが出て動かなくなったり、出来上がっても特定の条件下で正しく動かないことがあります。
エラーが出たり思った通りに動かなかった時に頭に来てパソコンを叩いたりするような人はプログラミングに向いていません。
コンピュータは作られたプログラム通り素直に動きます。
思い通りに動かないのは作り手の問題です。
思った通り動かない場合に何が問題なのかを冷静に分析して論理的に考えられない人はプログラミングには向いていません。
学校の成績は関係あるか?
数学
義務教育レベルの知識があればほぼ十分です。
筆者は理工学部の大学を卒業して、約20年プログラムを作ったり仕様を作ったりする仕事をしてきましたが、高校で習った微分積分すら使ったことはありません。
AIやロケットの軌道計算などの高度なプログラムは別ですが、仕事で必要なプログラミングではほとんどの場合、高度な数学の知識を必要とされないでしょう。
ただし、高校で習う「組み合わせ」の知識があるとテストパターンを洗い出す時に漏れにくくなりますので「組み合わせ」だけは勉強しておくことをオススメします。
英語
英語も数学と同様に義務教育レベルの知識があれば十分です。
大抵の場合、プログラミングは英語で書きますが数が基本的な構文で使う単語は限られているのでやっているうちに覚えます。
プログラマーが自由に決める「変数名」や「メソッド名」と言われるものは適切な英単語を選ぶ必要がありますが、Google翻訳を使えばほとんど解決しますので高度な英語が出来る必要ありません。
強いて言うならば、英語のスキルが高いと就職や転職の際に外資系の会社に挑戦できます。外資系の会社は日本の会社に比べて給料が高い傾向がありますので、外資系を狙うなら英語はできた方がよいでしょう。
適性テストは重要か?
就職・転職の試験で行われる適正テストはさほど重要ではありません。
適正テストの目的は極端に向いていない人を除外するためのものです。
論理的思考や性格を問われるものではありますが、プログラミングの向き不向きがズバリ分かるものではなく参考程度にしかなりません。

とはいえ、就職・転職で適正試験を受ける場合は対策をしておきましょう。意外に難しい問題も出てきますので、全くできないという状況だけは避けるべきです。
体験するのが一番の近道
ここまで向いている人、向いていない人の特徴を説明してきましたが、少しでもプログラミングに興味があるならば体験してみましょう。
あなた自身が体験することが向き不向きを判断する一番の近道です。
まとめ:向き不向きの傾向はあるが、実際に体験してから判断すべし
いくつか向いている人、向いていない人の特徴を挙げましたが最も重要な点は、
「興味関心があること」
これにつきます。
ここまで本記事を読んでいるあなたはプログラミングやコンピュータに多少なりとも興味があるはず。
つまり、どちらかというとあなたは向いている方です。
ただ、本当に向いているかどうかは、実際に自分でプログラムを作って体験してみるのが一番です。
作ってみて少しでも「面白い!」と感じられるならば、あなたは向いているでしょう。
次の記事では実際にプログラミングを体験する方法についてご紹介しますので、ぜひ見てみてくださいね!
-
-
プログラミングを体験してみよう【20代未経験者向け】
プログラミングを体験してみたい 自分がプログラミングに向いているか知りたい この記事ではプログラミング未経験のあなたへプログラミングの体験方法をお伝えします。 体験すること ...
続きを見る
すぐに就職・転職したいあなたへ
UZUZ(ウズウズ)では18~29歳までの既卒・第二新卒・フリーター、ニートの方を対象に特化した就職・転職サポートを行っています。
無料で相談できますので早く就職・転職したい!という方は活用してみてください。