【間違ってる!】プログラマーに数学が不要な3つの理由

プログラマーの真実
この記事は約9分で読めます。

「プログラマーになるには、数学得意じゃないとダメなんでしょうねぇ・・・」こんな疑問を抱かれる方が時々います。

参考までにググってみたら、「数学は得意である必要はない」という意見が多いようですが、書かれている記事が憶測であったり、中には「数学はプログラマーに必須」みたいな記事もありました。

そこで、今回は、プログラマーに数学が必要か否かについて、開発現場の立場から私の意見を述べたいと思います。

理由1.数学を必要とする分野は、本当に少ない

ここで言う数学とは、中学校で習う方程式以上の知識と定義しましょう。

おそらく数パーセント程度ではないかと思います。

プログラマーとは、プログラムを作る職業であり、顧客が望むプログラムを作ることを生業としています。

じゃあ、顧客が望むプログラムの中で、数学が必要なものがどれだけあると思いますか?

少し極端かもしれませんが、たぶん数パーセント程度ではないかと思います。

プログラムが必要な業種、言い換えると何らかのシステム開発が必要な業界として、例えば通販などのECサイト、製造業で使う生産管理や在庫管理、物流業で使う配送管理や倉庫管理、畜産業、農林業、水産業、アパレル、通信、音楽業界の業務システムなど、数え上げたらきりがありませんが、これらの業界で数学が日常的に使われていると思いますか?

おおよそ、数学との縁は薄そうですよね。

無論、ゼロとは言いません。

でも、ほとんどの業界で数学が必要になるのは極めて稀なのも事実です。

数学の必要性は、作るもので決まる

顧客の要望をプログラムで実現するのがプログラマであり、顧客は自分の仕事が楽になったり効率が良くなることを望んでいるのです。

顧客が望むものが物理法則や数学を多用するものであれば、数学の知識は必須になります。

つまり、数学の必要性は「何を作るか」で決まってきて、裏を返せば「どの業界に入るか」によって決まってくると言えます。

数学が必要な業界って、あなたはいくつ挙げられますか?

私が思いつくのは、人工知能とか機械学習とかで分類や予測を行う、いわゆるAIの分野ですかね。

あと、構造力学とか物理学とかを多用するような機械の設計とかでしょうか。

でも、大学の教授でない限り、難しい数式を書いたり解いたりということは、まずありません。

というのは、多くの場合、それらを簡単に実現するようなパッケージソフトやツールなどが存在しているからです。

無論、そういうパッケージソフトやツールを作る業界に入ったら、数学は必須になりますので、そういう業界に入る方は、スキルを伸ばしておく事をお勧めします。

数学知識不要のパッケージやツール

プログラマにとっては少し寂しい話ですが、最近はプログラミングの仕事が減っています。

その理由はパッケージソフトやクラウドが普及しているからです。

パッケージソフトやクラウド上のアプリケーションを作る会社に就職した場合であっても、多くのソフトウェアは様々な設定で動作を変えられるようになっているため、最初にその設定の仕方をマスターし、その後顧客の仕様に合わせて設定を行うSE的な仕事に回されたりする場合もあります。

昔はスクラッチ開発(パッケージソフトを使わず、プログラマーが1からプログラムを作り上げる開発方法)が主流でしたが、今はパッケージソフトの利用が主流になってしまいました。

また、難しい数学的アルゴリズムが必要であったとしても、それをプログラムから簡単に呼び出して使えるようなツール製品も数多く発売されているので、ますます数学の知識が不要になっています。

自動車の設計が出来なくても運転できるのと同じ

自動車に例えると、数学は自動車の設計に相当します。

プログラミングは目的を達成するための手段でしかありませんから、自動車に例えると、プログラマーは運転手に相当します。

例えばタクシードライバーは全て自動車の設計スキルが必要なのでしょうか。

そんなことはないですよね。

タクシードライバーに必要なのは、道路交通法や標識の理解、運転技能、目的地までの行き方や交通事情の把握です。

自動車の設計に当たる部分は、専門的な技術者が担当していて、誰でも運転できるように自動車を作り出して、販売しているのです。

プログラミングの世界もこれと同じで、できるだけ分かりやすく万人に使える用に簡素化したパッケージやツールが売られています。

プログラム開発はこれらのパッケージやツールを活用することで、開発期間の短縮や給料が高い上級プログラマの削減を行い、開発コストを押さえて利益を確保しています。

なぜなら、システム開発のコストは、ほぼ人件費だからです。

つまり、プログラマーは、これらパッケージやツールを利用するだけの知識が必要なだけで、数学の知識はそれほど必要無いのです。

理由2.数学よりもっと大事なスキルがある

プログラマーにとっての数学は、限られた業種の中でしか活かせないものです。

しかし、プログラミング業界において、どこの会社に就職しても求められるスキルが4つあります。

それは、大きく分類すると「論理的思考スキル」「コミニュケーションスキル」「自己管理スキル」「業務スキル」の4つです。

論理的思考スキル

プログラムは、実現したい事に対して、その実現手順を論理的な観点から小さな要素に分割し、それら1つ1つの関係性を意識しながら組み立てていく作業です。

こう書くと、ロジックとかアルゴリズムとかを想像する方が多いかと思います。

