【近況】最近はTOEICと基本情報処理技術者試験の勉強をしています




最近、エンジニアに関する記事を書いていないなぁと自分でも思いますが、資格の勉強をしております。

とはいえ、新型コロナウイルスの猛威が落ち着かなければ中止になるかもしれないのが辛いです…。この日に向けて3〜4ヶ月間勉強してきたので、中止になったら予定が狂うのだけれど、自然のことだから仕方ないですね。

エンジニアをしていると「資格は意味があるか?」みたいなことをよく考えます。医者や弁護士とは違って、エンジニアは資格が無くても出来るので、資格ってどうなんだろうと思うことも多いです。

僕がなぜTOEICを受けるのかといえば、一定の点数をとれば会社の資格補助で数万円貰えるというのと、大学院の入試で使うから。もともと論文とかスラスラ読めるようになりたいと思っていたので、ちょうどいいキッカケでした。

一方で仕事に直結するのは基本情報処理技術者試験のほう。これは、基本という言葉がついているように、エンジニアとしての登竜門的存在で、ITパスポートの次に簡単な試験です。

ITエンジニアはポートフォリオや実績があれば転職で困ることは無さそうに思います。自分自身は転職をしたことがないので、聞いた話を元にした推測ですが。ただし、意味がないというわけではありません。

ポートフォリオや実績が無い人であれば情報系の資格は就職や転職でのアピールポイントになると思います。少なくとも、未経験からITエンジニアになろうと思っている人がいたとして、

  • エンジニアとして活躍したいです!頑張りたいです!と言っているだけの人
  • エンジニアとして活躍したいです!頑張りたいです!と言って資格を取得した人

の二人がいたら、後者のほうが実際に行動に起こしている点で評価されるでしょう。実際、基本情報処理技術者試験にエンジニア経験無しで合格するのは勉強量が随分必要な気がします。

特に、午後の問題ではアルゴリズムやプログラミングの問題がそれぞれ25点ずつという重い配点になっています。100点満点で60点取ると合格なので、アルゴリズムとプログラミングができないと受かることはまず出来ません。

ではすでにITエンジニアとして働いている人にとって、情報系の資格とはどのような意味を持つのでしょうか?ごく一部の自称エンジニアの詐欺師は「資格なんて使えない、現場でアウトプットして実力をつけよ」と言っているようですが、これは間違いだと思います。

実際に勉強して分かったことですが、現場でプログラミングしているだけでは知ることが出来ない広範囲な知識を身につけることが出来るのが、基本情報処理技術者試験です。

現場のウェブ開発では、フレームワークと呼ばれるものを利用して開発することが多いです。フレームワークとは、よく使う機能を簡単なコードで実現するための道具で、Ruby on RailsやCakePHPといったものが有名です。

フレームワークを使うと、短いコードでシステム実装できるのですが、その裏側にあるアルゴリズムがブラックボックスになってしまうので、フレームワークを使う方法しか知らないと細かいチューニングなど深い理解が必要な作業ができません。

いくら上手にスマホを使いこなしたとしても、故障したときは自分で何もできないのと同じです。深い理解が必要な仕事は高単価だし、素人には出来ないのでそこにエンジニアの価値が生まれます。

実際の仕事からしか学びませんというエンジニアは、フレームワークを効率よく使うことは出来るものの、その内部でどのような動作をしているかが分からないため、大量のデータが毎秒飛んでくるようなシビアなシステムチューニングが出来ないのです。

エンジニアはホワイトカラー、あるいはクリエイティブクラスだと思われている職業ですが、フレームワークという道具を効率よく使うことが出来るだけのエンジニアはブルーカラーと変わり無さそうです。

正直、フレームワークを使ってウェブをつくるのは、簡単です。フリーランスエンジニアは高単価とか言われていますが、フレームワークを使える「だけ」の人の市場価値など大したものにはなりません。

システムの動作機構をしっかりと理解して、コンピューターサイエンスの基礎を習得しているからこそ、シビアなチューニングなどができるようになります。こういった基礎の部分は一朝一夕で身につかないので「市場価値の高いエンジニア」となります。

少し話が脱線しましたが、ITエンジニアが「基本情報処理技術者」の資格を持つことで転職に役に立つのかは分かりません(実体験がないので)。ただ、この資格を身につける過程でコンピューターサイエンスの基礎を知ることが出来るので、この基礎を元により高度なスキルを持ったエンジニアになるためのスタートラインに立てるという位置づけだと感じました。

フレームワークなどの表層的な便利ツールは、非常に頻繁に仕様が変わりますが、ハードウェアの仕組みやインフラ、アルゴリズムはそう大きく変わりません。だからこそ、基礎をしっかりと見に付けたエンジニアは他の技術をキャッチアップするのも早いです。

フレームワークしか知りません、だと表層的な部分しか見れないので、変更を追うのに必死になります。一方でコンピューターサイエンスの基礎があれば、内部の仕組みが頭の中に入っているので、変更内容をすぐに理解することが出来ます。

「受かってから言えよ」と思うような内容になってしまいましたが、4月以降試験頑張っていきたいと思います。