今回は実務未経験から新卒エンジニアとして内定を獲得したかふさんに、どのようにプログラミングを学習し、どのような戦略で就職活動を行ったのかについてインタビューを行いました。
- 新卒でソフトウェアエンジニアとして就職したい
- 実務未経験からエンジニアとして採用されたい
- 非情報系からエンジニアになりたい
そんな方にかふさんの成功体験をお伝えします。
かふさん
機械工学を専攻する大学生。インターンも実務経験もない状態からバックエンドエンジニアとして内定を複数獲得。
目次
新卒エンジニア内定を獲得を目指して、Recursionでコンピュータサイエンスを学習
――かふさん、インタビューをお受けいただいてありがとうございます。早速ですが、プログラミング経験の有無について教えていただけますか?
専攻は機械工学ですので、情報系の知識に関して大学ではほとんど学んでいません。教養としてVBAやCは触れたことがありましたが、プログラミングの勉強に関しては独学がメインです。
プログラミングの勉強を本格的に始めたのはちょうど大学3年生に上がるときです。
初めはProgateでHTML、CSS、Rubyなどを学習し、その後Railsチュートリアルという割と有名な教材をつかってWebアプリ開発の勉強をしました。またTechpitでLINEボットを作ったこともあります。
しかし、Railsというフレームワークはコマンド一つでたくさんのファイルが生成されるなど、よくわからないけど動いている状態で、このままじゃだめだなと思ったことを覚えています。
――Recursionを始められたのはどうしてですか?
コンピュータサイエンスちゃんねるでRecursionの存在を知りました。
Jeffryさんがある動画の中で「プログラミング初心者は、フレームワークから学ぶべきではない」ということをおっしゃっていて、それはまさに自分のことだと胸に刺さったからです。すぐにRecursionの無料で始められる部分からコンピュータサイエンスの学習を開始しました。
大学3年の9月頃だったので就職活動を意識し始める時期でした。この段階で実務未経験、インターン経験なしだったので、Recursionにフルコミットするべきか、とりあえず動くものを作ることに時間を割くべきかどうかは迷いました。なぜなら、新卒のエンジニア就活において、ポートフォリオが重視されるという情報をよく目にしていたからです。
しかし、長い目で見たときにコンピュータサイエンスの知識は必ず必要になるし、「つよつよエンジニア」になりたかったのでRecursionを使い倒すと決めました。
Recursionでコンピュータサイエンスの基礎を身につけたおかげで自力でコードがかける「実装力」が身についた
――Recursionをどのように利用されたのか教えていただけますか?
コンピュータサイエンスの基礎「初級」「中級」でPythonで学習した後、Javaでもう一周しました。「上級」以降はJavaを選択しています。コンピュータサイエンスプロジェクトに関してはJavaScript、TypeScriptを使いました。
どのコースもしっかりと時間をかけましたが、基本的なデータ構造の理解や、アルゴリズム問題を自力で問題を解くことを意識して学習しました。
コーディング問題はわからなくてもなるべく時間をかけて自分で解くようにし、本当にわからないときはTwitterでほかのユーザーの方の解答を参考にしました。
プログラムはデータと関数を組み合わせて表現するものなので、自分の望む出力が得られる関数をある程度すらすらかけるということは重要だと思います。そういった意味でも問題は自分で考えて解くということを大事にしていました。
――コンピュータサイエンスプロジェクトはどこまで進んでいますか?
コンピュータサイエンスプロジェクトは5のBlack Jackまで完成させました。Black Jackは就活の時に制作物として使わせていただきました。
制作物URL:https://github.com/fumi7649/Black-Jack
OOP(オブジェクト指向プログラミング)を学んだのでそれを活かすためにTypeScriptを使っています。MVCが依存しないように書こうとしましたが、結局かなり依存してしまいました。
技術面接の際にそのことについて指摘されましたが、「学生のうちに実務未経験でこれだけの量のコードを書いて形にしているのはすごい」と言っていただけました。
――Recursionを始める前と後の変化について、どのように感じますか?
自分でコードを書く力は圧倒的についたと思います。始める前は、自分でどのような処理を書けばいいかということやどのように考えればいいかがわかりませんでした。
Recursionでアルゴリズムやデータ構造に関する問題を解いたりすることで自分でコードを書く「実装力」がついたと思います。これからは、実装力だけでなくOOP(オブジェクト指向プログラミング)やデザインパターなどのコンピュータサイエンスの基礎知識を活かし、ソフトウェアを設計していく力も同時に養っていきたいと考えています。
実務未経験でも新卒エンジニアの就活に通用!
――新卒エンジニアを狙った就職活動についても教えてください。まずは、会社選びはどういう方針にしたのですか?
とりあえずエンジニアとしての実務開発経験が積めるところ、また管理職を目指すのではなくエンジニアとしてのキャリアに理解がある企業を求めて就職活動を行いました。
ITの就職活動となると基本的にSIerかWebかみたいな話になると思うのですが、どちらのビジネスモデルでも上記のことに理解のありそうな会社を選んでエントリーしました。
またWebの事業会社だとその会社で作っているサービスへの共感や、特定の業界にサービスを展開しているなら、その業界への興味などをかなり求められるように感じました。
自分はそういった特定のサービスや業界などへの関心は薄かったので、いろいろな業界にサービスを展開しているような企業にエントリーしました。面接でも素直に特定のサービスに興味があるわけではないということは話しました。
――何社応募して通過率はどれくらいでしたか?
就職活動を始めたころは、全て落ちていました。その理由は、少し興味があるくらいのところに何の対策もなくエントリーシートの提出や、1次面接に挑んでいたからです。
これは対策しないといけないなと思いなおし、就活エージェントなども利用して合計15〜20社くらい書類をエントリーしました。説明会だけの参加などを合わせるともっと多くなります。
就活エージェントを使うと入力したプロフィールを選考の書類として提出できたので、興味のあるところはとりあえず書類を出してから考えるようにしていました。書類は6〜7割くらいは通っていたように感じます。書類が通ると1次面接、2次面接は80%くらいで通過しました。
興味が薄い企業にはあまり時間を割かなかったので、そういった企業はやはり最終的に落とされることが多かったです。受かった企業はかなり志望度が高いところで対策に時間を割いていたところです。やはり熱意とか伝わるものなのかなと思いました。
――就職活動を始めてどれくらいでエンジニア内定が出ましたか?
大学3年生の12月ごろから説明会などには参加していましたが、実際に書類などを作るのはかなり遅かったです。4年生の3月頃からエントリーするようになりました。4月ごろからエントリーする量を増やし、5月と6月の上旬は面接をかなり行いました。
最初に内定をもらえたのは6月の中旬頃です。
企業のコーディング面接はRecursionのmediumレベルが解ければ大丈夫
――エンジニア選考の流れはどのように進みましたか?
企業によっては書類選考がなく1次面接からスタートすることもありましたが、基本的には
- 書類選考
- コーディングテスト(ない企業もある)
- 適性検査(ない企業もある)
- 2次面接
- 最終面接
という流れでした。
二次面接は技術面接として、プロジェクトのコードについて質問されることがありました。
――コーディング試験はどのような内容でしたか?
そんなに多くはなかったですが、いくつかコーディング試験を課している企業がありました。
自分で環境を用意して問題の答えだけを記入するものと、あとはTrackというサービスを使うものがあり、Trackではアルゴリズムの問題として関数の入出力を行う問題だけでなく、時間内にバグを探して修正する問題が出題されました。
他にはスタックを使うと解ける問題が出題されて、コードを書いて説明するというコーディング面接もありました。
以前どこかの記事で、「わからなくても自分の考えを口にするのが大事」というのを見たことがあったので、なるべく何を今考えているのかを話すようにしていました。考えるときは黙ってしまうので難しく、変な汗をかきました(笑)コーディング面接は計算量を減らすことができず、完ぺきに解けませんでしたが通過しました。
アルゴリズムの問題に関しては、Recursionの問題のmediumを解ければ問題ないと思います。ただ、Recursionでは標準入力を行わないのでそれだけはほかのサービスを利用して練習しておいた方がいいと思います。
実務未経験でもコンピュータサイエンスの学習について説明できたことがエンジニア内定に繋がった
――書類や面接でどのようにアピールしましたか?
自分はオリジナルの制作物を用意できていなかったので、何を課題に感じどうしてコンピュータサイエンスを学ぼうと思ったのかという過程や、具体的に学んだこと、学ぶ前と学んだあとでどう変わったのかなどを話せるようにしていました。
面接では、「その人がどのように自分自身の課題をとらえて行動したか」をエピソードから見られることが多いのでそういった意味では評価してくださる方もいました。
しかし、自分でオリジナルの制作物を作ったことがあるかどうかを大事にしている企業には、最終的に落とされることが多かったです。
コーディング面接を実施している企業ではコンピュータサイエンスの話の食いつきがよかったように感じます。
――採用面接では何を重視していたと思いますか?
企業によるとは思いますが、前提として結論から話すことや、基本的なコミュニケーションは必要だと思います。ただ、面接で求められるコミュニケーション能力は、誰にでもフレンドリーに接することができるということではなく、しっかりと受け答えができていれば問題ないと思います。
一定の技術力を求められる企業もありましたが、新卒就活に関してはポテンシャルを見られる部分が大きかったです。そういった意味でも自分が何でそれをやったのかなど、建設的に説明できることは重要だと思います。
――Recursionで学んだことをどのように伝えましたか?
基本的なデータ構造を具体的にあげ、アウトプットを意識して勉強していたということをありのまま話しました。またOOP(オブジェクト思考プログラミング)やデザインパターンはJavaを使って学んだので、なぜJavaを使ったのかなども話せるようにしていました。
――バックエンドエンジニアとして内定をもらえた一番の要因は何だと思いますか?
内定をいただいた企業の選考で、Trackというサービスを使ったコーディング試験があったのですが、その試験の解答のコードを見て「半年間でこれだけシンプルにかけるようになるのはすごい」ということを言っていただけました。
自分の中での手ごたえは、解けそうで解けなくて納得がいっていなかった問題だったので正直驚きました。
コーディングテスト後に、書いたコードのアピールポイントを書く場所があったのですが、解けなかった問題でも、どのように考えたのかなどの過程はしっかりと残すようにしていました。そういったことも評価につながったのかもしれません。
コードに関してこのような評価をいただけるようになれたのは、Recursionのおかげだと思います。
実務未経験者、新卒採用、Recursion初心者へのアドバイス
――実務未経験者が内定を取るためにやっておいた方が良いことは何でしょうか。アドバイスいただけますか?
自分は学生なので新卒就活に関してしかわかりませんが、もっと自己分析や企業分析など早めに勉強と並行してやっておけばよかったと思います。
どんな企業を受けたとしても、自分の価値観や将来どういうことをやりたいのかなどの方向性は必ず聞かれます。私自身もそういったことを聞かれ詰まってしまうことがありました。自己分析は終わりがないですし、かなりしんどい作業だとは思いますが、コツコツやっておいた方がいいと思います。
それと「チーム開発の経験があるかどうか」も聞かれることが多かったです。Recursionでもチーム開発を行っているみたいなので余裕がある方は参加するとかなりプラスになると思います。