Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
知らないプロダクトのコードを爆速でキャッチアップする方法
Search
Minato Nakamura
April 13, 2024
Programming
0
250
知らないプロダクトのコードを爆速でキャッチアップする方法
Minato Nakamura
April 13, 2024
Tweet
Share
More Decks by Minato Nakamura
See All by Minato Nakamura
新規プロダクトをマネジメントするために工夫したこと
nelca
0
530
Other Decks in Programming
See All in Programming
C++20 射影変換
faithandbrave
0
560
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
240
明示と暗黙 ー PHPとGoの インターフェイスの違いを知る
shimabox
2
390
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
590
GraphRAGの仕組みまるわかり
tosuri13
8
510
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
260
既存デザインを変更せずにタップ領域を広げる方法
tahia910
1
260
PicoRuby on Rails
makicamel
2
120
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
700
ニーリーにおけるプロダクトエンジニア
nealle
0
710
システム成長を止めない!本番無停止テーブル移行の全貌
sakawe_ee
1
150
XP, Testing and ninja testing
m_seki
3
220
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
940
How to train your dragon (web standard)
notwaldorf
94
6.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
YesSQL, Process and Tooling at Scale
rocio
173
14k
The Invisible Side of Design
smashingmag
300
51k
Designing for humans not robots
tammielis
253
25k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
BBQ
matthewcrist
89
9.7k
GraphQLとの向き合い方2022年版
quramy
49
14k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Done Done
chrislema
184
16k
Transcript
知らないプロダクトのコードを 爆速でキャッチアップする⽅法 Mynato
目次 • 自己紹介 • 今日話すこと • 結論、この2つ • キャッチアップするためにやること •
何があると良いか • 結局のところ • まとめ 2
自己紹介 名前:Mynato(中村南斗) 所属:アスエネ株式会社 何やってる?:環境系BEエンジニア 兼 PdM 3
今日話すこと 初めて触るプロダクトにであった時 「どこからどうやってみていけば良いの?」 そんな時にちょっとだけ思い出してみてもらえれば コアラがなんか 言ってたな... 4
結論、この2つ • コードを読む(そりゃそう) • 周辺知識を把握する(うろ覚えでもよい) 5
キャッチアップするためにやること 歴史を知る • 古い仕様書を見にいく • 疑問のある仕様はガンガン聞く • 気になったキーワードはSlackで検索する • コードをblameして見ていく
◦ 関連するPRからチケットや仕様書を辿る 6
キャッチアップするためにやること ドメインを知る • わからない単語はとにかくググる • 仕様の背景になるドキュメントを社内・社外含めて漁る • とりあえずいろんなSlackチャンネルに入る • コード上のドメインロジックを探す→資料を探す→今の仕様を理解する→ドメイ
ンの理解を深める 7
キャッチアップするためにやること 機能を知る • 1つの機能は全てにつながる ◦ 機能に関連するテーブルは全部見にいく ◦ テーブルのリレーションから機能のつながりを理解する ◦ 指数的にわかる範囲が増えていく
• 疑問に思ったらまず画面を触る ◦ 手がかりがない時はコードから検索 →画面を触る→コードを詳しくみる ◦ 開発者ツールを開いておいて、 APIが叩かれてるかを知る →APIの中身も見る • 機能の中で気になる仕様はコードを見にいく ◦ 沼ることが多々あるが、他人に説明できる程度まで理解する 8
キャッチアップするためにやること 今起きていること、これから起きることを知る • 発生しているエラーは全て原因のあたりがつくまで調査する(という気持ち) • 問い合わせは全て自分でも調べてコードベースで理解する(という気持ち) • 一次情報まで調べにいく ◦ 公式ドキュメントしか勝たん
• CSの問い合わせ対応、セールスチームの案件情報をキャッチアップする ◦ これから起きるであろうことの予測、背景を把握する 9
キャッチアップするためにやること 歴史を知る ドメインを知る 機能を知る 今起きていること、これから起きることを知る 10
何があると良いか 検索力。とにかくいろんなところを調べてみる。 • どこで起きてる? ◦ コード全体でキーワードの検索 • 何をやってる? ◦ 迷ったら公式ドキュメント
• どうしてこうなってる? ◦ 社内ドキュメント、チケット • 誰に聞けば良い? ◦ 意外とSlackは情報の宝庫 11
何があると良いか 仮説と検証の繰り返し • この仕様はどういう背景でこうなっているのか ◦ ユーザーからの要望なのか ◦ システム制約なのか • ここのコードはどうしてこうなっているのか
◦ なんでこんなに複雑なのか ◦ なんでここで処理しているのか 12
何があると良いか 勘 • 起きている事象は ◦ FE or BEで処理されているのか ◦ DBのデータに保持されているのか
◦ ユーザー環境起因のエラーなのか • エラーとか問い合わせ見てたらなんとなく当たりがつく ◦ ユーザーがこういう操作をしてるのではとか ◦ このバッチが動いてるからとか ◦ →想像力とも言える 13
何があると良いか 検索力。とにかくいろんなところを調べてみる 仮説と検証の繰り返し 勘 (想像力) 14
とにかくコードを読む • しつこいくらいに深追いする ◦ バックエンドエンジニアでもフロントは見にいく ◦ DBのデータも見にいく ◦ ログも見る •
けど諦めも必要 ◦ 10分くらい同じ箇所をずっと眺めていたら諦める ◦ 誰に聞けばわかるか、も立派な知識(だから自分で頑張りすぎない) ◦ 魔境を見つけたら逃げよう 結局のところ 15
結局のところ 納得するまで触る→周辺知識を把握する • 機能を触る→コードを見にいく→触ってみるの繰り返し ◦ 自然とコード外の世界の理解も必要になる。 • 他人に対して自分が説明できるくらいまで理解する ◦ ドメインの知識をつけないと説明できない
◦ ユーザーがどう使っているのかという想像もできるようになる 16
まとめ とにかくコードを読んで 納得するまで触り 周辺知識を把握すれば 爆速キャッチアップできます!(N=1) 17
最後に 新しいプロダクトを爆速キャッチアップしたい方お待ちしております! 18