
【まだ間に合う】新卒で未経験エンジニアになる君に、入社前にやっておいてほしいこと3選
こんにちは。なんと半年ぶりの投稿です。色々と書きたいことはありつつも日々の忙しさを言い訳にして投稿をサボっていました。
今回の記事では新卒、未経験でエンジニアになる方へ向けて
入社前にやっておいてほしいこと
を個人的な後悔と新卒の教育を任せられた経験から述べていこうと思います。
ちなみに私はWebエンジニアなのでWebブラウザで動くシステム、Webアプリケーションを作っています。
そのためインフラやAI、組み込みなどは専門外なのでご承知おきください。
とはいえ役にたつエッセンスはあるのでぜひ取り入れていただきたいです。
紹介するいずれの項目も4月入社であれば全然まだ間に合う範疇なのでぜひやってみてほしいなと思います。
1.基本的なWeb技術の仕組みを習得する。
私が新卒でエンジニアになって苦労したこと、色々あるのですが根本を辿ってみると
・そもそもメールってどうやって届いてるの?
・そもそもブラウザってなんで動いてるの?
・そもそもプログラムってどういう仕組みなの?
といったWEBやITの基礎の基礎の知識でした。
正直、こういった知識がなくてもエンジニアになれてしまうのが日本の社会の良さでもあり危うさでもあると思います。
ある程度のレベルより上を目指そうとしたり、外資系のIT企業で働こうとなるとそういった根本的な知識であったりコンピューターサイエンスの知識(学位も)が求められるのでプログラムを書くだけでなく、基本的なIT技術の歴史と知識を学ぶとおいおい楽になるかと思います。
ではどのように学ぶかという話ですが、私のおすすめは
ITパスポート合格 + 基本情報技術者試験のA科目合格レベル
です。基本情報技術者試験はA科目とB科目で構成されますが、A科目合格レベルの知識があれば問題ないと思います。
なぜこの組み合わせなのかをご説明します。
まずITパスポートですが言わずもがなIT全般の知識を手に入れることができます。データベースや配列、システム開発のフロー、法律などエンジニアとして仕事をする上で「最低限覚えておくべきだよね」という知識が載っているので新卒全員に研修期間に受けさせる、あるいは入社前に合格を義務付ける会社もあるぐらいです。
私も就活をしていてとある会社の説明会に行った時に入社までにITパスポートの取得を義務付けている、という話をされてめちゃくちゃビビりました。
その時はITパスポートとは何者なのかという知識が0だったのでなおさら怖かったのですが、大丈夫です。
ITパスポート試験はめちゃくちゃ簡単です。
とても頭が悪い私がこう言うぐらいなので相当簡単です。
事実合格率は約50%と資格試験の中ではかなり高い部類です。
また、後述する基本情報技術者試験とは違い、計算問題がほとんどなく暗記さえできれば誰でも得点が取れます。
そして次に基本情報技術者試験のA科目ですが、こちらはITパスポートよりもかなり専門的な内容になってきます。
ハードウェアやソフトウェアといったPCやその他デバイスを構成する要素の知識から、アルゴリズム、SQL、暗号化技術といった「これを知ってたらまぁ最低限できるエンジニアじゃないか?」ぐらいの知識が手に入ります。
こちらのA科目も基本的には暗記ではあるのですが、進数の計算や論理演算、CPUの性能計算など計算問題も半分ぐらいはある印象です。
とはいえ各々の計算方法はそこまで高度なものではなく、公式さえ知っていれば小中学生でもできそうなものばかりです。(三角関数とかは必要ありません)
ここでB科目について触れておきましょう。
私は
基本的なWeb技術の仕組みを習得する
ために
ITパスポート合格 + 基本情報技術者試験のA科目合格レベル
を目指すと良い、という話をしています。
ではなぜ基本情報技術者試験のうちB科目はいらないのか?という疑問が生まれると思うのですが、B科目は必要となる知識がプログラムに寄りすぎていて新卒が身につけるべき基本的な知識とは言えないと思いますし何より
プログラムに触っていないと結構キツい。。
と、私は思います。
まぁできるんだったらそれに越したことはないですけどね。
実際私の頭が悪すぎてそう思うだけかもしれません。私はエンジニアを1年やってある程度プログラムに慣れてきたので「あ〜なんとなくわかる〜」というノリで勉強できていますが、これを大学生で就活中にやれって言われたらさっぱり理解できないと思います。
ただ、結局基本情報のAを受けるのであればBもついでに勉強してみるといいと思います。それにA科目とB科目は対の試験であり、別々に受けることはできません。
B科目を捨てて受験料を払って基本情報技術者試験を受験するのは金銭的にもあまりよろしくないので、
ITパスポート試験は実際に受験して合格
+
基本情報技術者試験はA科目を勉強して過去問で6,7割解けるようになる
というのが良いと思います。
2.論理的思考を習得する。
プログラミングの世界は曖昧さが許されない世界です。全てがロジカルに構成され、どこかで不整合が出ればエラーになったり想定と違う挙動になったりします。
そのため論理的にアルゴリズムを構成する設計力や実装力が求められますし、テスト設計やバグの特定のためにも
どこでどのような状態になっているのか
をトレースする能力が必要です。
「なんとなくここでエラってそう〜」
という私のようなノリでやるとベテランが10分で終わるものを3時間ぐらいかけて探すことになったりします。
また会話にも論理的思考が求められます。
私が経験した具体例を話します。
ある時WEBアプリに備わっているボタンを複数回連続で押した時に、エラーになるということがありました。
私はまったく原因が分からなかったのですが、ベテランエンジニアが検証ツールでリクエストとレスポンスを見たところ、サーバーへのリクエストの結果がトークン不整合であるということが分かりました。
では入力値が正常なのにも関わらずトークンが不整合になるのはどういったパターンなのか?というのを探ったところ、
「ボタンを連打することによってトークンが上書きされ不整合が起きていた」
ことが分かりました。
このようにベテランエンジニアは
どのような処理を行なっているのか
処理の入力値、出力値はどうなっているのか
エラーになるパターンはどういったものか
そのエラーが起きる原因は何か
という順で論理的にエラー原因を導き出していました。
隣で見ているとパパパっとやっているのでそこまで深く考えているようには見えないのは経験の賜物といったところでしょうか。
では論理的思考を習得するにはどうすればいいか?という話ですが、
色々なアプローチがあると思います。
一番はやはり
実際にエンジニア業務をして試行錯誤したり、第三者からレビューを受ける
ことが一番成長が早いと思います。
学生ならエンジニアインターンに参加したり、内定が出ているのであればその会社に「内定者アルバイト」を申し込むのが良いです。
やはり先輩エンジニアがいる環境はかなり刺激になります。
内定者アルバイトについて詳しく書いた記事がありますので是非参考までに。
1人でトレーニングしたい!という場合には以下がおすすめです。
5Why分析
→問題、課題に対して「なぜ?」を繰り返すアプローチ。
例えば
例: ウェブアプリのページ読み込みが遅い問題
1回目の「なぜ?」
問題: ウェブアプリのページ読み込みが遅い。
なぜ?
→ サーバーのレスポンス時間が長いため。
2回目の「なぜ?」
なぜサーバーのレスポンス時間が長いのか?
→ データベースのクエリに時間がかかっているため。
3回目の「なぜ?」
なぜデータベースのクエリに時間がかかっているのか?
→ クエリがインデックスを使用していないため。
4回目の「なぜ?」
なぜクエリがインデックスを使用していないのか?
→ テーブル設計時にインデックスが設定されていなかったため。
5回目の「なぜ?」
なぜインデックスが設定されていなかったのか?
→ 開発時に大量のデータを扱うケースを想定していなかったため。
といった形で理由、原因を5階層にわたって深掘りしていく思考法です。
日常生活にも割と活かせるのでオススメです。
本を結構読むタイプだ、という方は
ロジカルシンキングについての本を読む
のもオススメです。しかし読むだけでなく、紹介されている手法について実際に問題、課題を設定して実践、アウトプットしてみることを忘れないでください。
私が読んで参考になったのは以下の本です。※アフィリンクじゃないよ
最後の本「解像度を上げる」はちょっと脇道に逸れた感はありますが、エンジニアの課題解決にとってはとても参考になる思考法だと感じましたので紹介しました。
「イシューかはじめよ」と「解像度を上げる」はちょっと難しめなのでノート片手に逐一立ち止まって考えながら読むべき本です。
最初は「名探偵コナンに学ぶ ロジカルシンキングの超基本」を読んで楽しみながら基本を抑えることをオススメします。
3.プログラムの基礎文法を習得する。
「新卒で未経験エンジニアになる君に、入社前にやっておいてほしいこと」
最後はやはり、
プログラムの基礎を学んでおく
ことです。
私は大学時代にWordpressでオリジナルテーマを作ったりWebサイトを作ったりしていたのですが、所詮その程度です。使う技術はマークアップがほとんどなので簡単な制御構文すら理解しなくても作れました。
そのため入社後の研修は本当にプログラムの意味の理解に時間を費やしてしまいました。
具体的には
foreachって何?
配列って何?どう操作するの?
SQLって何?
JavaScriptでどうやってHTMLを操作するの?
propって何?
と挙げ出したらキリがありません。
この辺の基本的な理解、操作は同じ領域にいる限りずーーーっと付き合うものなので根本的な構造の理解は早いうちにしておくべきです。
特に私のような理解が遅い人種は早めに苦労しておいて、研修を楽にしておきましょう。
ではどこでプログラム書いたらええねんという話なのですが、
HTML,CSS,JavaScriptのような構成であればオンラインエディターでもいいですし、PHPやPythonなどバックエンド側のプログラムを練習したいならDockerがオススメです。
また、とっかかりとしてProgateなどの教育ツールはやってもいいと思いますがそれだけだとかなり浅い内容にしか触れられないのでやはり自分で何か作ってみる体験をすることでプログラムに対する理解が深まると思います。
まとめ
今回の記事では「新卒で未経験エンジニアになる君に、入社前にやっておいてほしいこと」というテーマで身につけてほしい技能、思考を皮切りにその具体的な内容に触れました。
4月入社の方はまだ3ヶ月ほどと時間はたっぷりあるので、卒業研究の追い込みの方はそれが終わってから、もう卒業が決まっている方は卒業旅行など思い出作りの合間に取り組んでみてください。
何かわからないことがあればコメントにてお知らせください!