エイチームでの就業型インターン 1ヶ月経ったよ

## はじめに

9月1日から株式会社エイチームの就業型インターンに参加しています。
僕は、その中でも、Increments株式会社のプロダクトの開発に携わっています。

もう10月になり、参加してから1ヶ月ほど経ったので、Increments株式会社のプロダクトであるQiitaにまとめます。
(3週目がシルバーウィークでみんな休んでいたので実質3週間ですが、)

## インターン概要

https://ateam-group.snar.jp/jobboard/detail.aspx?id=iWDD6vuHims

インターンのエントリーページ、一部抜粋します。(10/11で募集終了)

>就業先はエイチームのグループ会社である、以下のいずれかとなります。
・株式会社エイチームライフスタイル
・株式会社エイチーム引越し侍
・株式会社エイチームフィナジー
・Increments株式会社

株式会社エイチームでは複数の受け入れ部署があり、選んでからエントリーします。
僕は、自分もよく使っているQiitaを作っているIncrements株式会社を選びました。

>▼業務内容
・Incrementsが企画・開発・運営するエンジニア情報共有サイトQiitaと、エンジニア採用支援サービスQiita JobsにおけるにおけるWebサイト改善、機能開発 他。
>▼使用言語
・Ruby、JavaScript、TypeScript、HTML、CSS
>▼必須スキル
・Ruby on Rails、React、Git
>
>時給 1,200円

インターンの内容はこんな感じです。
実際のプロダクトの開発に参加します。

僕は、週3~4日程勤務しています。

## エイチーム ( Increments株式会社 ) での働き方

僕が参加しているのはIncrementsなので、
正確にはエイチームではなくIncrementsでの働き方になります。
エイチームの他の部署とは一部違う箇所もあります。

### 出社について
9月は緊急事態宣言が出ていたので、皆リモート勤務でした。
10月からは水曜日が出社日になり、他の曜日は各自必要に応じて、という感じです。
新卒社員は交流を深めるために出社になっています。

### 業務について

僕は、朝の10時くらいから出勤して、19時前から日報を書いて退勤しています。

基本的に一日中zoomを繋ぎっぱなしです。
Increments全体で使うzoomで、ブレイクアウトルームが複数作成されており、
通常時に参加する部屋やMTGで使う部屋、汎用的に何にでも使う部屋などが複数あります。

通常時に参加する部屋では、基本的に5~10人程います。
「〜さん質問いいですか~」「ここわかる人いませんか~」「ここ相談したいんですが、、」など、皆が気軽に質問や相談をしています。

その場で画面共有しながら解決しているので、他の方の開発風景なども見れたりします。
他の人が相談してる時は、slackで呼びかけて他のブレイクアウトルームに行ったり!

zoomなのに孤独感をあまり感じず、そして意外と質問しやすい環境です。

開発手法はスクラムで、今は1週間単位です。
チーム体系が変わったばかりなので1週間ですが、他の部署では2週間が多いです。

必要に応じて、ペアプログラミングやペアレビューなども行われています。

今は、組織の形が変わった所なので知見の共有や困り事の解決などを目的に、
金曜日以外の14:00-15:00は毎日ペアレビューが行われています。

### 定期的に行われる業務について

* 朝会 (毎朝10時~)  
毎朝10時から朝会です。
軽い雑談の後、今日やることや困っている事、報告事項などを共有します。
新しいissueの見積もりもやっています。
月曜日にはスプリントプランニングもしています。　  
朝会の目的は、情報を共有することで助け合える状態を作っている事です。
進捗報告することで、遅れに関する対応なども皆でできます。

* 全社MTG (月曜)　  
週に1回の全社MTGです。
僕は参加していませんが1000人程いる社員が全員集まっているようです。
経営に関する事など各部署に関する事を、全員で共有しています。  
会社状況を把握し社員全員が経営について考えるという方針で行われています。

* スプリントレビュー (金曜)  
スプリントの振り返りです。
進捗の確認をしてうまく進むための調整をしたりたり、
悪かったことの改善や良かったことの継続をするための振り返りなどを目的にしています。

* 上司との1on1面談 (定期的)   
定期的に上司と1on1面談をしています。
僕はメンターの方に毎週して頂いています。
メンター以外の方にも依頼して面談してもらったりもしています。  
定期的な相談の場です。
困り事の確認やこういうことがやってみたいを上司と共有し合う場です。


現在定期的に行われるのはこれくらいです。


## やってる事

イメージ掴むために、やってきた事を軽く紹介します。

初めは、小さなバグの改修や表示の変更などの軽いタスクを何個かこなしました。
簡単なタスクをこなしながら、構成やサービスの仕様などに少しずつ慣れていきました。

アクセシビリティの観点やCSS設計などを普段深く意識した事がなく
HTML、CSSだけでも沢山レビューをもらいました。

慣れてきたら、簡単な機能の追加などのタスクも頂く様になりました。

開発１つの流れとしてはこんな感じです。
→ やりたい事がざっくり書いてあるissueを頂く 
→ 仕様を書く 
→ レビューをもらう
→ 実装する 
→ テストが通ったらプルリク作成する
→ レビューもらう & 修正する
→ commitを綺麗にして、masterにマージしてもらう。

