
何年か前に何気なくブックオフで買った本だけど、1ページも開くことなく放置してたので、ようやく読んでみた。
「これだけはおさえておきたい 文系プログラマーの数学知識 基礎の基礎」(技術評論社)
読み終えた感想を先に一言で表現してしまうと。
「エンジニアにとって、絶対に陳腐化しない最強のライブラリは『数学』だなと再確認」
という事になるかな。
エンジニアをやっているとは言え、仕事上で「微分」や「積分」を使ったりすることは殆ど無く、言語仕様やアルゴリズムや諸所のフレームワークの知識等を常時仕入れて頭のなかで整理しておけば、それなりに「できるエンジニア」として見られるし、実際に開発は得意な方だと思っている(手前味噌)。
しかし、年々技術の進歩スピードが指数関数的に上がってきていて、このままいっちゃうとマジでシンギュラリティー(人工知能が人類の知能を超える地点)まで行っちゃうんじゃないか、とさえ思えるスピードを感じたりしているのも事実。
以前、「スーパーエンジニア」は、開発に関わることはなんでもできた。
インフラ周りもバックエンド開発もディスクトップアプリも、なんでも自在に開発していたんだよね。
でも、今では、それぞれの分野がそれぞれで猛スピードで進化しているから、たとえスーパーエンジニアでも全てを捉えるなんてことはもはや不可能な時代になっている。
元々サーバーサイドエンジニアで、Java C# Ruby Pythonでゴリゴリサーバー周りを開発し、ベータベースもインフラ構築もお手の物で仕事をしていた。
部署が変わって、スマホアプリ開発に2年ほど没頭し、スマホアプリ開発にも慣れてきたあたりで、部署替えで再びバックエンド開発にジョインすることに。
元々サーバーサイドの知識は豊富だったから余裕だろうと思ったら、2年経ったらチームメンバーの会話に全くついていけなくなっていた。
なんてことは、日常茶飯事。
ソフトウェア業界の進化スピードは異常に速いのは承知していても、分野がどんどん細分化されて、その細分化した先でさらにスピードを進化を続けるような「ねずみ算的な進化」は流石にもう追ってられない。
つまり、「今後さらに進化する。」ではなくて、「今後さらに進化スピードが上がる」という事態。
当然ながら、覚えた知識や経験は、どんどん陳腐化していく。(絶対的に避けられない)
今最先端を走っていて、イケイケな気分だったとしても、ほんの少し手を抜いたら、あっという間に陳腐化。
そうなってくると、エンジニアとして生きるためには、特定の技術や知識に固執するのではなく、「その場その場に即応する」というスキルが非常に重要になる。
で、そういう即応するスキルって何か、っていうと、最新のフレームワークの知識でも、最新の言語仕様の知識でも、クラウドの使い方でもCMSの使い方でもない。
もっとプリミティブな知識ってことになる。
結局のところ。
突き詰めていくと、エンジニアに取って、理工系の教養が陳腐化しない最強のスキルなわけ。
それが、数学だったり、物理だったり、電子工学だったり。
と、前置きが長くなったけど。
この本は、そういったエンジニアさんたちに、勝ち残るためにプリミティブな知識を付けておきましょうという意図で出版されている。
(物理版もある→これだけはおさえたい ゲームプログラムの物理の知識 基礎の基礎)
ちなみに、高校時代に大学受験科目の英・国・社だけ勉強して、数学と理科系はすべて捨ててたっていう「ド文系」な方にとっては、歯ごたえのある本かも知れない。
1次関数・2次関数、交点・中点
三角関数
行列、ベクトル
微分、積分
など、聞きたくもないような言葉がでてくるが、かなり上手に説明しているので、高校時代に比べてすんなりと理解できるんじゃないかな。
また、それぞれの数学が、プログラミングやソフトウェアの中でどのように使われているのか、数学とソフトウェアの関連もしっかりと触れてくれているので、文系の方だけでなく、理系の方でもエンジニア新人さんなどにはためになるかもしれない。
逆に、文系・理系問わず、数学は得意でした(仕事ではめっきり数学か離れているけど)って方にとっては、「読み物」のような感じでサラサラと読めて、軽い復習に良いです。
私個人的には、非常にサラッと読めて、懐かしさとともに、久々に数学熱に火を付けてくれる良い書籍だったかな。
業務で毎日数学つかってます、って方は全く不要。
日本は文系プログラマーさんって結構多いので、今後何年も業界で生きる最強スキルとして数学や物理の学習はオススメします。
結城先生の「数学ガール」集などに取り組もうかと思っている方は、その前に一読しておくといいかも。