ki-ki-blog Written by ⚽kaz±

プログラミングに数学は必要?:用途次第【コミュ力、国語の方が必須】

CODE Programming

プログラミングに興味があるが、プログラミングって数学が必要なの?
なんかプログラミングって理系なイメージがあるし。
自分は文系だし、数学が苦手だからプログラミングをするのは無理なのかなぁ?
現役のエンジニアに話を聞いてみたい。

今回はこのような悩みについて解説いたします。

これを書いた自分はこんな人です文系大学卒業後、組み込みエンジニア職に従事。
ソフトウェアの中でも、割と理系の知識が求められる業界だが、文系卒、数学が大の苦手なじぶんでも、業界ピラミッドの1次受け企業にて日々開発できている。また、プライベートではWebプログラミングを行っている。

この記事を読む利点プログラミングに数学が必要か否かは、作るシステムによって決まることを理解することで、数学が苦手でもエンジニアになれる安心感をもて、プログラミング学習を始めるきっかけをつかむことができます。

プログラミングに数学が必要かは、作るシステムによって異なります

プログラミングに数学が必要か否かは、あなたがこれから作ろうとしたり、携わるシステムによって異なります。

なぜなら、プログラミングが必要な分野は複数あり、その分野に応じて数学の要否が異なるからです。

Web系プログラミングの世界なら、数学は必ずしも必要なし

例えば、Web系プログラミングの世界なら、数学は必ずしも必要ないです。

なぜなら、画面遷移やデータベースといった処理が中心であるからです。
※もちろん、作りたいWebアプリによっては数学は必要となりますが。

もう少しこれを深堀りしていくと、

  • Webアプリ系:基本必要なし
  • 組み込みシステム系:わりと必要
  • 科学技術系:必要
  • ゲーム系:必要

こんな感じです。

このように、プログラミングといっても、言語の数はたくさんありますし、それぞれの言語の用途も異なります。
そして、用途に応じて数学の要否も異なります。

なので、例えばWeb系プログラミングの世界なら、数学は必ずしも必要ないですし、それにより、プログラミングには数学は必ずしも必要ないと言えるのです。

なお、プログラミング言語については、こちらで解説しております
>>【初心者に告ぐ】勉強するプログラミング言語はこう見つけよう

とはいえ、数学ができるとプログラミングの仕事に有利です

プログラミングをやる上で、数学は必ずしも必要ないことを解説しましたが、数学ができるとプログラミングの仕事に有利です。

なぜなら、数学的な思考を使うことが多いからです。

例えば、以下のような場合です。

  • ある事象において、故障率はどのくらいなのか
  • すべての要件の組み合わせ数はどのくらいあるのか
  • 結果を数値で示す必要がある場面

実際は、数学というよりは算数レベルのものもありますが、ここで言いたいのは、学校で習った算数や数学の知識を使って、ある値を求める機会があるということです。

それは、Webプログラミングの世界でも存在することがあります。

先ほど解説した通り、Webプログラミングの世界は数学が必要となることは基本ないのですが、例えば、「テストの網羅性を証明する際、要件の組み合わせでどれだけテストできているか」などといったときに、ちょっとですが数学的な知識が必要となります。

こんな感じで、たとえ数学は基本不要なプログラミング言語でも、開発の流れの中で数学的な知識が必要となることがありますので、数学ができるとプログラミングの仕事に有利なのです。

文系で数学苦手でも、数学が必要な分野でプログラミング可能です

文系でも、数学が必要な分野でプログラミングの仕事をすることは可能です。

なぜなら、開発の仕事は、プログラミングだけでないからです。

開発業務ってどういうものか?【決める、作る、確かめる】です

ここで、開発業務がどのようなものかを簡単に説明すると、大きく以下の3つに分類されます。

  • 決める:やりたいことを具現化する
  • 作る:それを実現するためにコードを書く
  • 確かめる:作ったコード問題ないかを確かめる

大体の目安ですが、

  • 入社後3年目位までのエンジニアは、作る、確かめるが中心
  • それ以降のエンジニアは、決める形の業務をやり、マネジメント業務も行う

こんな感じです。

数学が必要なのは主に決める系で、それ以外は必須ではないです

少し乱暴な言い方になりますが、

  • 決める系:やりたい内容を顧客をすり合わせ、顧客の思いを明確にする
  • 作る系:仕様通りに作る
  • 確かめる系:仕様通りとなっていることを確認する

こうなりますので、たとえ仕様で数学的な要素が盛り込まれていても、要は仕様通りに作り、確認できていればよい場合もあるのです。

なので、

  • ある数値を算出するロジックや式が、なぜそうなっているかはわからないが、仕様に書かれた通りにコード実装する
  • 仕様に書かれた通りにコード実装されているかをテストにより確認する

このようなことがあるため、数学が必要なのは主に決める系で、それ以外は必須ではないです。