今は、masterへのマージは社員の方がしています。

仕様のレビューとして、「なんでそうしたの?」みたいな事を社会人と話し合うのは、
学生の僕にとってあまり経験できない事なので、とてもありがたい機会です。

沢山数重ねて成長したいなあと、、

## 学んだこと/学べている事

* 普段の開発の未熟さ 
今までなんとなくでやってきた部分がすごく明白になったなと感じました。  
例えば、  
「要素間のmarginをつける時に感覚が取れたらOKではなくて、こうやって~~な理由で追加される要素側にmarginの責務があるって考えるべきだよ」、とか 
「こうすることで、タブの移動でもフォーカスが当たるようになるよ」、とか
「こことここで命名の仕方にブレがあるよ」、とか
「他のところではこういう風に名前付けてるから合わせた方がいいよ」、とか　
「display: none;にするとアクセシビリティツリーから外れてフォーカスが当たらなくなるからopacityで調整しよう」、とか  
細かく、レビューもらってやっています。
他にも、  
「プルリクのレビューの修正などで別で作られたコミットログなども機能単位で1つにまとめよう」、とか
「プルリク作成時には、画面変更点のスクショを貼ったり、なぜそう実装したのかを書いたり、気になった点はどうレビューして欲しいのかをコメントしたりして、レビューをもらいやすいようにしよう」、とか  
レビューをもらって、チーム開発をする上で大切な部分を雑にやっていたな痛感しました。
Gitの使い方は、雰囲気は掴めているものの理解が浅いので網羅的にもう1度学び直さなきゃと感じました。

* 開発に対する考え方
レビューや相談の機会を通して社会人のエンジニアと話し合うのが、とても学びになっています。
自分だったらこう考える箇所を社会人のエンジニアがこう考えているなどを知れるのはとても楽しいです。
もちろん正解がない事の方が多いので、自分の方が正しいと思った時にはきちんと話し合い、思考を深めていく経験にもなっています。
「ここはなんでこうしたの?」「これ以外に何か実装案とか考えてた?」「ここをこうすると、こういうメリットがあるけどどう思う?」など、自分の考えを相手に伝えたり、相手の考えを聞いて新しい見方や発見をしたり、とても楽しいです。

* 質問のタイミング
質問のタイミングや質問するべきかどうかを考えるのはすごく難しい事です。
特殊なケースを除き、時間をかけてソースコードを1つずつ読んで、仕様を理解して、、、、とやればある程度は解決できると思います。
でも、時間をかければ解決できることは絶対に自分1人で解決するべきかと言うと、それは正しくないと思っています。
時間と効果の話しで、聞いちゃえば10分で解決する箇所に2時間もかけて取り組む方が悪です。 
ただ、その判断が難しい、、、、  
これも1つの小さな意思決定です。 
もっと早く聞いとけば良かったな、これ聞かずに出来たな、聞いて良かったな、などを毎回感じます。
振り返りをして、質問のタイミングの感覚も少しずつ掴めてきています。
時間で区切って質問するなども意識しています。

* その言語の事知らなくても意外と開発できる
僕は、Ruby初心者でした(2日くらい学んだ)。が、なんとか開発できています。
基本的な考え方は変わらず他の言語で学んだ事が結構活かせるのだなと感じました。    
言語に関しては、言語やライブラリの処理なのか、自分たちで定義している処理なのかを切り分けていく事がポイントだと感じました。
あとは、焦らず1つずつコードを読む事と、気になった箇所の値を実際に実行して確認する事とググる事と勉強する事ですね。
実際のプロダクトのコードを見ながらなのでキャッチアップもしやすいです。これも実務のメリットです。

## 自分の中で良かった点

* 開発の目的を意識できている点  
「これってこうの方がよくないですか?」「~だと思ったのでこうしました」みたいに目的を意識した開発が出来ていたと1ヶ月を振り返って思いました。  
価値を届けられるエンジニアになるためには必須ですね。
これからも意識していきます。
意識して考えるからこそ、フィードバックに敏感になったり自分の意見とすり合わせて、成長にもつながっていると思います。

* アドバイスを実行している点  
1on1面談や普段の業務を通してメンターの方や他の社員の方々からアドバイスを頂いています。(本当にありがとうございます) 
開発に関することはもちろんですが、開発に限らずです。 
例えば、「インターン生の立場を利用し面談を色んな社員の方に依頼する事」を勧めて下さったなどです。 
その様な時にそれが自分のためになると判断した場合、きちんと実行に移せていた点は良かったと思います。 

* 楽しめている点
楽しめるのが一番！！

## おわりに

1ヶ月間を振り返りながらまとめてみました。
やはりフィードバックをもらえる環境はとてもありがたいなと思いました。
やりたいと言った事をやらせてくれたり、自分の目的達成のために協力してくれるいい環境です。

Railsを使った開発にもIncrementsの開発にも慣れてきたので、
開発スピード、成長スピード上げていきたいです。
数をこなしてどんどん成長していきます！！

就業型インターンに参加する人の不安を解消したり、
参加を考えている人が見て、参加の心理的ハードルが下がればいいなと思っています。