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
samayou12
December 11, 2023
Programming
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
レビュアーとして 成長するには
エンジニアのためのスキルアップ勉強会#1「妥協しないコードレビュー」
上記イベントでの発表資料です
samayou12
December 11, 2023
Other Decks in Programming
See All in Programming
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
130
Contextとはなにか
chiroruxx
1
290
New "Type" system on PicoRuby
pocke
1
830
Oxlintのカスタムルールの現況
syumai
6
1.1k
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
570
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
110
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
260
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
160
The Arts and Crafts of Work in the AI Era — Toward Mastery in Software Development
kuranuki
1
750
Vite+ Unified Toolchain for the Web
naokihaba
0
280
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
240
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
5
1.9k
Featured
See All Featured
Bash Introduction
62gerente
615
220k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
For a Future-Friendly Web
brad_frost
183
10k
Design in an AI World
tapps
1
240
New Earth Scene 8
popppiees
3
2.3k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
250
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
250
Technical Leadership for Architectural Decision Making
baasie
3
400
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Transcript
レビュアーとして 成長するには エンジニアのためのスキルアップ勉強会#1 「妥協しないコードレビュー」 橋本遼太(hassy)
今回話すこと レビュアーとして、早く成長する方法 新人プログラマは自分の成長方法の一例として ベテランの方は若手の育て方の一例として 参考にしてもらえればと思います
橋本遼太( はっしー)/hassy X(Twitter): @samayou12 1996/12/21 生まれ(26 歳) 出身地 名古屋生まれ→ 川崎育ち→
岡山市(2022/10~) 趣味 サウナ、読書、音楽、ゲーム、外で飲む事、競馬、 服、サイクリング 前職 Youtube 広告ディレクター → 個人営業
自分のスタート地点 2022 年4 月にソニックガーデン入社 情報系の学校を出たわけでもなく、未経験でプログラマになった 文系学部出身(一般教養でruby, python, LISP, MATLAB をやった程度)
情報系のバックグラウンドがなく、そもそも何が良いコードかわからない!
もくじ なぜレビュアーとして成長するべきか 1. レビュアーとして、どう成長するか 2. コードレビューをしよう 3.
なぜレビュアーとして成長するべきか 1.
二つの理由 チームに貢献できる プログラマとしての力が伸びる
チームに貢献できる
チームに貢献できる 新人のうちはどうしても頼ることが多い でも「頼られてこそ頼れるし、頼ってこそ頼られる」 give されたなら、give を返そう 新人にとってもコードレビューはgive する手段の一つになる →give できていれば、頼る時も申し訳なさが減る
チームに貢献できる(自分のためにも) 自分の場合 自分が貢献できていない時に頼るのって申し訳ない でも、早く聞けば一発で終わることも多い 自分に貢献意識があれば遠慮なくさっさと聞けた チーム貢献が自分のためになった
プログラマとしての力が伸びる
プログラマとしての力が伸びる 悪いコードの例 DRY なプログラムでなく、プロジェクト内に同じコードが何ヶ所もある hiduke = 12 のような、わけのわからない変数がある 世の中にはいいコードと悪いコードがある
プログラマとしての力が伸びる 「機能を実装する」「メンテナンスしやすく機能を実装する」 この二つの間には大きな隔たりがある 世の中にはいいコードと悪いコードがある
プログラマとしての力が伸びる レビュアーとして成長する ⇩ 「良いコード/ 悪いコード」が分かるようになっていく ⇩ ひいては良いコードが書けるようになっていく
レビュアーとして 成長しよう!!!
2. レビュアーとして、どう成長するか
Q. どうすればレビュアーとして成長できるの?
A. 技術書とレビュー
レビューの大前提 自分の持っている引き出しでしか指摘ができない。 ⇩ 引き出しをいかに多く、すぐに取り出せるようにするかが大事
技術書を読む
方法1: 技術書を読む 技術書は引き出しを増やす効果が高い
方法1: 技術書を読む 技術書は筆者がある分野について、情報を体系的にまとめた物 ⇩ その分野についての引き出しを、広く体系的に習得できる
方法1: 技術書を読む( 注意点) 本には読むための要求ステータスがある。 ⇩ いかに名著であっても、いきなり理解できるかは別 背伸びしすぎると効率が悪い ※ 一年後に読み返して、内容が腑に落ちたということが普通にある
技術書を読む( 実例)
方法1: 技術書を読む( 実例) ネットで「エンジニアは読むべき」 と書かれていたので買った ⇩ 入社直後の自分では読めなかった ⇩ 一年後読み直してみたら、 読めるし面白く感じた
方法1: 技術書を読む( 実例) 一方で、レビュー指摘されたことが あることも多く書かれていた ⇩ 本を読んでいれば早く気がつけたことも多かったはず ⇩ 最適な読むタイミングがあるはず
技術書を読む、最適なタイミング 本を理解できない まだ読むべきではない 本を楽しく読める すでに知っていることが多いから「楽しい」 ⇩ 自分の場合は、「理解できるが、読むのが少し苦しい」 くらいの頃に読むのが一番良さそう
レビューを受ける/ 読む
方法2: レビューを受ける 題材が自分のコード ⇩ 自分が“ 今” 必要な引き出しを増やしてくれる 自分のコードの悪い点を改善できる
方法3: レビューを読む 題材がチーム、会社のコード ⇩ チームのコードの価値観がわかる 量が多いので、多くインプットできる 同じ間違いを事前に防げる
レビューを受ける( 実践編)
レビューを受けるだけの時から、 レビュアーとしての成長は始まっている
レビューを受ける( 実践) レビューをもらったら、まず意味を理解しよう
「修正します」だけではダメ レビューを受けて初めの頃は、修正して終わりにしてしまうことがある ⇩ なぜそうなのか?を理解したり議論することが大事
「修正します」だけではダメ Q. 内容を理解しろってことでしょ?
「修正します」だけではダメ A. そうだけど、それが新人には難しい......
「修正します」だけではダメ レビュアーにとっては当たり前過ぎて、伝える必要がな いと思っている情報がある(可能性がある) そもそも、何がわからないのか伝えないとレビュアーは 何を教えるべきかわからない なぜ難しいのか
「修正します」だけではダメ つまり、レビューのコメントはいつも完全な物ではなく、 時には自分で情報を取りに行く必要がある ⇩ 分からなかったら、コミュニケーションをとろう。 わかった気になって終わるのは止めよう
「修正します」だけではダメ そして、「なぜ?」まで理解して落とし込めれば応用が効く ⇩ 逆に言えば、「なぜ?」まで落とし込めないと、 単なる一対一対応の間違い探しから抜け出せない
「修正します」だけではダメ もし可能であれば最初の頃は 対面、zoom などリアルタイムでレビューを受けると良い ⇩ テキストで質問するより、時間がかからない エディタの使い方や、ショートカットなどプログラムだけで はわからない改善点を教えてもらえる
3. コードレビューをしよう
小さく始めよう いきなり全部やろうとするとパンクする、かも知れない
小さく始めよう 例えば、自転車の練習をするときどうしたか? ⇩ まずは補助輪使ったり、足をつけて地面を蹴るところから始めるはず
小さく始めよう(失敗例)
小さく始めよう(失敗例) 新人僕「とりあえずコードを読んで気がついたことを指摘しよう!」 ⇩ 全部読もうとするが、少しづつ集中力が落ちる ⇩ 最終的にはコードが目を滑っていく......
小さく始めよう(失敗例) 15 分後
小さく始めよう(失敗例) こうならないためには?
まず、1 行でわかる事から始める '( シングルクォート) 、 "( ダブルクォート) を使い分けているか ファイルの最終行は改行で終わっているか puts
やconsole.log のようなデバッグ用コードが残っていないか Article.writers.each のような時にorder をつけて順番を担保でき ているか こういう点は、その1 行のみで独立しているので、単なる間違い探しとして発見できる
引き出しからすぐ取り出せるように 何度も指摘していると、コードレビュー時に自然と気がつくように ⇩ オートモードになるので、他の部分に意識が割ける ⇩ 引き出しの量だけでなく、スピードも上がっていく
1 行から複数行へ 1 行でわかることを意識することに慣れる ⇩ 自然と複数行のコードもレビューできるようになっているはず
設計、メンテナンス性はどうなる 本で読んで知識を入れるのも良い ⇩ でも結局、DRY にしておくことの良さとか、 読みにくいコードのクソさを実感しないと必要だと思えない ※ 多くの人間は、必要だと思うまで本当の意味で認識できない
設計、メンテナンス性はどうなる 自分でアプリを1から作ってメンテナンスをする ⇩ クソコード/ クソ設計に困ってキレるので、 次回から気をつけるようになる
わからないなりに、貢献する方法
「ここがわかりにくい」 良いコードとは理解しやすいコード ⇩ 新人でも理解できるコードであれば、理解しやすいコード ⇩ 「ここがわかりにくい」というコメントも役にたつ
終わりに
終わりに 結局、「本読んでコード書いてレビューもらってレビューして」 これをやった分だけ伸びていく 今日の話はその効率を上げるための話にすぎない
終わりに ただ、間違いないのはプログラマという職業は プログラミングという面では、努力が成果に結びつきやすい だから成長している実感が持てて楽しい 逆に言うと、成長している実感があれば楽しめると言うこと
終わりに 今日の話が、皆さんが停滞を打ち破り、楽しく成長するための ひとかけらのヒントになれば嬉しく思います