Django+DRFで新卒初月から業務開発!?どんな1年を過ごしたか新卒の視点から振り返る編

まえがき

こんにちは。バックエンドエンジニアの@mobojisan と申します。

ティアキン発売記念におやすみをいただいて以来、こころが完全にハイラルに持ってかれておりました。異変解決のひとつが一段落してやっと現実に戻ってきた系エンジニアです。はやくリンクくんをゲルド衣装にしたいぞ。

2年目に突入してはや2ヶ月、もはや新卒ではないのですが、今回は昨年度新卒だった僕の目線から、 1年間の過ごし方と意識していたことについて書いていきます。

前回の記事は下から見られます。

xmart-techblog.hatenablog.com

記事の対象者

  • ベンチャー1人目のエンジニア新卒がどのようなことをしたのか見たい方
  • 新人がどういったところにつまずくのか気になる、メンターなどをされている方

1年間何やったの?

  • 4月 ビジネス研修をしつつ文言変更程度の超簡単なチケットをリリース

  • 5~7月 ロジックの大きな追加更新のない簡単なタスクを数件こなす

  • 7~8月 DRFのコードリーディングに課題が見えてきたので、DRFを扱った技術書を題材に技術研修

  • 8~12月 プロジェクトにアサインされる。ほかのエンジニアの数倍の時間をかけつつ本格的な開発チケットをこなす

  • 1月~3月 1つ1つにかける時間を短縮、また機能ごとのテストをつけるのに慣れ、発行されるクエリも見るなど速度改善に意識が向く

昨年度をおおまかに振り返るとこのような感じでしょうか。

入社当時は3ヶ月くらいでDRFマスターしてばりばりコード書くぜ!と意気込んでいました。

初のPRを4月に出してリリースしたぞと勢いづいたまではよかった。

初の本格的な業務開発とあって、機能開発を本格的にできるようになるまで半年と少し、テストをつけたまともなコードをPRに出せるようになるまで9ヶ月程度とキャッチアップにそこそこ時間がかかってしまいました。

個人的な感覚で学習曲線を描くとすれば、もうずっと断崖を駆け上るような1年でした。がんばり薬ほしかった。

スキル感について

当時のスキル感としては、機械学習に興味があり、TensorflowやOpenCVなどのライブラリを軽く触って簡単なアプリを作った程度でした。

弊社で使っている技術スタックで言うと、バックエンドで使っているDjangoは関連ライブラリを利用してチーム開発のなかログイン画面をかなり苦労して実装したことがありましたが、自分でアプリを作ろうとした際はデバッグが難しく挫折経験がありました。

DRFはまったく触った経験がなく、フロントは素のjsをちょっと触ったことがあるくらいです。

また、チーム開発で必要なGitの知識について、最低限ブランチを分ける程度はあるものの、意味をあまり理解せずに使っているような状況でした。

環境について

クロスマート初のエンジニア新卒、そして正社員としては4人目のエンジニアの位置付けで入社しました。

技術研修はないよ!と言われていたのですが、面接の際にどのような仕事をするのか、実際の開発中のJIRAチケットをいくつか見せていただきました。

なんならこういったプロジェクトに参画することになるよというのも聞かせていただいた気がします。

そのため、仕事でどういった開発をすることになるかはかなりイメージがついていたつもりです。

それもあってか、入社前にDjangoを復習しつつばりばりキャッチアップするぜ〜〜〜!!!と鼻息を荒くしながらバルクアップしていた記憶があります。

入社してからですが、クロスマートは特にエンジニアではリモート文化が根付いていることもあり、数週間程度はSlackにてテキストベースで非同期にコミュニケーションをとっていました。

しかしエラーや意図しない動作に直面した時、どういう質問をすれば解決の糸口を得られるのか非常に悩みました。

数十分調べてわからないことを1時間かけてまとめる、といった本末転倒気味のこともやらかしてしまっていたように思います。

練りに練ったあげく大してまとまってない…
練りに練ったあげく大してまとまってない…

そんな僕を見かねたメンター小久保さんが取り組んでくださったのが以下。

xmart-techblog.hatenablog.com

Slackハドルを利用していつでも質問に行ける環境を作ってくださったんですね。詳細が気になる方は上リンクもぜひご覧ください。

小久保さんの人を惹きつけるホスピタリティもあってか、東京都と北海道の距離がありながらも、横の席にいるかのようなコミュニケーションをとることができました。

VSCode Live Shareで向こうからコードとシェルも触れることもあり、ここどうなってるんだ?と聞かれても逐一テキスト化せず画面上で説明することで済むのは非常にありがたかったです。

また、メンティーの目線からはメンターがどのように問題の根本を掴むのか、あたりの付け方を知れるのも良かったです。テキストベースだとこうしたところは薄くなりがちでもあります。

回答についても背景を知ることであやふやにすることがなくなり、理解を深めやすくなったと思います。

とくにサービス依存の部分については、検索では糸口が掴みにつかったりすることもあって大いに助けになりました。

個人的に意識したこと

1人目新卒エンジニアということもあり、ある程度トレースをつける、つまづいたところがほかの方から見える状態をつくることを意識しました。

具体的にはドキュメント化です。

疑問 -> 解決法という形で記事をまとめる
疑問 -> 解決法という形で記事をまとめる

PMの杉原さんやEM山田さんなど、周囲にも仔細にドキュメント化を率先してやっておられる先輩がいるため、彼らを見習っているところもありますが、コードにできるものはコードやコメント、コミットメッセージに落とし込むようにしています。

とはいえ仕様やサービスについては環境依存であったり、フロー的な部分もあったりでコード化できないことがあり、こういった部分をとくに優先してドキュメント化していました。

新人がどこにつまづくかある程度予測はついても、実際につまづくポイントを完全にイメージするのは難しいです。

偉そうにいったものの、一番は自分のためにしているところもあります。

忘れっぽい自分としては主に使用頻度の低いコマンドを記録し、仕様を思い返すのに使っております。要は自分の足を撃たないために、検索の手間を省いているわけですね。

n=1であっても記録に残してあることによって、例えばチュートリアルを補完する際に自分がまとめておいたドキュメントを活かしていただくことがありました。

あとがき

いかがだったでしょうか?

話は変わりますが、弊社クロスマートでは新卒中途問わず、ポジションはさまざまにエンジニアを募集しております。

少しでもご興味持っていただけましたら、カジュアルに記事にスターを入れ、 そしてカジュアルに面談を申し込んでいただけますと書いているこちらにもとても励みになります。

xorder.notion.site