こんにちは、迫佑樹です。
今日は「エンジニアに資格は必要か?」というテーマで話していきたいと思います。
目次
資格は不要だが最低限の知識は必須
「エンジニアになりたい」という人から、よく資格についての質問を受けることがあります。
- 基本情報技術者試験
- 応用情報技術者試験
など結構色々あるんですが、僕の回答としては「資格は別に要らない」といった回答になります。
ただ注釈がありまして、基本情報技術者試験や応用情報技術者試験といった資格は必要ないんですが、その中で問われている、
- セキュリティ
- データベース
- ネットワーク
- アルゴリズム
このへんの基礎的な知識やスキルは、持っておくに越したことはありません。
というか最低限これくらいの知識がないと、実際エンジニアとして活躍していくのは厳しいと思います。
なんでそういう結論に至ったかというのを、今回はお話していきますね。
【僕の経験談】資格を取ったからってアプリを作れるようにはならなかった
信頼性担保のために言いますと、僕も資格は持っています。
持っていないからディスってるとかじゃなくて、僕も実際持ってるんですよ。
- 基本情報技術者試験
- 応用情報技術者試験
両方持っています。大学1年生の時に取得しました。
大前提として「実務経験の無い大学1年生でも取れる資格である」ということは理解しておいてください。
僕はエンジニアになりたかったんですよ。
- プログラミングできるってかっこいい
- 自分でアプリ作れたら良いな
- エンジニアとして仕事とってみたいな
という思いがあって「じゃあ、資格取ってみるか」みたいな。
他の職業だったら資格がないと働けない職業もあるので、「仕事するなら普通は資格とるのかな?」というふうに考えて、資格を取りました。
- 大学1年生の春⇒基本情報技術者試験を受けて合格
- 大学1年生の秋⇒応用情報技術者試験を受けて合格
高校生の時も試験を受けたんですが、その時はコードも書かず資格勉強だけしていて、普通に落ちてしまいました。
大学生になって資格を取って「よし、これでエンジニアか!」と思って実際アプリを作れるようになったかと言うと、資格試験の情報だけじゃアプリなんか全然作れないんですよ。アプリもWebサービスも。
実践しつつ知識を身につけていくのがベスト
資格を取るよりも、有料でも無料でもプログラミングを学んだほうが、絶対エンジニアとしてのステップアップが早いっていうのが僕の経験としてあるんですね。
「これからプログラミングを学んでエンジニアになりたい」って方は、資格取得を目標にするんじゃなくて、
- 実際に手を動かしてプログラミングをしてみる
- データベースを使ったWebアプリケーションを作ってみる
- セキュリティのリスクを考えた上でリスク対策してみる
とかですね、書籍を読めば書いてあります。
セキュリティのおすすめ本だと『徳丸浩のWebセキュリティ教室』とか。徳丸先生は他にもセキュリティ関連でいろんな本を出しています。
僕が読んだのは『安全なWebアプリケーションの作り方』っていう本です。
なので、
- 書籍を通して学んだり
- 実際にWebアプリケーションを作ってみてセキュリティ対策やデータベースを学んだり
- サーバーを組んでみてネットワークの勉強をしてみたり
こういうことをしていきながら、基本情報や応用情報の資格試験で扱う内容が実践を通して自然に身についているのがベストだと思います。
なので、資格試験のための勉強っていうのは極力避けて、実践を通して開発していった結果、資格試験で扱われている内容は簡単にできている状態をつくるのが良いかなと思います。
資格勉強には実際のアプリ開発でいらない知識も結構含まれている
ネットで「応用情報 過去問」とかで検索してもらったら分かると思うんですが、実際のWebアプリ開発に使わない知識も含まれているんですよね。
たとえば、過去問「応用情報技術者試験 平成30年春」を見てみると、ハフマン符号化に関する問題が出ています。
ハフマン符号化は、たしかに大学の情報の授業で習いました。
ただ、Webアプリ開発する時に使ったかって言うと1回も使ってないし、iPhoneアプリ開発でも1回も使っていません。
たぶんこういう知識って、大学で情報工学の研究とか、アカデミックな研究をする人には必須の知識だけど、普通にアプリ開発する人には要らない知識が結構含まれています。正直なところ。
実用的なところでは、
- データベース
- ネットワーク
- セキュリティ
に関するところは、実際開発する時にも役立つかなというものもあるんですが、とは言ってもほんとに基礎の基礎だったりします。
たとえば『ディープラーニングに関連が深いものはどれか?』という問題が、過去問「応用情報技術者試験 平成30年春」問1に出ています。
ただ、これも実際『ディープラーニングに関連が深いものはどれか?』って問いに正解するよりも、実際にPythonなりでコードを書いていったほうが、
- 楽しいし
- 役に立つし
- 後に残る
んですよね。
たしかに資格には合格するかも知れませんが、この問題に正解したところで実際使えるようになるかっていうとそうじゃありません。
なので、基本情報や応用情報で薄い知識を広くさーっと学ぶよりは、ちゃんと手を動かしてWebアプリを作ってみたほうが良いんじゃないかなと思います。
プログラミングを勉強した後に試験を受けたら普通に受かる
基本情報や応用情報って、過去問やってればだいたい受かります。
だから、プログラミング勉強して1〜2年後くらいに、過去問を1〜2周して試験に臨んでもらったら、合格点である6割は普通に取れると思います。
僕が試験を受けた時は7〜8割の点数を取れて合格できたので、そんなに難しい試験でもないです。
「合格率20%」とか言われているんですが、大学で強制的に受けさせられてる方とかも結構いると思うので、そんなに難易度が高い試験ではないとは個人的に思います。
エンジニアにしては、という話ですが。実務未経験・プログラミング未経験の人が受けると厳しいですが、そんなに難しいもんじゃありません。
だから、プログラミングを学ぶことを最優先にしつつ、資格取得はやらない。もしくは趣味程度でやりつつ、簡単に受かっちゃうのが良いんじゃないかなと思います。
今回のまとめ:資格勉強よりも実際に手を動かしながら学ぼう!
ということで今回は、よく聞かれる資格取得に関する質問に回答してみました。
これから資格取得したい人は、まあやってみればいいとは思いますが、それよりは有意義な時間の使い方として、「実際に手を動かしながらプログラミングを学ぶ」っていうことをやっていってもらえたらなと思います。