めっちゃ初心者が地元の長期インターンに10ヶ月参加してみて感じたこと。

#はじめに
完全初心者から、インターンを10ヶ月ほどしてきての感想を簡単に書きます。
期間としては、大学2年生の5月~3月です。
最初はプログラミング歴3ヶ月くらいの完全な初心者でした。
ちなみに文系です。CSの知識もありません。

プログラミング始めたばかりの人の参考になればいいなと思っています。
技術的な話ではないです。

#インターンの内容
業務系パッケージの自社開発です。
お客さんがいて、多分オーダーメイドみたいな感じです。
自社のサービスに、お客さんが欲しい機能を会社ごとで追加したりって感じです。

複数の企業から同じ機能が欲しいとなれば、パッケージに追加したりします。

自分がやっていた業務の内容は、機能ごとでの実装、テストです。
設計書を基に、フロントからバックエンド、データベースまでの一連の機能を加えたり、改修したりします。

コロナ始まったばかりは完全リモート。
今は週3日までリモートOKって感じです。
(記事書いている今の今は、部活で足怪我して、完全リモートにしてもらってますw)

#使っている技術
* Java
* SpringBoot
* jQuery
* Thymeleaf
* Bootstrap
* Oracle
* Postgres
* Doma　等

業務系ってイメージです。

会社内では、個人向けのサービスも開発していて、そっちはReactとか使ってたみたいでした。

#インターンに参加するメリット
* 楽しい
* エンジニアとして働くイメージを掴める
* 技術力が上がる
* お金もらえるからアルバイトの時間を無くせる
* お金貰いながら、勉強の時間がもらえることもある

就活のための、自分の興味がある会社でのインターン、
お金をもらいながら、とにかく働いてみたいからインターン、など
目的は明確にした方がいいですね。

#参加するまで
今のインターン先は、ツイッターで自分からDMを送り、知り合った方の紹介で参加しました。
インターンに参加する方法は、本当に沢山あると思います。

自分がそれまでにした方法や、聞いた方法を簡単にまとめます。

* wantedlyを使う
 * 沢山の募集があるけど、名古屋とかだと意外と少ない
 * 22卒募集など対象外でも、本当に興味とやる気があるならコンタクトを取ってみるといい
 * 難しいイメージ
* 会社のホームページを利用する
 * 大手ベンチャーなどは、よく自社のサイトで募集をしているからチェックが必要
 * 小さなところでも、お問い合わせから連絡したら会って話してくれた、と言う自分の体験談あり
* 勉強会やLT会に参加する(今はコロナでできなくて残念ですが、)
 * よく発表の最後でインターンの募集をしていた
 * 募集している人に直接、参加するために何が必要か聞ける
* Twitterを利用する
 * 自分から連絡すると、意外と話してもらえたりする
 * 優しい方は多い
 * 話して貰うための「頑張っている」発信必要
* インターンが見つかりそうなイベントに参加する
 * 逆求人イベントやインターン紹介のイベントなどが一例

