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
KUROKI Shinsuke
March 09, 2018
Programming
5
7.1k
伝わるコードレビューのために
コードレビューをするときに意識していることをいくつか
KUROKI Shinsuke
March 09, 2018
Tweet
Share
More Decks by KUROKI Shinsuke
See All by KUROKI Shinsuke
冴えてるRailsエンジニアの育て方
skuroki
7
11k
ActiveAdmin Better Practices@関西Ruby会議06
skuroki
0
350
進行中の開発プロジェクトで増えていくテストを自動で回し続けるために行ったいくつかのこと
skuroki
11
45k
Refactoring Ruby Edition in-house reading
skuroki
0
160
ActiveDecorator導入の話
skuroki
5
260k
Other Decks in Programming
See All in Programming
ARA Ansible for the teams
kksat
0
150
定理証明プラットフォーム lapisla.net
abap34
1
1.8k
技術を根付かせる / How to make technology take root
kubode
1
250
XStateを用いた堅牢なReact Components設計~複雑なClient Stateをシンプルに~ @React Tokyo ミートアップ #2
kfurusho
1
900
Boost Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
270
dbt Pythonモデルで実現するSnowflake活用術
trsnium
0
150
Open source software: how to live long and go far
gaelvaroquaux
0
630
『GO』アプリ データ基盤のログ収集システムコスト削減
mot_techtalk
0
120
GoとPHPのインターフェイスの違い
shimabox
2
190
GAEログのコスト削減
mot_techtalk
0
120
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
170
Pythonでもちょっとリッチな見た目のアプリを設計してみる
ueponx
1
560
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
174
51k
Building Your Own Lightsaber
phodgson
104
6.2k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
Agile that works and the tools we love
rasmusluckow
328
21k
Visualization
eitanlees
146
15k
GraphQLとの向き合い方2022年版
quramy
44
13k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
330
Typedesign – Prime Four
hannesfritz
40
2.5k
Transcript
伝わるコードレビューのために 2018/03/09 Aiming 黒木 慎介
自己紹介 • Aiming大阪スタジオ(ここ)勤務 • 新規タイトルのチームでwebエンジニアの リーダー • RailsでAPIサーバー書いたり、k8sでサー バー構成書いたり、…
いきなりですが宣伝 • Rails Developers Meetup 2018に出ます • 3/24,25 – 私がしゃべるのは25日
• 東京の会場は埋まっちゃってるけど大阪の 中継会場(ここ)は両日まだ席あります!! • 私はRailsエンジニアの採用〜教育について の話をします – 今日の発表はその内容から一部先出しです
今日話すこと • コードレビューするときに気をつけている事 – 「具体的にどう困るか」に落として言う – カッとなって本人のところに行く – 習熟を意識する –
褒める
「具体的にどう困るか」に落として言う • コードレビューで開発のスピードを落としてし まう要因→やりとりの回数 • PRを提出したメンバーは次の作業に着手す る – ので、常時PRを監視しているわけではなく、やり とりをした分だけのタイムラグが積み上がる
– また、PRの修正と次に始めた作業を行き来する とスイッチングコストがかかる
やりとりの回数を減らしたい • では、どのようなやり取りが回数を重ねてし まうのか? – 書き方などの宗教戦争 • チームの規約を決めてRubocop(とか)に働いてもら いましょう –
合意形成までが長い • 今日はこっちの話 • 昔見たコードレビューの話をします
昔見たコードレビュー(1) 「これなんで実装の片方しかテストしてないの」 「ロジック変わらないんで」 「でも実装は別々に書いたんでしょ」 「不安に思ったところはカバーできてるんで」 「いやでも他の人が修正して壊れるかもしれないよね」 「んーまあ僕は不安じゃないですけどじゃあ書きますわ」
昔見たコードレビュー(1) • たぶん最初から具体的にどこがどう不安な のかを指摘できていれば、1-2往復くらいで 済んだ
昔見たコードレビュー(2) 「ざっと見た感じHogeパターンを使ったほうが良さそう」 「大げさじゃないですか」 「どのへんが?」 「パターン使わなくても十分見通し良いと思うんで」 「うーん、でもこれSRP違反だよね ごめん見た目の問題じゃな かった」 「じゃあまあもう少し責務が明確になるようにします」
昔見たコードレビュー(2) • 最初の指摘がふわっとしすぎ – 議論によって問題点が明白になるプロセスは必 ずしも否定すべきものでもない – でもSRP違反を一発目に言えてればもっと速 かったよね
昔見たコードレビューたち • 類例多数 • 積み重なる不毛感 • 自分がレビューするときは一発で合意に到 れるように、何がどう困るのかをちゃんと言う ようにしようという決意
自分の最近のレビュコメ
自分の最近のレビュコメ
自分の最近のレビュコメ • まあ割と終始こんな感じ – コード例を叩きつけたりもする • 結構時間はかかってますが、やりとりはほぼ 1往復に納まってます – 他の条件(メンバーとかチームとか)もあるけど
ね
応用:習熟度を見て判断 • レビュイーのスキルによっては「もうこれにつ いては丁寧に説明する必要はなさそう」と判 断できる場合もある • 丁寧なレビュコメは時間かかるので、そう判 断できるときには省略もする
カッとなって本人のところに行く • そもそも文字のやり取りって結構つらくない ですか – 情報量が少ない – 同じ言葉でも棘が立って見えることがある • ならば、文字のやり取りをやめればよい
– 本人のところに行って直接話しましょう – なんだったらペアプロしましょう
直接話すと • 嬉しいこと – 反応が速い – コミュニケーションの手段が広がる • 図を書いて説明してもいい •
その場でコードを書いて見せてもいい – 相手の反応を見られる • どこで思考が詰まるか、快・不快になるかを観察でき る • それに合わせた話し方ができる • 悲しいこと – 記録に残らない • あとで話したことをコメントに残しても良い
習熟を意識する • 人間が1つの事に対して行える思考の量に は限界がある – 私はこれをMPと呼んでます • 同じことを考えたり意識するのにかかるMP は、繰り返すことにより低減していく •
そうして余剰するようになるMPで新たに追加 で考えることができるようになる • でもこの低減はすぐには起きない – 繰り返すことが必要
習熟を意識する • 相手の最大MP以上のことを教えても頭に入らない し、やってもらおうとしてもできない • 低減が十分に進んでいない場合、前に言ったことを また考えられず、同じミスをしてくる事がある • そういう状態なんだと思って、辛抱強くやるのが大 事
• (学ぶ側としては素振りが大事みたいな話し)
褒める • 良くないことの指摘だけしてると雰囲気が悪 くなってくる場合がある • 開発のテンション維持は大事 • フィードバックは正負両方有効 – 良い行動は強化したい
• 前言った事ができるようになってたらそれは ちゃんと言いたい
今日話したこと • コードレビューするときに気をつけている事 – 「具体的にどう困るか」に落として言う – カッとなって本人のところに行く – 習熟を意識する –
褒める