今回は題名にもある通り、文系大学生がエンジニア長期インターンに参加するまでの学習法と思考法をお話します。
僕は現在、都内のWeb系自社開発企業でフロントエンドエンジニアとして長期インターンに参加中です。(主な業務はFirebase, Vue.js, TypeScript等を使った開発など)
ただ、独学でプログラミング学習を始めてからインターン参加まで約7ヶ月程度の時間を要しましたし、色々と遠回りもしたなぁと思っています。
そこで今回は、同じように文系の大学生でエンジニア長期インターンに参加したいという方向けに、学習法や必要だと思った考え方をお伝えしていきます。
エンジニアを目指す大学生に少しでも参考になる情報を届けられれば幸いです。
インターン応募までにやったこと
まずはインターン応募までに、具体的に何をしたのかを紹介していきます。
プログラミング学習
学習初期(2019年11月〜)のときにはWeb制作の学習から始め、初めはWeb制作関係の学習をやっていました。(HTML&CSS, WordPress等)
このときはまだ、エンジニアになるという目標が明確に定まってなかったですね。
Web制作のフリーランスとして色々な案件をやっていくうちにWebエンジニアへの興味が湧いてきました。
そこから、本格的にVueなどのJavaScriptフレームワークの学習やLaravelなどのサーバーサイド言語の学習を開始したという感じですね。
正直かなり遠回りですが、色々と挑戦して、やりたい事が明確になったので後悔はしていません。ここまでで約7ヶ月です。
ここまでに使った教材等や書籍の一部を紹介します。
Web上の学習サービス
参考書
最初の方は書籍で学習してましたが、Udemyの動画教材がかなり性に合っていて、理解しやすかったです。
Udemyでは多くの教材で基礎から応用まで学べるのが一番のメリットだと思いました。
ポートフォリオアプリ作成
期間は約3週間程。
ER図でアプリの設計を書く所から始め、Dockerでの開発環境構築、Laravel × Vue.jsでアプリ作成、AWSにデプロイするまでを行いました。
GitHubも使用しできるだけ実務に近い方法で学習しました。
正直使う言語に関しては何でもOKだと思いますが、行きたい企業が明確ならそこで使われている技術を使っておくのがベターですね。
特にGit関係は実務でほぼ確実に使うので、個人開発でも意識して使っておくと良いでしょう。
インターン応募・面接
主に使ったのは以下の2つです。
ここではプロフィールを充実させて、自分の興味のある企業にコンタクトを取っていきます。
コロナ禍で返信率は少し芳しくなかったですが、インターンの求人数自体はそこそこあった印象です。
色々な技術に触れられる可能性が高いという理由で自社開発に絞って応募していましたが、正直自分次第だと思います。
自分のやりたいことができそうな企業にどんどんエントリーしてみましょう。
Infraインターンに関しては以下の記事で詳しく解説しています。
スクールか独学か?という問題
まず、プログラミング学習において良く議論されるのがこの問題ですね。
結論から言うと「独学にチャレンジしてみて、挫折しそうだったらスクールも検討する。」 でOKだと思います。
ただ「スクールに通えばスキルが身に付いて、就職までうまくいく」と思っている人はたいてい独学でも失敗するので注意。
受験勉強と同じで「予備校に通えば難関大に合格する。」が間違った考えであるのは明らかですよね。(スクールの誇大広告とかの別の問題もある気がしますが。)
スクールはあくまでサポートのある環境を提供してくれる場で、勉強する主体はあくまで自分です。
さらに言えば、結局は勉強法はただのプロセスなので、途中経過にこだわるのも無意味だと思っています。
成果を出す人は、独学だろうが、スクールだろうが同じ結果を出すでしょう。
一番大事なのは自分の目標を明確にして正しい努力を続けられるか否かです。
分割統治法という考え方
先程お伝えした自分の目標を明確にして正しい努力を続けられるか否かというところに焦点を当てて考えてみましょう。
プログラミングで良く使われる考え方に分割統治法というものがあります。
分割統治法(ぶんかつとうちほう)は、そのままでは解決できない大きな問題を小さな問題に分割し、その全てを解決することで、最終的に最初の問題全体を解決する、という問題解決の手法である。
Wikipediaより引用
要は最終目標を明確にして、達成に必要な小さな問題から解決する、ということです。
あなたの最終目標はなんですか?
人それぞれだとは思いますが、エンジニアの長期インターンに行きたいと考えている学生なら、その先のエンジニア就職も目標として考えている人も多いはずです。
ここで何も考えずに「エンジニアになりたい! = プログラミングを勉強しよう!」と行動するのは間違っていませんが、高確率で迷子になります。
例えば、教材を購入したり、スクールに通ってみたけど、終わってみたら何をすれば良いのか分からない...という状態とかですね。
こうならないためにも、最終目標から逆算して今の自分に必要なことだけをやりましょう。
例えば僕の場合、
最終目標(粒度の高い目標):Webエンジニアとして2年後に就職したい。
↓
独学で限界がある部分を長期インターンの実務経験でスキルアップしたい。
↓
行きたい会社で使われているスキルでポートフォリオを作成しよう。
↓
そのために必要な技術を勉強する。
ここまで考えて初めて言語の勉強に入りました。
もちろん就職が目標の人だけではないと思います。その場合は自分で作りたいものがある。とかでも立派な目標です。
とにかく、最終目標が曖昧なまま勉強を続けて、勉強のための勉強だけは避けましょう。
自分の強みを考える
今回短期的な目標として、長期インターンに行きたいということを考えたときに、情報系の学生やプログラミングの経験が長い人に比べてあなたは技術力で勝負できる自身がありますか?
正直、僕にはありませんでした。
もちろん、実務に関わらせてもらうので最低限の技術力は必要です。
しかし、今の自分の強みを考えたときに「現在の技術力」よりも「自走力」が思いつきました。
エンジニアとして必要なスキルとしてよく挙げられる自走力ですが、イメージが湧きづらいのでより具体化して、自分の属性や性格、今までの体験に落とし込んでみましょう。
ここでも自分の例を挙げてみます。
・独学である程度のポートフォリオを作成したこと
→自己解決能力と熱意のアピール
・受験勉強などの継続的な学習経験
→学習効率の高さ、企業側の教育コストの低さをアピール
・Web制作フリーランスで生活している
→基礎知識・主体性・積極性をアピール
こんな感じです。現在の自分の属性や性格、今までの体験を振り返ってみてください。
圧倒的技術力で採用されるのは無理でも、学習経験とポテンシャルを適切にアピールすることはできるはずです。
「企業はなぜあなたを採用するのか?」
常にこれを念頭に入れて、選ばれる理由を作れればうまくいくはずですよ。
最後に
ここまで色々と考えてきましたが、個人的に長期インターンって最強の制度だと思います。
エンジニアに限らずですが、実務経験を学生のうちから長期間で体験できるのって超貴重な体験じゃないですか?
エンジニア未経験中途採用の場合、選考条件に実務経験が必須だったりでかなり難易度は高そうですよね。
その点、学生のインターンなら、自分に本当に向いてる仕事なのか見極めることもでき、さらに主体的に学べばスキルアップも期待できます。
今回お話したように、インターンは超貴重な学生の特権ですので、是非存分に活用してみてください。
それでは、今回は以上です。