プログラミングとはプログラムを書くこと、素質の有無は関係ない(上位0.1%を除く)、文系でも可能というかむしろ有利です。
それぞれ説明していきます。

目次
プログラミングとは?
プログラムを書くことですが、プログラムはコンピュータがやることを順序立てて命令することです。
例えばコンビニのアルバイトに例えてみます。
- お客様がきた→いらっしゃいませと言う
- 品数が少なくなった→補充する
- レジにお客様が来た→会計する
- お金を渡された→計算してお釣りを返す
- お釣りを返したら→ありがとうございましたという
- お客様がきたら...
すごく当たり前のことを並べているだけのように見えますが、機械は全てこれらを正確に入力してあげないと動いてくれません。
品数が少なくなったら・・の部分も、品数が5個以下になったら10個になるまで補充するのように書く必要があります。
上記にように、もしXXXだったらYYYにするのような部分は条件分岐と言います。
次に会計が終わったら→ありがとうございましたという。の部分は順次処理です。
そして次のお客様が来たら・・・という繰り返しです。プログラミングは基本的に条件分岐、繰り返し、順次処理の3つを組み合わせることで動きます。
プログラミングで何ができる?
プログラミングは自分のアイデアや想像を形にできる手段です。どんなに優れた企画の持ち主でもすぐに形にできないとビジネスチャンスを逃してしまいますよね。
グローバル・日本いずれもIT企業やプログラマから社長になった人で溢れています。もちろん才能もありますが、共通しているのはアイデアをすぐに自分で形にすることが出来たからだと思います。
例えばFacebookも当時ハーバード大学の学生だったマークザッカーバーグが学生時代に自分でサーバを借りて一気に作り上げてしまったことからスタートしたことでも有名です。
世の中には無数のWebサービスやスマホアプリやゲームが存在します。それらは全てプログラミングによって作られています。
当たり前のように使っているFacebookやTwitterなどのWebサービスやLINEなどのアプリ、パズドラやモンストなどのスマホゲームもプログラミングの集合体です。
ドローンや自動運転車、AIも全てプログラミングが無ければ成り立ちません。
素質がないとプログラミングは出来ない?
なくても出来ます。シリコンバレーで働くような上位0.1%の人にはなれませんが、職業として選択して平均給与より多くを稼ぐことは充分すぎるくらい可能です。
唯一必要なポイントとしては「好きになれるかどうか」だと思っています。素質どうこうじゃなくてモノづくり好きな人は強いです。
遊びと仕事の境界線が無くなっているような人には、多少の素質では太刀打ちできません。
なのでまだプログラミングを始めていなくて、自分に向いているか分からない・・という人はまず始めてみましょう。ある程度やってみて向いてないなと思ったら止めたらいいです。
食べ物と一緒で食べてみないと食べられるかどうか、好きかどうかは分かりません。
仮にやってみて自分に向いていたり好きと思えたら?あなたは世の中の10%に入る幸運の持ち主だと自信を持って伝えることが出来ます。

プログラミングに向いている性格ってあるの?

いままで1000人以上のエンジニアと接してきましたが、性格でいうと負けず嫌い・短気の2つです。
よく辛抱強く対応できる人が向いているっていう人がいて、確かに考え方次第ではその通りなのですが、どちらかというと辞めない人であって向いているとは違うかなーと思ってます。
ちなみに短期=投げ出す・飽きっぽいではないのでご注意ください。短期な人ほどルーティンワークだったり無駄作業に我慢できないので怒りのパワーで作ってしまいますね。
あとスポーツの世界と同じで、競っている環境だったり優秀な人と一緒に仕事をすると一気に伸びます。そういった中で負けず嫌いの人であることがすごく重要です。
短気と負けず嫌いセットで性格的に分かりやすいことが多いので、この人向いているなーて人は伸びます。
そのため色々なサイトで「分からないことでも投げ出さずに集中して取り組める人」みたいな内容出てきますが、短気の方は気にしなくてもよいです。
文系でもプログラミング出来る?


文系はバランスがよく問題解決力が優れている
最近は文系プログラマの活躍が目覚ましいです。
エンジニアの世界ではなく、他職種も含めてだったりするのですが、現状明らかに不足しているのがビジネスを理解できるエンジニアです。
ビジネスを理解して、ある程度の調整ができて、幅広く対応できる・かつプログラミング力がある人が本当に貴重です。
とにかくアウトプットが優れてますね。何より作る前提で捉えず多角的な視点で物事を見て問題解決が出来ます。
ここでいう問題解決力とは、何かを作ることが決まっていてプログラミングでどう作るか?の解決ではなく、世の中の問題に対して最適な解決策を見出す力を指しています。
情報系一辺倒の人に比べるとアドバンテージあり
優秀なエンジニアなんだけど、コミュニケーションが・・って人が多いので、そういったエンジニアと比べると大きなアドバンテージです。あと英語も結構インプットする上で重要スキルなので、英語ある程度読めるよって人はプログラミングの世界でも頭一つ抜けることが出来ます。
私の中で平均年収として最も稼げるのはある程度プログラミングや設計を理解できる文系のゼネラリストです。
領域によっては数学も使わない
データサイエンティストや機械学習やる場合は数学の知識必要になってくるのですが、例えば一般的なフロントエンドエンジニアだったりバックエンド・DBやネットワーク・インフラなどのエンジニアには高度な数学スキルは求められません。
それよりも求められるのは柔軟性ですね。柔軟性が高いのも文系の特徴だと思ってますし、エンジニアの世界でも強みになる点だと考えています。
ただし最初はつらい
最初はめちゃくちゃツラいです。スタート時に明確な差がある上にどんどん置いて行かれるためプレッシャーがすさまじいです。
やはり初動やある程度書けるようになるまでの時間数は、圧倒的に理系や情報系の人が強いです。
ただ諦めずに粘り強く取り組んでいきましょう。上のほうで話している通り、長期的には文系にもチャンスが大いにあり逆転できる未来があります!
ちなみに止めて文系はプログラミングやめとけって人はだいたい最初の1,2年でリタイアした人が大半なので、苦しくても乗り切りましょう。

才能よりもやりぬく力
プログラミングに限った話ではないですが、学ぶ上で必要なのは才能やIQではなくやりぬく力です。
以下動画はプログラミングを始めて進める人に勧めている動画です。時間があれば見てみてください。
文系でも才能が例えなかったとしても「やり抜く力」を持っている人はプログラミングの世界でも強いです。
最後にプログラミングとは?
人を選ばず誰でも学べるコスパのよいスキルです。
こちらの記事でプログラミングの必要性について一から話しています。学ぶモチベーションも上がるので、興味が出てきたらぜひ参考にしてみてください。