Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
レビュアーとして 成長するには
Search
samayou12
December 11, 2023
Programming
0
1.5k
レビュアーとして 成長するには
エンジニアのためのスキルアップ勉強会#1「妥協しないコードレビュー」
上記イベントでの発表資料です
samayou12
December 11, 2023
Tweet
Share
Other Decks in Programming
See All in Programming
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
300
複数人でのCLI/Infrastructure as Codeの暮らしを良くする
shmokmt
5
1.8k
スタートアップを支える技術戦略と組織づくり
pospome
8
13k
関数実行の裏側では何が起きているのか?
minop1205
1
310
JEP 496 と JEP 497 から学ぶ耐量子計算機暗号入門 / Learning Post-Quantum Crypto Basics from JEP 496 & 497
mackey0225
2
510
2025 컴포즈 마법사
jisungbin
0
160
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
4
220
レイトレZ世代に捧ぐ、今からレイトレを始めるための小径
ichi_raven
0
480
dotfiles 式年遷宮 令和最新版
masawada
1
220
なあ兄弟、 余白の意味を考えてから UI実装してくれ!
ktcryomm
10
9.5k
How Software Deployment tools have changed in the past 20 years
geshan
0
25k
分散DBって何者なんだ... Spannerから学ぶRDBとの違い
iwashi623
0
150
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
Context Engineering - Making Every Token Count
addyosmani
9
440
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
RailsConf 2023
tenderlove
30
1.3k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Building Adaptive Systems
keathley
44
2.8k
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から作ってメンテナンスをする ⇩ クソコード/ クソ設計に困ってキレるので、 次回から気をつけるようになる
わからないなりに、貢献する方法
「ここがわかりにくい」 良いコードとは理解しやすいコード ⇩ 新人でも理解できるコードであれば、理解しやすいコード ⇩ 「ここがわかりにくい」というコメントも役にたつ
終わりに
終わりに 結局、「本読んでコード書いてレビューもらってレビューして」 これをやった分だけ伸びていく 今日の話はその効率を上げるための話にすぎない
終わりに ただ、間違いないのはプログラマという職業は プログラミングという面では、努力が成果に結びつきやすい だから成長している実感が持てて楽しい 逆に言うと、成長している実感があれば楽しめると言うこと
終わりに 今日の話が、皆さんが停滞を打ち破り、楽しく成長するための ひとかけらのヒントになれば嬉しく思います