すなわち、文系で数学苦手でも、数学が必要な分野でプログラミング可能といえるのです。

補足細かく言うと、作る系でも確かめる系でも、

  • 書かれている仕様が本当に正しいのか:作る系で確認後にコード実装
  • 書かれている仕様の意味は何なのか:確かめる系で、テストの際に確認

こんな感じで作業する場合は、その仕様の理解、即ち数学を知っていないとキビシイ場合があります。

プログラミングの仕事に必要な能力は?【コミュ力、国語です】

これまで、プログラミングに数学は必ずしも必要なく、要否は分野により異なることを解説しました。

じゃあ、プログラミングに必要な能力は何なのかということになりますが、それはコミュニケーション能力と国語です。

そう考える理由は以下です。

  • プログラミングというか、開発の仕事は、社内外での折衝により進められていくから
  • ドキュメントやQ&Aなど、文章でモノゴトを相手に伝える機会が多いから

開発の仕事は、社内外での折衝により進められていきます

エンジニアやプログラマーを目指す場合、ついプログラミングが仕事の中心だと思ってしまいがちですが、実際はそうでもないです。

と、いうのも、

  • プログラミングやテストなど、手を動かすまでには、仕様のすり合わせが必要だから
  • プログラミングやテストにより出来上がった成果物(コード自体やテスト結果)は、他者にチェックしてもらうのが通例であるから

以下で具体敵に解説します。

仕様整合は打ち合わせの連続プログラミングやテストといった、具体的な開発作業をするには、仕様書が必要となりますが、仕様書ができるまでに、以下のステップを踏みます。

  • 顧客整合:顧客が実現したい内容を顧客折衝にて具現化
  • 仕様整合:顧客要求を実現すべく仕様を社内打ち合わせにて具現化

このように、社内外での折衝が必要となるため、コミュニケーション能力が必要となるのです。

開発の成果物はレビューにて確認社内外折衝の末に、仕様書が出来上がり、それに沿って設計、プログラミング、テストなど、実際の開発業務をしますが、そこで作られたモノ、即ち開発の成果物は、「作ってそのまま」とはなりません。

言うまでもなく、だれかが何かしたらの形でそれをチェックしないと、おかしなところがあっても、だれも気付かないままそれが顧客のところに届いてしまう恐れがあるので。

そして、チェックはレビューという形で、会議形式で行われることが多いです。

このように、開発作業に対しても、会議形式でのチェックを行うことがあるため、コミュニケーション能力が必要となるのです。

ドキュメントやQ&Aなど、文章でモノゴトを相手に伝える機会が多い

エンジニアやプログラマーになると、コミュニケーションの機会が多いことを解説しましたが、同じくらい、ドキュメントやQ&Aなど、文章でモノゴトを相手に伝える機会が多いです。

そこで必要なのが、国語力となります。

これは何も、開発に関わらず言えることなのですが、

  • わかりにくい文章
  • 誤解を招く文章
  • 意味がわからない文章

ってよくありますよね。
そして、開発現場においては、

  • わかりにくい文章:重要な仕様の内容が伝わらないことで、抜け漏れが発生する恐れあり
  • 誤解を招く文章:仕様誤解釈により、とんちんかんなコードを組んでしまう
  • 意味がわからない文章:内容が理解されないことで最悪放置されてしまう

こんな感じで、文章の書き方によってバグや不具合が発生しまう恐れがあります。

なので、プログラミングには、コミュニケーション能力、国語力が必要となるのです。

じゃあ、肝心なプログラミング能力はどう身に着けたらいいのか?

ここまでかくと、

「プログラミングの仕事には、コミュニケーション力や国語力が必要であることはわかったが、じゃあ肝心なプログラミング能力はどう身に着ければいいんだ?」
と、思う人がいるかもしれません。

プログラミング能力については、スクールを利用するのが手っとり早いです。

てっとり早くプログラミング技術をつけるならスクールもあり

プログラミング技術は、スクールを利用することで爆速で身に着けることができます。

なぜなら、初心者にありがちな、「わからないことがあるけど聞く人がいない・・・」を回避できるし、カリキュラムがややスパルタ的に組まれているスクールが多く、否が応でもプログラミングをやらざるを得ない環境だからです。

スクールについてはこちらで解説しております。

注意:独学に注意プログラミング初心者で、技術をつけるべく、書籍を購入して独学をしようとするのは危険です。

なぜなら、わからないことを多く、聞ける人もいなくて挫折する可能性が高いからです。

そのあたりについては、こちらでも解説しております。
>>【大体これ!】プログラミングで挫折する人ってこんな人【3つある】

あらかじめ技術をつけておいた上で、それに加えてコミュニケーション力、国語力があるともう最強です。

なので、プログラミング技術もぜひつけておきましょう。

今回は以上です。