概要
この記事は、Rettyサマーインターン2022の参加記です。バックエンドでの参加でした。
インターン概要
- 3週間
- 基本オンライン・出社も許可を取れば出来る
- GoとgRPCでマイクロサービスを開発
- 新しいマイクロサービスを設計から
- チーム開発・モブプロ
学んだこと
学びしかなかったです。というか、知っている技術領域や設計・開発思想等が一つもなかったので、当たり前なんですが。よく採用してくれたな...
TDD
今まで開発でテストを書くことがほぼなかったですが、初めて書きました。その勢いで(?メンターさんの宗派もあり?)後半のほうはTDDで開発を行いました。私的な観点ですが、TDDのメリットとして
- 振る舞いを定義してから実装に移れる
- 途中で、「こういう時は異常系?」「あれ、この場合って何が返ってくるんだ?」が起こりづらい
- 見通しを立ててから実装できる
のような点があると思います。一方、見通しを立てないと実装に移れない。というデメリットもあると思っていますが。
テストを書くメリットもかなり学ぶことが出来、大満足でした。テストは絶対書いたほうがいい気がします。思ったより時間はかからないですし、列挙するパターンが多すぎるときはそもそも関数の切り分けが上手くいっていないみたいなお話もメンターさんからいただきました。
Go
Goは初めてでしたが、Go結構好きになりました。書きやすいし、Pythonみたく変にグローバルになったりしないし、ポインタの概念等も上手く組み込まれてるし、パッケージ等の管理も結構簡単。個人的に、変数名をCapitalizeするとpublic関数になる規則に関してだけ好きじゃないかなあといった感じです(三週間しか触っていない感想ですが。)
クリーンアーキテクチャ
参加前は名前を知っているぐらいで、思想をインターン前に少し学んでから参加しました。手を動かしてみないと理解できない概念だと感じていて、インターンを通して60%ぐらいは理解できました。クリーンアーキテクチャについて書くと各方面からマサカリが飛んできそうなので、書籍を読んでから言及しようと思います。
モブプロ
モブプロを初めて行いました。正直、開発効率はかなり落ちると考えています。(人数にもよりますが)一方、理解度をそろえるという点では、かなり有用な手段だと考えていて、メンターさんからの受け売りですが、「ある領域の属人化を解消する目的」というのはしっくりきました。また、一番クリティカルに良いと思った点は、使ってる拡張機能であったり、VSCode内の検索の仕方であったり、ターミナルの使い方等、全員の「これを使うとちょっと便利になる」を見れるところだと思いました。自転車や、電車を知らない人が、徒歩圏内で生活出来るから、徒歩を不便と感じない。ように、「便利なもの」ってそれ自体を知る機会がないと使わないんですよね。(それが無いと強烈に不便であるものは別ですが。)
その他
- SQLとかしっかり書いたのは初めてでした。大した量は書いてないですが
- gRPCもはじめて、結構いい感じでした。
- git-hooksの導入もしました。あれいい。
Rettyインターンの良かった点
- 裁量がかなり委ねられていました。自主性を重んじるといったら安っぽく聞こえますが、デリゲーションポーカーというものを使用し、メンターさんにどの程度頼るか?みたいなものを自分たちで決めたり、出社のタイミングもチームで合わせていこうか~みたいに話して許可を出してもらったり、休憩のタイミングや、昼休憩、一日のスケジュール等をほぼ自分たちで話し合って決めていました。
- 出社したタイミングである程度のエンジニアさんと話しましたが、みんないい人でした。
- 人事の方との1on1が週一であり、フォローアップも充実していました。
まとめ
- しらない技術領域のインターン、めちゃくちゃよかったです。
- 非の打ち所がなかったインターンでした。テスト期間と被ってるのはしんどかったです。