マネーフォワードで1年間インターンをしてみて
この記事はMoney Forward 関西拠点 Advent Calendar 2021の24日目の記事です。
23日目は,大倉さんのスクラムとボクでした。大倉さんの今までの経験,普段の思考が垣間見える素晴らしいポエムでしたね。
初めまして!マネーフォワード関西開発拠点でエンジニアのインターンをしている吉岡です。2020年の10月からインターンをしており,早くも1年以上経過したので,1年間のインターンを通して,どれほど成長することができたのか書いていきたいと思います。
まずは,インターンを始めた時と現状のレベルをざっと比較していきます。
インターンを始めた時のレベル
- プログラミングを始めて半年ほど
- 競技プログラミングでPythonを使用(AtCoder茶色)
- Rails,Reactのチュートリアルを終え,ブログぐらいなら作れそう(テストは書いたことなく,動けばいいだろうという考え)
- クラス,selfって何?
現状
- AtCoder緑
- Rails,Reactでの実務経験(API開発からフロントの実装まで)
- GoやPythonでの実務経験(他社で1ヶ月ほどですが)
- Rspecでテストパターンの漏れが無いようにテストが書ける
- 新機能の開発だけでなく,既存の機能の改修も経験
- 一つのタスクを適度な粒度に分解して,適宜質問をしながら作業を進めることができる
- オブジェクト指向がなんとなくわかる
こうしてみると,チュートリアルを終えたばかりの人間が1年で実務に携わることができていると思うと感慨深いですね。なんなら,今よりもインターンを始める前の方が,「俺はコードが書ける」と思っていたぐらいです。無知とは恐ろしい。。。
次に実際にインターンにジョインしてから今まで何を行ってきたのか紹介していきたいと思います。
研修期
最初に2ヶ月ほどの研修期間がありました。研修内容は,1つのWebアプリをメンターの方にコードレビューや壁打ちを行ってもらいながら開発を進めていくといったものです(なんとお給料まで出ます!)。僕のメンターは大倉さんでした。ここでの指導が今のエンジニア力につながり,成長速度を爆速にしてくれたなと感じており,師匠だと思っています!
具体的には,以下のようなことを学びました。
- アプリの作り方(仕様やDB設計,JIRAを使用した開発)
- Restfulとは,オブジェクト指向とは
- Qiitaやブログを鵜呑みにするのではなく,公式ドキュメントを必ず参照して,コードの背景まで説明できるようにすべき
- Rspecの流儀
- わかりやすい命名
- 責務の分割(サービスクラス,decoratorの導入)
などなど,ここには書ききれないぐらい学びました。また,Docker環境やCircleCIによるテストの自動化などインフラ領域を少し触れる機会もありました。
特に,3番の,「公式ドキュメントを必ず参照しなさい」というアドバイスは非常に貴重なアドバイスでした。普通のエンジニアならば当たり前のことかもしれませんが,初学者がついついやってしまうことで,最初にいい癖をつけてもらったなと感じています。また,ただレビューで指摘されるだけではなく,参考資料と一緒に指摘していただいたり,読むべき本をサッと薦めていただいたのもより理解につながったのかなと感じています。
↑研修中に読んだ本(一部抜粋,マネーフォワードの京都拠点にある本を借りることができました)
実務期
研修を終えたあとはいよいよ実務に入りました。いきなり実務に放り出される....などということはもちろんなく,管理画面や小さいタスクから任せていただきました。その後は,新機能の開発,既存機能の改修など様々な領域にチャレンジできます!開発は,一人で実装を行い,わからないことがあれば適宜質問,そしてメンターともう一人のチームのメンバーにコードレビューをしてもらうといった流れです。実際にどんな開発を行ってきたのか書こうとも思ったのですが,ダラダラと書くのもあれなので,開発をしていく中でよかったことを書いていきたいと思います。
1.質問のしやすい環境
Slack上で非同期的にいつでも質問ができるので,わからないことがあれば気軽に質問ができます。また,必要があればDiscordを使って同期的に質問もできるため開発がしやすい環境です(1時間調べてもわからなかったことが一瞬で解決することも)。加えて,ただわかりませんと質問するのではなく,何を解決したくて,何を行っていて,何がわからないのかを踏まえて質問する癖もつきました。
2.週1の1on1で悩みや方向性を相談
メンターの方と週に1回,1on1を行っています。ここでは,開発で詰まっているところ,自分が挑戦してみたい技術はもちろんのこと,エンジニアとしてのキャリアの悩みなど非常に幅広い範囲の相談が行えます。「挑戦できる環境ってどこの会社でも言ってそう」,と当初は思っていたのですが,より大きなタスクに挑戦してみたい,RailsだけではなくReactにも挑戦してみたいといった相談をさせていただいたところ,僕ともう一人のインターン生で既存の機能を改修するReactのタスク(むしろ大きすぎるタスクでしたが。。。)を任せていただき,技術的に挑戦できる環境だなと感じています(関西拠点のGive it a try!という精神が体現されています!)。他にも,「Railsを理解して使っているというよりは覚えようとしてしまっている,CSやインターネットの知識が不足している」と言った悩みに対しても,「RailsではなくRubyを勉強すべき」と言ったアドバイスや本を紹介していただけたりなど,1on1が様々な悩みの解決につながっています。
↑アドバイスを受けて,最近読んでいる本
3.複数人によるコードレビュー
関西拠点のエンジニアはどの方もレベルが高く,その方々からレビューをいただけるという非常に恵まれた環境です。しかも,複数人の方からレビューをしていただき,多角的な意見をもらうことができ,実力UPにつながっています。最近では,バックエンド領域を得意とする大倉さん,フロント領域を得意とする上石さんの二人からDiscordを使ってリアルタイムでコードレビュー会をしていただくというとても贅沢な機会を設けていただいています。
4.実務経験を積むことができた
何と言っても実務経験を積むことができたというのはかなりいい経験になったと思います。個人開発レベルでは気にならないパフォーマンスの問題,運用・保守を意識した実装,ユーザのことを考えた開発など,実務では気にしなくてはいけないことが山ほどあり,その経験をサポート体制が整った中で積むことができたのは,成長に大きくつながったと感じています。
最後に
1年間のインターンを通して,とにかくエンジニアとして成長することができたなと感じるばかりです。ただ,まだまだ知識・経験ともに足りないことばかりなので,これからも成長し続けていきます!
このように,マネーフォワードの関西拠点では,成長したい,エンジニアとして強くなりたいという方に最適な環境が整っています! 正社員だけではなく,インターン生も絶賛募集中です!
明日は,Money Forward 関西拠点 Advent Calendar 2021もいよいよ最終日!西村さんです!