その通りなのですが、アルゴリズムの中身や原理まで考えていくことは稀で、もっと大きな視点になります。

例えるなら、レゴブロックで家を作る場合、窓とかドアを壁のどの位置にハメるか、つまり家そのものの構造を考えてブロックをそれに合わせて組み上げていくというスキルは必要ですが、窓とかドアを作る必要がないのと同じです。

つまり、窓とかドアは、既に出来上がったものがあって、それを利用する方法や手順を知っていれば良いのです。

もしプログラムの中でデータの並べ替えをしたいと思った時、クイックソートやバブルソート、ヒープソートなどの手法を理解して、1から作るという事はしません。

そんなことをすると、時間が掛かり過ぎて採算が取れないからです。

どうするかというと、データ型に応じたソート機能の呼び出し方が分かればよいのです。

List型なら List.Sort() と記述するだけです。

でもどのタイミングでソートをすべきかは、前後の処理の流れを踏まえたうえで決めなければなりません。

この処理にはソートが必要で、それは List.Sort() を使って実現できて、この場所で呼び出せばうまくいく・・・・

という事を理論立てて考える力が、論理的思考スキルになります。

コミニュケーションスキル

プログラミングは1でするものではありません。

お客様がいて、仕様を取りまとめたりシステム設計をするSE(システムエンジニア)がいて、同僚のプログラマーが複数いることが普通です。

その中で、お互いにコミニュケーションを取りながら仕事を進めていきます。

これから作るプログラムの仕様を確認するため、お客様やSEと打ち合わせするでしょうし、分からない事があれば同僚のプログラマーに聞くでしょうし、朝や夕方の進捗会議で自分の作業状況を報告することも日常茶飯事です。

つまり、様々な人とコミニュケーションを図るためのスキルが必要なのです。

プログラマーは人と接触が少ない仕事だと誤解される方がいるかもしれませんが、決してそうではありません。

確かに、プログラミング中は黙々とモニターに向かって作業を進めますが、その作業を円滑に進める上で、関係する人々とコミニュケーションを取るシーンも多いです。

自己管理スキル

自己管理とは、決められた納期や品質を達成するために必要となる、自分を管理するためのスキルです。

当然、健康管理も入ってきますし、スケジュール管理や自分の仕事の調整管理も含まれます。

プログラミングは体力と気力(精神力)が勝負という部分があるので、これは本当に日頃から注意しなければなりません。

体調不良で休むことになると、納期に影響することや、他のメンバーの作業に影響を及ぼすことも少なくありません。

また、自分に割り当てられた作業がいつまでに終わるのかを考えてスケジュールを引いていくため、自分のスキルを的確に把握しておく必要がありますし、急に別作業を割り振られた場合、依頼相手と相談して自分の作業を調整するスキルも必要になります。

業務スキル

最後に、何といっても重要なのが業務スキルです。

そもそもプログラミングは顧客の希望や要望を叶えるために作るものなので、本来は顧客がプログラムを作るのが一番良いのです。

しかし、現実的にそんなことは出来ませんから、職業としてのプログラマーが存在します。

つまり、顧客の代わりにプログラムを作るわけですから、顧客がどのような業務をしていて、どんな問題や課題が存在しているかを知っておく必要があります。

また、どんな業務であっても、その中で常識となる考え方やルールが存在し、それは業界全体で共通の場合もあれば、その顧客特有のものでもあります。

そして、それを理解していなければ、設計書に書かれた内容から正しい意図を理解できなかったり、設計書に潜んでいるミスを見過ごすことに繋がります。

私も過去に会計関連のシステムを担当したことがありますが、顧客が使う用語や概念を理解するのに苦労しました。

それほど業務知識は重要なスキルでありながら、一足飛びで身に付くものではなく、長年の経験で身に付けていくものであるため、プログラマーにとっての業務知識は数学を遥かに凌ぐ価値があります。

理由3.ステップアップするほと数学が不要になる

さて、プログラマーとして入社した人は、いつまでもプログラマーなのでしょうか。

勿論、プログラミングが好きで一生プログラマーとして働くことを希望する人はいます。

しかし、収入を上げたいのであれば、より1段階上のSE(システムエンジニア)にステップアップすることになります。

会社にとっても、プログラマーよりSEの方が顧客に対してより高い単価で交渉できますので、将来はSEになってほしいと望んでいます。

つまり、プログラマーとして入社したとしても、いずれは人を取りまとめるプロジェクトリーダーやプロジェクトマネージャーなどのSEにステップアップすることになるため、採算管理やスケジュール管理、チーム運営などのスキルを磨く必要にせまられ、ますます数学から離れていく事に成ります。

まとめ

プログラマーに必要なスキルは、「論理的思考スキル」「コミニュケーションスキル」「自己管理スキル」「業務スキル」の4つであり、数学は「業務知識」=「数学」であると気のみ必要なスキルです。

実際のシステム開発現場においては、複雑な数式などを使う事は稀で、多くの場合はパッケージソフトやツールを使う事で解決が可能です。

数学の知識が無いからと言って、あまり心配する必要はありません。

数学の知識を活かせる場所の方が、極端に少ないのですから。

タイトルとURLをコピーしました