こんなシートもあるので参考にしてみてください。
[ITエンジニアインターンの情報が集まる魔法のスプレッドシート](https://docs.google.com/spreadsheets/d/1O4LqD6tfVisshD4YngjEKwpU1FQCGuD8vZ1qlVX0sBY/edit#gid=62946583)
ツイッターで検索してみてもすぐに出てきます。

参加するまでの学習に関しては

* progateを終えてすぐのレベルでJsでTodoアプリを作ってみた
* ↑の後、htmlにクラスを付けると、写真を綺麗に配置できる簡単なJsライブラリを作ってみた

と言う、本当に簡単なレベルで運よく参加させていただきました。
やる気や勢い、学習スピード(成長率)、会社と会うか?など要因は複数あり、その場の実力だけではないと思うので、
学習と並行して、インターン探しも頑張ってみてください。


#参加して思ったこと
エンジニアに関して殆ど何も知らない状態から参加してみて、率直に感じたことや、
インターン生として感じたことなどをまとめます。

###自分の興味ない事も少しくらいは経験してみてもいい
初めは、よくわかっておらず、フロントエンドエンジニアになるって言っていました。
フロントをやっておけば間違いないって思っていて、フロントエンド志望でインターンを探していました。

ですが、僕が参加した今の会社の業務はどちらかと言うとバックエンド寄りでした。

しかし、もしこの時「フロントエンドがいいので、インターンに参加しません。」と言っていたら、
次いつチャンスがあったかわかりません。

プログラミングの基礎の部分や、パッケージ管理の概念など、どちらにも通ずるものは沢山あります。
バックエンドを知っているからこそ、フロントエンドで使える事もあります。
全体像が見えることで、イメージもし易くなります。コミュニケーションもとり易くなります。

わかった上で、拘っているのなら良いのですが、
何も知らずになんとなく拘っているのであれば、視野を広げてみてもいいかもしれません。

###意外となんとかなる
初めは本当にさっぱりでした。
フレームワークを使って開発の経験がなかったので、どこがどうなっているのか笑

でも、ある程度パターンがあります。
初めは簡単な部分を任せて貰えると思うので、他の機能のソースコードを参考にしてみると意外と作れてしまいます。
フロントから、バックエンド、データベースまでの一連の流れを理解できるのをまずは目指すといいかと思います。

細かな事に拘る前に、まずは想定どうりに動かせるようにする、という風に進めて、
後で細かなところを考えていくと良いのではないでしょうか。

その後に、なぜそうやって動いているのか、どうやって動いているのかを、学べばいいのではないかと思っています。

業務に使っているコードを沢山読んでいると意外と分かってきます
分かることが増えると、調べるのも少しずつ簡単になってきます。
何が分からないのかが分かるようにになって来ると思います。(自分もまだまだですが、)

コーディング規約やチームのルールは、基本あると思うので初めに確認してみてください。

###きちんと質問する
業務をしていると本当に分からないことも出てきます。
チームのリーダをしている先輩のエンジニアの方が言っていたのが、
「わからないまま、悩み続けて、全く進んでない方が困る」です。

質問すべき時は質問をする方が良いのかもしれません。(絶対ではないです。)

質問にも、技術的な質問、サービス/仕様に関する質問等があると思います。
特に、改修の仕様に関する事は、きちんと理解せずに進めると非常に面倒な事になります。
仕様に関する不安な箇所はなるべく初期の段階で明確にするべきだと思っています。

また、何を実現したいのかを明確に理解できれば、機能の実装は意外とできます。

何がわからないのかを考えることも重要です。
質問された側はもっとわかりません。投げやりな質問は控えましょう。
「何が分からないのか」が分かると解決する事も多いです。

最初の頃から、リモートでの業務でしたので、質問のハードルは高かったです。
質問の時に意識していた事は以下です。

* 何の業務についてか、内容を初めに伝える
 * 質問される側は自分の仕事もあるので、質問者が何をしているのか把握できているとは限りません。 
 
* 現状と実現したい事を明確にする
 * 質問の回答によって、「現状」と「実現したい事」の間を埋めるイメージです。
 
* 相手も何でも分かっている訳ではない事を理解する
 * 質問を受けてから調べてくれるという事もあります。
 * 手間を減らすためにも、回答の参考になるためにも、自分が試した事は全てきちんとまとめると良いと思います。

* ソースコードやエラーログを共有する
 * 当たり前ですが、あった方が分かりやすいですし、答えやすいです。

質問をする為に、整理していると、答えが見つかったみたいな事もよくあります。
質問受ける側のことを考えて、丁寧にを心掛けています。

__でも、まずは公式ドキュメントやら技術記事やらを一生懸命読んで自分で頑張ることが一番__

###業務知識、アプリ/サービスの知識が結構必要
作りたいものが分からないと、実装も中々進みません。
プログラミング力だけじゃないんだな、っと始めたばかりの頃に感じたのを覚えています。
エンジニアは沢山勉強ですね。楽しんで頑張っていきましょう。

###１つずつ作っていく
1度に複数の事をやるのは難しいです。
どこがうまくいっているのか、どこが原因なのかを見分けるのも大変になります。
細かい単位で、１つずつ作り上げ確認をして、を繰り返していくことで、開発もスムーズになると思います。

###自分からコミュニケーションをとる
学校ではないので、自分のためにも自分からコミュニケーションを取ると良いです。

適度な報告や相談は大事だと思っています。
ある程度、把握しておいてもらった方が、助けてもらう時にも良いように働きます。
全て面倒を見てくれる訳ではありません。また、自分から話した事で段取りなどが早く進むということもあります。

###参加を目的にしない
参加しても、何となくでは、成長できないと思います。
動くだけなら以外と考えなくても出来たりします。
せっかく貴重な経験をさせて頂くのであれば、考えて精一杯努力したいですね。
始めた頃の自分にもっと頑張れるぞって言ってやりたいです。

#さいごに
正直、僕は実力のない段階で機会を頂けた稀なケースだと思います。
でも、会社は沢山あり、きちんと考えて継続して努力できれば、きっと見つかると思うので頑張ってください。

この記事は、技術的なものでもなく、本当に駆け出しの人、インターン参加し始めの人向けの内容でしたが、
最後まで読んでくださった方、本当にありがとうございました。

ちなみに、今の会社は今月で退職します。
Reactを使った開発でのインターンの話を頂いているので、今後はフロントエンドに力を入れていきます。

僕もまだめっちゃ駆け出しエンジニアなので、めっちゃ頑張っていきます。

エンジニアを目指して一緒に頑張っていきましょう。

####おまけ

こちらはインターンに参加しながら、取った資格の話です。
よかったら読んでみてください。
[文系大学2年生が1年間で取得した資格5つ紹介](https://qiita.com/toki_k/items/8f40848404c869ef88d4)