プログラミングに関して全くの未経験者の高校生であった私が、1月から勉強を始め11月にエンジニアのインターンに受かるまでの経緯とインターンに参加する方法を共有します。
0. はじめに
本記事で紹介しないこと、
- 技術的な話(特定のアルゴリズムの解説など)
- 実際に書いたコードの紹介
本記事で紹介すること、
- インターンの探し方
- インターンの対策で実際に行ったこと
1. 自己紹介
年齢:17~18歳(2020年1月から11月時点)
学校:早稲田大学本庄高等学院
数学知識:数ⅠA、数ⅡB、行列(基礎)、微分積分(基礎)
情報知識:競技プログラミング(AtCoder:緑なりたて)、機械学習のさわりだけ、G検定(AI全般に対して問われる簡単な資格です)
1月時点では全くの未経験者であった競技プログラミングを通して、プログラミングの勉強をしたのと、人工知能に興味があったので、機械学習の本を一冊なんとなく勉強しました。G検定も勉強すれば簡単に取れる資格で、「勉強はしてるよ!」ってことを証明したいがために取りました。
競技プログラミングサイト、AtCoderでの成長過程です。なだらかでたまに落ちるときもあるグラフから自分は天才ではないことをまず言いたい。
機械学習も本を一冊何となく勉強し、手書き文字の認識ができるようになった程度です。
受賞歴:SuperCon2020本選出場(8月)(本選はコロナウイルスの影響で中止)、パソコン甲子園成績優秀賞(9月)
2. インターン先の探し方
自分は「Wantedly Visit」というスマホアプリを使いました。インターン先を調べる際に「インターン」「初心者歓迎」「学生歓迎」や、自分の興味のある分野のタグに絞って検索をかけ、上から順に見ていくと。
企業選びの基準は、
- ベンチャー企業
- 自社開発がある
- 自宅から出社可能
- リモートではない
- 自分が好きになれそうか
の5つです。
自分にはまだ実務経験がないので、最前線で技術が学べあろうベンチャー企業を前提に、その会社のホームページに飛んで自社開発を調べました。出社可能っていうのは当たり前ですね。それとリモートが嫌だった理由は、直接教えて貰いたかったからです。自分の感覚だと、リモートワークはあくまで「できる人」がやるものだったので、直接出社して仕事したかったのが強いです。
そして、実際最後が一番大事で、好きなことだったら仕事中じゃなくても、ちょっと勉強してみようかな~、どうやったら良いサービスにできるかな~とかを考えられるからです。
3. プロフィール設定
意識したのは次の3つです
- 今のところこれだけできる
- やる気だけはめちゃめちゃある
- 今私がやりたいことはこれとこれ
- プログラミング以外に今までこんなことしてきた
「今のとことこれだけできる」というのは企業が最低限知っておきたいであろうことです。先ほどベンチャー企業に狙いを絞ったと言いましたが、ゼロから教育するよりもある程度の実力が分かる指標(競技プログラミングなりポートフォリオなり成果物なり受賞歴なり)を載せておくといいでしょう。
「やる気だけはめちゃめちゃある」
これは企業側の立場に立てばわかる話で、(さっきはなしたこと矛盾するようですが)まず学生は基本的に期待されていません。じゃあなんで学生をとるかって、大企業は別ですが、ベンチャー企業なら、その熱意とアイデアでしょう。それを相手側に理解してもらうために、「今私がやりたいこと」を具体的に書きましょう。わかりやすいのは何か一つ「ストーリー」を作り上げることだと思います。
最後に「プログラミング以外に今までこんなことしてきた」というのはプラスアルファです。部活であったり課外活動であったりを書くことが出来れば「自己紹介」になって企業側の不安も多少は軽減するでしょう。
4. 応募
「Wantedly Visit」には企業に対して送ることができるメッセージが三種類あります。
- 「今すぐ一緒に働きたい」
- 「まずは話を聞いてみたい」
- 「少しだけ興味があります」
絶対に「今すぐ一緒に働きたい」を選びましょう。でなければ学生相手に返信なんて帰ってきません。
私の場合は20社ほど応募して、
返信無し:約10社
即お祈り連絡:6社
形式的な応募フォームの送信の要求:3社
興味を持ってくれた会社:1社
という感じでした。最終的には「興味を持ってくれた会社」に行くことになりました。
5. 選考方法
自分が経験した選考方法は3種類。
- アンケート形式
- カジュアル面接
- コーディング面接
5.1 アンケート形式
アンケート形式ではESに少しだけ似ており、「志望理由」「長所・短所」「あなたの5年後・10年後の姿」etc. 一般的に企業が就活生に対して聞く質問と同じでしょう。
意識したのは、アンケート全体を通して「一貫性を持たせる」ことです。自分がその企業に行きたい理由の本音を基準に、それに肉付けしていくかのように「志望理由」や「長所・短所」を書くと、先述したような「ストーリー」が自然と出来上がります。
ベンチャー企業なら「積極性」、大企業なら「継続性」が求められるなど、大事なのは相手の立場になって考えることです。
5.2 カジュアル面接
アンケート形式の面接版で、聞かれるようなことは大体一緒ですが、求められることが違います。
紙面上とは違い、同時接続での「コミュニケーション能力」が求められます。ここで言う「コミュニケーション能力」とは、質問に対しその意味と意図を理解し、論理的に話せるかどうかです。基本は相手から質問されるので、それに対して自分なりに話すだけです。
これは完全に持論で正しい根拠は全くないのですが、
カジュアル面接に対しては質問に対する「答え」を用意しないほうがいいと思っています。
プレゼンテーションを想像すればわかりやすいですが、「原稿を暗記して読む」のと「内容を把握したうえで解説する」のでは聞き手側の反応が違います。
授業を想像してもいいです。「教科書を読む授業」よりも「内容に沿って自分で解説する授業」の方がはるかに面白いです。
それと、裏技にはなるのですが「楽しそうに話す」というのが効果的だと思います。これは学生限定?若い人限定?になるのかもしれないのですが、ただ淡々と話をする学生よりも、目をキラキラさせている学生の方が、面接官の印象に残ります。やる気を表現するのに「笑顔」とかはすごいわかりやすい手法なのでぜひやってみてください。
5.3 コーディング面接
コーディング面接の案内の際に、内容に関して簡単に説明を受けると思いますが、私は、「アルゴリズム図鑑 絵で見てわかる26種のアルゴリズム」という本で取り上げられたアルゴリズムが理解できているかを問う問題を出す、というように指定されていました。
自分は競技プログラミングをやっていたので簡単なアルゴリズムに関して(DFS、BFS、二部探索、各種ソートなどなど)は理解しているつもりでした。それにプラスして、指定された本を熟読したりするなどの対策を行いました。
競技プログラミングをやっている人に向けていうならば、「時間計算量」だけでなく「空間計算量」をきちんと理解しておくといいと思います。
「どれだけのメモリを使うか」ということを重点的に聞かれたため、知っているアルゴリズムでも計算量の説明をできるようにしておくといいと思います。
本番では、想像してなかったタイプの問題が出てきて焦っていましたが、例を出しながら、「こうするんですかね~」「難しいですね~(笑)」などと間を繋いでいると、面接官の方がヒントをくれることもあるので、わからなくても焦らずに聞いてみると意外と答えてくれます。
5. おわりに
少しでも高校生のインターン探しの助けになれたらよかったなと思います。
それと、初めて書いた記事ですので、間違っている点などあれば教えていただけると幸いです。