初めての開発インターン

# はじめに
8月16日から9月1日の約2週間（事前学習期間を含む）IT企業のインターンに参加して体験したことを書いています。
この記事ではインターンで学んだことなどをアウトプットしていきます。

# 取り組んだこと
最初の3日間で事前研修としてオンラインでC#の基本をUdemyを通して学びました。
その後対面で実際のIT企業の会社に行きインターンを行いました。
内容はC#を用いたワインの生産販売管理システムのバックエンドの開発を行いました。（扱うデータ情報は実際の利用者の方のもの）
開発はチームで行い1チーム2人で構成されペアプログラミングを用いて開発を進めていきました。


# 最初の1週間
まずgitの学習から始めました。今回のインターンではvisual stdioを用いて開発の管理を行い、リモートリポジトリとしてgitlabを使用しました（環境構築は企業側が用意してくれた）。
次に設計書の読み方を講師の方から教わりました。実際にそのIT企業で使われる設計書と同じ書き方だったのでより実践的に開発を行うことが出来ました。
設計書の読み方がある程度分かった段階から実際に開発を進めていきました。
コードはある程度企業側が書いてくれていた部分があり、最初はそれを参考にしながらコードを書いていました。
自分たちのチームは最初の1週間を終えた時点で実装するべきAction3つの内1つが完成しました。

# ラスト1週間
このあたりからコピペだけでなく、コードの意味を自分で理解して自分たちでコードを書き進める時間が多くなりました。
自分のチームは3つの内2つのActionしか作ることが出来ませんでしたが、ただコードを完成させるだけでなく、コードのリファクタリングを行い他の人がコード見た時に難なく理解できるように、今後修正するときに修正がしやすいようにと整理をしたりと処理以外の部分も意識して開発を行っていきました。

また完成できなかったActionにはトランザクションの機能が必要な部分がありましたが、トランザクションとは何か、またその機能の搭載による利点などを銀行のシステムを例に説明してくれるなど、より開発で必要な知識を知ることが出来ました。

最後にそれぞれのチームで開発したものをpushし、統合させたものを実際に動かし問題なく動くことを確認し開発を終えました。

# 実習中に大変だったこと
一番に大変だったことは「コミュニケーションにおける認識の違いをなくすこと」です。
開発を行っていくとプログラミングに関してお互いに分からないことが出てきます。その時に自分がどこが分からなくて困っているのかを伝えることが出来なかったり、相手がどこが分からなくて困っているのか分からないことが多々ありました。
それによって相手に余裕がないときには自分に対しての口調が強くなったり、お互いに自分の作業に夢中になったりとチームとして機能できていないときもありました。
これらは自分がどこまで認識しているか相手がどこまで認識しているかを理解できていないことが原因だと思います。
次に自分がその時に意識したことを書いていきます。

# 意識して心掛けたこと
意識したことは以下の通りです。
- 自分の分からないと思っている箇所は相手も分からない部分であるかもしれないと意識し、わからない箇所は必ず分からないと伝える。
- 相手の「わからない」という言葉に対して現時点の自分の解釈（自分の理解できていること、自分の思う相手が分からないと思っている箇所）等をすぐに言う
- 相手の抽象的な言葉にたいして「間違ってるかもしれないけどそれってこういうこと？」と前置きを置いた上で確認をすること

　1つ目は一番意識していました。分からないと伝える度に会話がぎくしゃくしてしまい、わからないと伝えない方が空気も悪くならないと、伝えることを躊躇しようと思った時もありましたが、相手も分からないということ自体に気づいておらず、後に困ってしまうかもしれないと思うことで躊躇せずに伝えることが出来ました。
これによって実際に相手も分かっていないことに気づきお互いに深く理解することにつながった時、相手から「伝えてくれてありがとう」と言われ、チームの雰囲気もよくなりました。その時は躊躇せず伝えて良かったととても嬉しかったです。
　2つ目は開発を通して徐々に意識していきました。相手の思っている分からない箇所と自分が思う相手の分からない箇所はずれるときが時々ありました。そこから相手が分からないと言った時にただ聞くだけではなく、自分なりの考えを伝えることで相手も自分の伝えた考えを踏まえて分からないところを伝えてくれるのでお互いにより深く、より早く理解できたと実感しました。
　3つ目の「前置きをおく」も徐々に意識するようになりました。最初はなるべく早く自分の考えを伝えようと前置きなしに伝えていたのですが、その場合相手もいきなり言われるので「もう一回教えて」と聞き返すことで余計に時間を使ってしまうことがありました。
そこで一歩引いて伝えることで相手も何か質問が来ると意識した状態で対応できるので上手く解決につながることが多かったです。

　最初チームを組んだ時は相手のせいにしたりもっとこうしてほしいと不満に思うときも多少ありましたが、今回の経験を通して自分の接し方や少しの意識でよいチームなると実感しました。

# 実習中に学んだこと
ここでインターン中に学んだことを「技術」、「エンジニアとしての心構え」、「IT業界について」のそれぞれの項目に分けて書いていきます。

