「エンジニアが楽しく働くことが、良いサービスを作り出す」株式会社ビザスク 花村 創史氏
GEEK JOB編集部
数学が苦手だとプログラマーは向いていないと思っていませんか?プログラマーになるのに数学は必須ではありません。たしかに数学の知識があればプログラミングの幅が広がりますが、数学が苦手でもプログラマーになることはできます。
「プログラマーは数学が得意な人しかなれない」、あなたはこんな風に思い込んでいませんか?
結論から言えば、数学が苦手な人でもプログラマーになることはできます。
確かに、数学が得意な人はプログラマーに向いている部分がありますが、その理由は「数学ができるから」ではありません。
この記事の中では、プログラマーに数学は必須ではないこと、数学が得意ではないプログラマーがいること、プログラミングのスキルはどのように身につけるのか、について紹介しています。
この記事を読み終える頃には、数学が苦手でもプログラマーになれる理由がわかり、プログラミングをどのように学習すればよいかが分かります。
目次
プログラマーに興味はあるけど、数学に対して苦手意識があるので、理系職であるプログラマー向いていないんじゃないかと思っていませんか?
実際は、数学が苦手でもプログラマーになることはできます。
当社が運営する「GEEK JOB」では、毎年多くの方を未経験からエンジニアとして輩出していますが、そのほとんどは文系出身の方です。
本項目では、数学が苦手でもプログラマーになることができる理由について紹介します。
基本的なプログラミングに必要な数学の知識としては、四則演算と少数が扱えれば問題ありません。
四則演算は、足し算・引き算・掛け算・割り算の4つの基本的な計算です。
プログラムは定められた「命令」の組み合わせによって、コンピュータに命令するための言語です。
そのため、プログラマーに必要なのは数学的な知識よりも、定められた「命令」を論理的に組み合わせる力、「論理的な思考」です。
数学が得意な人は、数学の特性から論理的な思考も得意な傾向にあります。
そのため、数学が得意な人=論理的な思考が得意な人=プログラマーに向いている、と言われているわけですね。
実際のところ、計算問題がすばやく解けても論理的な思考が苦手な方はいますし、公式を覚えていなくても論理的な思考ができる人はいます。
数学が苦手でも、論理的な思考が苦手であるとは限りません。
数学とプログラミングは別物であり、プログラミングを学ぶ中で論理的な思考も培われていくため、数学が苦手だからといって、プログラマーになることを諦めることはありません。
プログラマーになるために数学の知識は必須ではありませんが、プログラミングで作るものによっては、数学的な知識が必要となります。
数学の知識が必要な分野としては、ゲーム・AI(人工知能)・機械学習・統計処理などが挙げられます。
ゲームのプログラミングでは、キャラクターの動きなどを実現するために物理演算が必要になるので、数学的な知見が無いとコンピューターに正しい命令を出すのは難しいでしょう。
AI(人工知能)や機械学習では、予測値の誤差を減らすための微分・積分や、大量のデータを行列で扱うための線形代数を使用します。
統計処理は積分・確率・数列といったさまざまな数学の知識が必要です。
プログラマーと一言でいっても分野はさまざまで、それぞれの分野によって求められる能力も違います。
フロントエンドと呼ばれるWebサイトの表側をメインに扱う場合は、数学的な知識は殆ど必要ありません。
それよりはデザインやユーザーインターフェースといった部分の知識が重要になってきます。
数学が苦手でも問題がない分野もあれば、数学が得意でないと難しい分野もあるということですね。
数学が苦手でもプログラマーになることはできますが、数学の知識が付けばさまざまな分野のプログラミングができるようになります。
アルゴリズムと呼ばれる数学の論理を理解すれば、よりきれいで効率のいいプログラムを組むことができます。
最近はテレビのニュースなどでも、AI(人工知能)に関する話題を見聞きする機会が増えました。
同様に機械学習もAI(人工知能)に関する技術として、話題に上がることが多いです。
話題となる技術や、人気のある技術に関する知識がある人は、とても重宝されます。
プログラマーになるだけであれば数学の知識は必要ありませんが、「優秀なプログラマー」を目指すのであれば、理解しておくべき論理はたくさんあります。
けれど絶望しないでください。
プログラマーにとって役立つ論理は、あなたが苦手だと感じていた計算問題とは全く別のものです。
アルゴリズムも、計算方法ではなく「物事を最も効率よく終わらせるための考え方」という論理です。
あなたが数学は苦手だと思っているのは、学校の授業では半ば強制的に教わるため、理解が追いつかずに苦手意識を持ってしまったことが原因かもしれません。
プログラミングを通して、あなたの興味が湧いた分野に数学の知識が必要となった場合は、そこから学習しても遅くはないでしょう。
数学の知識を持つことは、プログラマーとしての幅を広げることにも繋がります。
数学が苦手でもプログラマーになれることを紹介しましたが、実際にプログラマーとして働いている人は本当に数学が得意ではないのでしょうか。
数学が得意といえば、理系の人を思い浮かべますが、プログラマーの中には文系出身の人もいます。
実はプログラマーの全体の約3割は文系出身のプログラマーです。
IT企業技術者の最終学歴における専攻についてのデータでは、20代技術者の最終学歴が理系以外の割合が41%程度、全体の年代では37%程度と約3割以上が文系の出身者であるというデータがでています。
出展:情報処理推進機構(IPA)「IT人材白書2017」
https://www.ipa.go.jp/files/000059086.pdf
数学が得意な人しかプログラマーに向かないのであれば、文系出身のプログラマーは3割もいるのはおかしいですよね。
このことからも、数学が得意でない人もプログラマーになっていることがわかります。
プログラマーはひたすらプログラムのコードを書くだけの仕事ではありません。
メインの仕事はもちろんコーディングですが、プログラムのコードは書いたら終わりということはなく、システム要件の追加などでバージョンアップすることが考えられますよね。
その際に、「このプログラムは何をしているのか」、「どのようにほかのプログラムと連携しているのか」といった、プログラムの存在意義をドキュメント化しておかなければなりません。
作成したプログラムは、あなた以外の人が修正することも考えられます。
プログラミングが得意でも、他の人に分かりやすく伝えるためのドキュメント化が苦手な人もいます。
大規模なプログラムほど、ドキュメントの存在が大切になりますので、わかりやい文章を書ける人はとても重宝されます。
プログラマーにとって、数学の知識よりも必要なスキルがあります。
たとえ数学が苦手でも、それらのスキルを身につけることができればプログラマーになれる確率はぐっと上がります。
これからプログラマーになりたいと思っているあなたは、次に挙げるスキルを身につけるように意識しましょう。
紹介するスキルについて、あなたが現在足りていないとしても、プログラマーになれないわけではありません。
実際にプログラミングを行う中で培われるものも多いため、安心してくださいね。
プログラマー、ひいてはITのエンジニアとして生きていく上で最も必要なスキルです。
プログラミングはコンピュータに命令するものであり、コンピュータは命令されたとおりにしか動作しません。
コンピュータをあなたの思う通りに動かしたいのであれば、論理的な思考はかかせません。
論理的な思考とは「AはBである。BはCである。すなわちCはAである」といった、因果関係を整理し順序立てて考えることです。
たとえば、「冬になるとアイスが食べたくなる」という説明があった場合、「冬になる」と「アイスが食べたくなる」はなんの関連性もなく、論理が飛躍しています。
行間を読まずに記載すれば、以下のようになるでしょう。
「冬になると寒いので暖房をつける」
「暖房をつけると温かいを通り越して暑くなる」
「暑くなると冷たいアイスが食べたくなる」
「だから、冬になるとアイスが食べたくなる」
人間であれば、空気を読む・行間を読むといったことができますが、コンピュータはできません。
論理的な思考は、コードを書くときだけではなく、エラーが発生した場合にも問題箇所の特定に活かせます。
プログラマーは一人で黙々とプログラミングをしているイメージはありませんか?
実際には、一人でプログラミングをすることはあまりなく、チームを組んで仕事をすることがほとんどです。
複数人で進捗を管理しながらプログラミングを進めるため、コミュニケーション能力も必要になります。
また、プログラミングで参考とする文献は日本語だけとは限らず、英語のマニュアルや海外サイトを参考にしなければならないことも多いです。
そのため、英語を読んで理解するスキルが必要となります。
現在では、Google翻訳を始めとする翻訳サービスも多いため、完璧に英語を読める必要はありません。
英語に対する苦手意識を持たないようにできれば良いでしょう。
プログラミングは、バグ(エラー)との戦いです。
どんなにすごいプログラマーでも、必ずバグに遭遇します。
どうしてバグが出るのか、地道にコードを追って原因を追求する必要があるため、忍耐力が必要です。
また、IT業界は次々と技術革新されていく世界なので、常に新しい技術を追い続けなければなりません。
プログラミングのスキルを身に着けても、そこで満足してスキルの向上を怠ることのないようにしましょう。
常に新しいスキルを身につけるために知的好奇心を持って、学習を続けていくことはとても忍耐力を求められますが、あなたが一人前のプログラマーになるためには必要なことです。
プログラマーにとって、数学以外のスキルを身につけることの重要性を紹介しましたが、ここではプログラミングのスキルを身につけるための方法を紹介します。
先に紹介したスキルは、プログラミングを続ける中で培われることも多く、プログラマーとして最も伸ばすべきスキルがプログラミングのスキルです。
アルゴリズムとは、問題を解くための手順を定められた形に表したもの、考え方です。
代表的なものとしては、順序を並べ替える「ソート」のアルゴリズムや、検索を行う「線形探索」のアルゴリズムがあります。
極端な話をすると、プログラムはコピー&ペーストのみでも作成することが可能です。
インターネット上には多くのサンプルコードが存在しているため、あなたが実現したいプログラムのコードをコピー&ペーストで作成できます。
ただし、コピー&ペーストしたコードにはどのような意味があり、なぜ動くのかということを理解していなければプログラミングのスキルが向上したとは言えません。
アルゴリズムを理解することは、コードの理解に繋がり、論理的思考力の向上も見込めます。
プログラミングは自分でイチから作ることはあまりなく、他人が書いたコードを読み解いて修正することも多いものです。
プログラムのコードを読み解くためにも、アルゴリズムの理解が必要となることが多いでしょう。
プログラミングはどれだけ学習しても、実際に自分の手でコードを書かないと、なかなか身につきません。
コードを書いて想定どおりに動くことや、エラーに対する対応を経験することがプログラミングスキル向上の一番の近道です。
あなたは「量質転化の法則」という言葉がある通り、一定の「量」をこなせば「質」を上げることにも繋がります。
特に、どうすれば効率的かがわからない物事の初めには、とにかく量をこなしていくことが最短ルートであることもしばしばあります。
プログラミングに関しても、はじめはわからないことが多く、難しいと思うことも多いため、なかなか手を動かすことができない場合もあるでしょう。
それでも、とにかく手を動かして数多くのコードを書くことで、量が質に転化して気づいたときにはプログラミングのスキルが向上しているものです。
しかし、初心者のころは「たくさんプログラミングをしろ」と言われても、何をしていいかわかりませんよね?
その場合には、プログラミングの学習サイトで課題を消化したり、スクールに通って学びながら課題を消化してっくことで、数多くのコードを書く機会を得られます。
プログラミングのスキルを身につけるためには、数多くのコードを書くことが一番の近道と紹介しました。
とはいえ、いきなりコードを書き始める人は多くないため、一般的に初心者がプログラミグングを身につける場合、学習サイトを使うかスクールに通うかという2択になるでしょう。
それぞれにメリットがあるため、あなたの状況によって使い分けると良いでしょう。
ここでは、それぞれのメリットについてご紹介します。
オンラインの学習サイトでは、パソコンさえあれば、いつでもどこでも学習が行えるため、自分のペースで進められる点がメリットです。
最近の学習サイトは無料で受講できるものも多いため、とりあえずプログラミングに触れてみたい場合におすすめします。
実際にプログラミングを学習してみると、数学的な知識はほとんど必要ないこともわかりますよ。
学習サイトはたくさんありますが、「Progate」、「Paiza」、「ドットインストール」などがおすすめです。
ProgateとPaizaは、開発環境を用意する必要がなく、すぐに学習を始めることができます。
ドットインストールは、開発環境を自前で用意しなければなりませんが、使用したい言語が決まっていない場合でも、目的別に講座が用意されています。
気軽に初められるものが多いので、スクールに通うことを検討している方も、通う前に少し触ってみることをおすすめします。
本気でプログラマーを目指すのであれば、スクールは非常におすすめです。
スクールには専門の講師がいるため、初心者がつまずきやすい場面でも丁寧に教わることができます。
プログラミングの初期学習にかかる時間の殆どは躓いている時間だと言われているので、ここを短縮できるのは大きなメリットですね。
あなたが一人で学習を進めることに不安がある場合も、スクールであれば仲間もできるし、途中で挫折する可能性も低くなるため、とてもおすすめです。
GEEK JOBでは、完全未経験からプログラマーやエンジニアを目指す方へ向けて、プログラミング学習と就職支援を無料で行っています。
スクール入学前に一日体験もできるので、プログラミングに興味があれば一度遊びに来てみてください。