就業型インターンに参加して足りないと感じたこと

# 就業型インターンに参加して足りないと感じたこと
めずらしくハンズオン的な記事ではないです。
**※Treasureは就業型インターンではありません**

## プロローグ
###動機
この一年、様々なインターンに参加し、多くの足りない部分、課題を実感しました。その中でも、就業型のインターンで感じた足りない部分を書いていきたいと思います。
多くのインターンの中でなぜ就業型インターンについて書こうと思ったのか。
それは、今すぐにどうにかなるもの、知っておいた方がいいもの、ことが多いと感じたからです。

###スペック
 - それなりのチーム開発経験は何度かある
 - gitは複雑なこと(後述)やろうとしなければ普通に使えるレベル
 - エディタはvim + tmux(デビューして半年たたないくらい？)
 - プロジェクトはnodeでAPIの実装をやらせていただきました。
 - 基本的にインフラからサーバーサイド、フロントまでなんでもやる人

## 足りないと感じたこと

### その①　リファレンスに慣れすぎ
今回参加させていただいたプロジェクトでは、自社(公開されてない)フレームワークを使用して開発をしていました。
もちろんリファレンスなんてものはありませんでした。その中で、どのレイヤにいるフレームワークなのかどこまでをやってくれるのかを理解して、実装して行く必要がありました。
### やっておけばよかったこと
オープンソースのライブラリの中身やそれを使用してる他人のコードを積極的に読む。
実際いままでの自分にとっては最終手段的な位置付けでした。だって、時間かかるし、疲れるし。
でも、就業してみて思ったことは、普段から人のコードを読むことに慣れていることで**どこを読めばいいのか**、**必要な情報が何であるのか**を適切に把握し、最短距離で理解することができたのではと思います。

### その②　vimの熟練度が足りない
まあこれは正直しょうがない感もありますが、、、。
実際にお仕事として使ってみると、いままで使わなかった機能が必要だったり、自分の思考の速度で編集できるレベルじゃないとストレス溜まってお仕事どころじゃないですね、、、、。

### やっておけばよかったこと
vimの設定。
最終系がここに : [VSCodeからVimに乗り換えた話](https://qiita.com/shoichi1023/items/873a173e183f8058c226)
※絶賛チューニング中なので記事に乗ってない機能がリポジトリ内のrcで書かれていてもあしからず
特にないときついなと思ったのはコメント化と範囲移動あとsurroundは普通に便利

覚えとくと困らないキーは
```<C-u>, <C-d>, w, b, gg, G```ぐらいですね基本使ってたのは
あとはタブ分割(自分のキーバインドだとst)とタブ移動(同じくsp, sn, sP, sN)
あとめちゃくちゃ使ってたコマンドは
```:e <filepath>```でファイル開く(nerdtree依存だったのがバレる)
```:grep -r <regex> dirpath```でpath配下全文検索
その後```:copen```で結果のファイルを選択しながら開ける
あとは、```v```とか```V```とか```<C-v>```で選択した部分を```:s```で範囲指定置換できたりとかは知らなかったのでとても幸せになった。

### その③ 変数名の付け方
多分プロジェクトによると思うのですが、今回お邪魔したところは長くてもわかりやすいものをつけようって感じで、中に入るもの、その変数が表してるものを適切に表現できるかというのを常に意識しながら書くというのはあらためて難しさを感じました。
あと、ちゃんと気をつけて書かないとPRのレビューの数が多くなってごめんなさいって気持ちになります。
社員さんレビュー本当にありがとうございました、、、、。

### やっておけばよかったこと
普段から意識して書く。以上。
あと困ったらこういうのもある : [codic](https://codic.jp/)

### その④ gitを使いこなせてない
実際にあったケースとして、
社員さん　「これコミットまとめといて」
僕　「？？？？？」
社員さん　「これマージコミット消しといて」
僕　「はい！！」
僕　「・・・・・・・・できない。なんでだ。」
となりました。
原因としては、今まで大人数での開発やバージョン管理等に慣れていなかったことが一番大きいです。
commitを見やすい単位にまとめる。他の人のcommitで埋まらないようにきっちりrebaseするなど知ってしまえばなんともないようなことで業務が止まってしまうのはとても勿体無いなと思いました。

### やっておけばよかったこと
```pull --rebase```と```rebase -i <tag>```と```cherry-pick```と```reset --soft```, ```reset --hard```, ```stash```あたりをきっちり理解しておけば特に困ることはなさそう。

ちなみにさっきの、前者は```git rebase -i HEAD~(まとめたいコミット数)```
後者は、web上でコンフリクト解消したものをpullで持ってきてしまったのが原因だったため

```
git reset --soft <pullする前のtag>
git stash
git rebase <branch>
git stash pop
```
あとで社員の方に教えてもらったことだけど、多分これが一番楽。
ちなみに自分は
```git reset --hard```して
```git rebase <branch>```して
```git cherry-pick <tag>```で一つづつコミット適用させて解決した。

## エピローグ
実際、就業型のインターンに行ってみると、多くのことを**知れる**ので機会があればアルバイトなり就業型のインターンなりやってみることをおすすめします。
ただ、
 - 自分の強みや課題がいまいちわからない
 - 周りにライバルがいない
 - 同じくらいガチな人たちと熱い開発がしたい
 - 技術だけでなくプロダクト開発のスキルを向上させたい
という方は、[VOYAGE GROUP](https://voyagegroup.com/)のTreasureのインターンを強くおすすめします。
終わった後もTreasure生とはずっと繋がったままだし、メンターさんのレビューも強み、課題共にしっかり伝えてくれます。(その節は本当にありがとうございました。)

完全に自分の意見を書き連ねただけですが、誰かの役に立てば光栄です。

## PS.

今回の就業インターンでは、新機能の実装と既存への影響範囲の変更を丸々任せていただいて、多くのものを吸収することができました。
これもTreasureで**圧倒的成長**できたおかげだと思ってますし、それがなかったらもっといろんなことで困ってたと思います。
ベースを作る意味でも、Treasure無しでは今の自分はないなと思ってます。

Treasureで熱い夏を過ごしたみなさん、うるさいやつですが仲良くしてくれてありがとうございます。
みなさんの活躍に焦りながらもいい刺激になっています！
Treasureでお世話になったメンターの方々、正直何度か心が折れそうになりましたが、おかげで圧倒的成長できたと思います。ほんとに感謝しかありません。ありがとうございました。

この記事はVOYAGE GROUPのサマーインターン、Treasure2018の修了生によるTreasure Advend Calendar 2018の22日目の記事として書かれています。