見出し画像

新卒エンジニアによる「技術力がなくても」コードリーディングする為のコツ

この記事は、Showcase Gig Advent Calendar 2022 21日目の記事です。

こんにちは。Showcase Gigの佐藤花菜です 🌻
私は今年4月に新卒エンジニアとして、Showcase Gigへ入社しました。

私は新卒で入社してから、O:der ToGoというテイクアウトサービスを扱うチームで働いているのですが、入社してから半年間ほどは、「これコード書いているよりもコード読んでいる時間の方が長いのでは?」 と、思ってしまうほどコードを読むのに時間がかかっていました。

そんな私ですが、「ある程度は読める!」 と思えるくらいまで成長できたので、自分が考えるコードリーディングのコツを書いてみます!

なぜコードリーディング力が必要なのか

例えば何か修正タスクを振られた場合、開発手順としては、「一度現状のコードを理解」→「該当箇所を修正」という手順を得ることになります。

新規開発プロジェクトではない限り、「現状のコードを理解する」というのは、プロジェクトにアサインされると必ず行わなければいけない手順 です。

また、コードリーディング力つをけることによって、ほかのチームの方から実装の仕様を質問された際に、すばやくコードから仕様を読み取り回答できる様になります。

コードリーディング力は言語理解力だけではない

この記事でとにかく伝えたい事がこの 「コードリーディング力は言語理解力だけではない」です。

私は、チームに配属されてからほとんど初めてバックエンドのコードに触れました。そのせいもあってか、わからないコードに対面した際、

「このコードは自分の言語理解が弱いから理解出来ないんだ」

と思考をとめてしまっていました。

そんな時、弊社の先輩から、「何がしたいかわからない処理の部分は一度図で書いてみると良いよ。」と、アドバイスをいただき図で書いてみると、構文は理解できており、そのコードを図では表すことができたのです。

そして、図で書いてみると「なぜこのようなコードになっているか」もっというと「なぜこのような分岐が起きているかわからない」という事がコードを理解できていない問題だった事に気付きました。

ここから、言語能力がない私だからこそ、「コードを読む前に前提知識を持つ」ということを意識をし始めました。

コードリーディングが楽になる前提知識

私がコードを読む前に必要だと感じた前提知識は以下のものになります

  1. システム全体像の理解

  2. 使用アーキテクチャ

  3. サービスが担当するドメインの知識(私でいうと飲食店のテイクアウトサービを扱っているので、飲食業界の基礎的な知識ですね)

  4. ユースケースの理解

少し私が扱っているサービスでの具体例を挙げると、

上の図のように私が実装しているO:der ToGoのバックエンドではO:der Platformというプラットフォームにつながっています。

また、O:der ToGoはテイクアウトサービスですので、ユーザーは商品を注文できるのですが、
この「注文する」だけでもO:der ToGoのバックエンドでは、

  • 受け取り日時が正しいかバリデーションする

  • 注文作成をプラットフォームにお願いする

  • 決済実行をプラットフォームにお願いする

などといった複数の処理を担っています。
これらの知識を持たずに注文処理のコード読み始るのと、理解したうえで読み始めたのでは、コードを理解するのにかかる時間はかなり変わってきます。

複雑なユースケースは図に描いてみる

コードリーディングで特に大事だと私が感じたのは、ユースケースの理解です。
複雑なユースケースの分岐はmiroなどで可視化してみるのがお勧めです。

図にする事によって、自分の理解にもつながりますし、不要な分岐を見つけ出せたりするので、リファクタにもつながりました。

結論

なんだこのコードは!と思ったら

  • ドメイン知識が足りているかを疑う

  • 複雑なユースケースは図に起こしてみる

という意識を続けるうちに、新卒でもある程度読めるくらいまでコードリーディング力をあげることができました

ドメイン知識を深めることにつながったり、図で書くことで、現状のユースケースの問題点に気付けてたりといった利点もあるので、ぜひ参考にしてみてください🌻

終わりに

最後まで読んでくださりありがとうございました。
初めてのブログでしたので拙い文章ではありますが、少しでも参考になりましたら幸いです。

エンジニア組織について、もっと知りたいという方は以下の採用ページを御覧ください!

Showcase Gigでは、一緒に働く仲間を募集しています。気になる方はぜひご応募ください!

いいなと思ったら応援しよう!