####  技術
- gitとgithubの使い方
- アプリケーションのバックエンド、フロントエンド間の情報の受け渡し
- SQLについて
- プログラミング学習におすすめなサイトと意識すること。

4つ目の「意識すること」についてはプログラミング言語を学習する所から始めるのではなく、作りたいものを作るためにプログラミングを学習するから始めると挫折しにくくなると教わりました。今後意識していきたいと思います。

#### エンジニアとしての心構え
- エンジニアは人と比べるのではなく昨日の自分と比べて何ができるようになったか、できるようになったことを自分で素直に褒めてあげることが大事
- エンジニアは分からないことを人に聞くのではなくまずは自分で調べてみる癖を持つことが大事
- コミュニケーションにおいて人との認識の違いをなるべくなくすために前提を整理することが大事

　1つ目の「人と比べるより自分と比べる」はこのインターンでとても印象に残っている考えです。これは講師を務めてくださったエンジニアの方がインターン生に向けて伝えた考えです。
一人のインターン生が「自分は他の人と比べてスキルがまだないのでとても不安です」と講師の方に相談すると講師の方は「自分と同世代の人でスキルが高い人はたくさんいる。僕だってそうです。そんな中で人と比べていっても上にはさらに上がいるからきりがない。なのにそこで落ち込むのはとてももったいない。だから昨日の自分と比べて成長できた点を見て、それを褒めてあげてください。そうすればモチベーション高く、不安も感じることなく学習できると思います」と言っていました。
自分もtwitterなどを見て活躍する同世代の学生を見て落ち込むことが多かったのですがこの話を聞いてからは自分の成長度合いを意識するようになり変に落ち込むことも少なくなりました。この考えは社会人になっても大事にしていきたいと思っています。
　3つ目の「認識の違いについて」は意識したことに書いてある通りです。GDなどではよく「言葉」の「前提」を整理することから始めろと掟のようなものがありますがそれが開発にも活かせることが出来てよかったです。今回の「前提」は「お互いの認識の範囲」を知る事だと気づきました。

#### IT企業について
- 受託開発かSESでの働き方の違い
- 主に使われる言語について
- 会社に対してどこまで自分に返ってくる成長を求めるのか

　1つ目に関してはエンジニアの方の話を聞いて感じました。その方は以前SESの形態のIT企業に勤められていました。そこでは企業に出向くためなかなか元居るIT企業の同期とのコミュニケーションが取れなかったり何かチームで誇りをもって成し遂げるという経験ができず自身の価値観と合わなかったため現在のIT企業の方に勤めていると聞きました。
私はIT企業の形態に関しては業務内容のみ違いがあると思っていましたがそこから感じる達成感にも影響があると知り、以前よりもIT企業の形態はじっくりと考える必要があると思い始めました。

　2つ目はプログラミング言語についてです。以前は業務で使用される言語に関してよく聞く言語を使用することが良いと感じていました。しかしアプリケーションやシステムを作る際に用いる考え方はどれも共通することが多いと考えそれほど使用言語に関しては絞る必要はないのではないかという考え始めました。ただ新しい技術に関しては敏感でありたいと思っています。

　3つ目はエンジニアの方の話を聞いて感じたことです。私は企業に対して自分にある程度会社外でいかすことのできるような成長を求めていました。しかしあるエンジニアの方は自分の成長は会社に無理に求めようとせず自分から勉強して成長すれば良いじゃないかという考えであると知り、自分も環境に頼るのではなく自分で何とかしようという気持ちも大事であると考えるようになりました。

また人事の方と面談をさせていただいた時に「キャリアで成功したと答えた人の特徴として、自分のやりたい事よりも自分のやるべき事、任せてもらう事をやり遂げた人の方がその割合は高い」という統計データを聞き、自分のやりたいことを意識しすぎることも避けたほうが良いと思うようになりました。

# インターン先の企業の良かったところ
インターン実施中にその企業の良いなと感じた部分を以下に書いていきます。

- 日頃感じた感謝をメッセージで伝える習慣がある。
- 社員の方それぞれが何か自身の目標をもって仕事をしている。
- 会社の目標を社員の方が理解している。
- 受託開発で要件定義から導入まで一気通貫で行っている。
- 会社として長い歴史があり安定しており、近年は利益が連続で増えている。

中でも一番印象的だったのは1つ目の感謝のメッセージを伝える習慣がある事です。何か感謝する出来事があればSNS感覚でメッセージを送っていました。しかもそのメッセージの内容をslackで共有されるので見ている側も良い気持ちになりました。
社員さんたちの雰囲気もとても良く習慣による効果なのかと思いました。

# 最後に
初めてのインターンでしたが学ぶことがとても多かったです。このインターンだけで開発を終わらすのではなく、新しい学びを継続し開発を自分で進めていきたいと思います。
最後まで読んでくださりありがとうございました。


# おまけ
私は現在Unityroomでゲームをいくつか公開しています。もしよろしければ遊んでみてください！

https://unityroom.com/games/dungeondungeon

https://unityroom.com/games/000001111100000