Reviewing Code Reviews

A presentation at PHPSW New Year Coding Resolutions, January 2017 in January 2017 in Bristol, UK by Lee Stone

Slide 1

Slide 1

Reviewing Code Review Lee Stone
! @leesto 1 Reviewing Code Review. Improving the process of improving

Slide 2

Slide 2

Reviewing Code Review Lee Stone
! @leesto 2 Hi. I’m Lee.  Organiser of PHPSW One of a great team to make sure nights like tonight happen

Web Team Lead at Gradwell Lead a team producing web applications for selling & managing Gradwell services $ Theatre Technician Local Amdram, Glastonbury, edFringe

Slide 3

Slide 3

Reviewing Code Review Lee Stone
! @leesto 3 Service Delivery Web Dev Vo IP
team CE O, Offic e
Ma na ge r/ HR Meeting Room 3 Meeting Room 2 Finance Spar e des k s Info Assur PG Fi na nc e Info Assur CE O

Slide 4

Slide 4

Reviewing Code Review Lee Stone
! @leesto 3 Service Delivery Web Dev Vo IP
team CE O, Offic e
Ma na ge r/ HR Meeting Room 3 Meeting Room 2 Finance Spar e des k s Info Assur PG Fi na nc e Info Assur CE O

Slide 5

Slide 5

Reviewing Code Review Lee Stone
! @leesto 4

Slide 6

Slide 6

Reviewing Code Review Lee Stone
! @leesto 4 Senior Developer Stefan Mid-Level Developer Nemanja Mid-Level Developer Vladimir Junior Developer Danijel Junior Developer Jovana QA Nemanja Junior Developer James Web Team Lead Lee

Slide 7

Slide 7

Reviewing Code Review Lee Stone
! @leesto 5 What is Code Review?

Slide 8

Slide 8

Reviewing Code Review Lee Stone
! @leesto 6 The activity of checking another developer’s code for defects and improvement opportunities

Slide 9

Slide 9

Reviewing Code Review Lee Stone
! @leesto 7 Checking code through a dedicated tool prior to merge upstream

Slide 10

Slide 10

Reviewing Code Review Lee Stone
! @leesto 8 Why Should We Review Code?

Slide 11

Slide 11

Reviewing Code Review Lee Stone
! @leesto 9 Prevent Bugs Reaching Production. Security Business Logic Coding Standards

Slide 12

Slide 12

Reviewing Code Review Lee Stone
! @leesto 10 Knowledge Share Ideal to mentor new developers Shared business logic - Remove SPOFs Discover Technical Approaches

Slide 13

Slide 13

Reviewing Code Review Lee Stone
! @leesto 11 Other Benefits. Improve Estimates Making Sure Solutions Meet Requirements

Slide 14

Slide 14

Reviewing Code Review Lee Stone
! @leesto 12 How We Complete Code Reviews

Slide 15

Slide 15

Reviewing Code Review Lee Stone
! @leesto 13 Crucible. Links with Atlassian Suite See the reviews on Jira tickets ‘One Stop Shop’ for us Indicate Defects On a comment, can mark it is a defect which is shown separately Easily See Differences Between Commits Highlights added/removed lines Can drag between commits to see history Auto Update for Changes on Branch Developer doesn’t have to update review on making changes & can’t forget

Slide 16

Slide 16

Reviewing Code Review Lee Stone
! @leesto 14 Everything is Reviewed.

Slide 17

Slide 17

Reviewing Code Review Lee Stone
! @leesto 15 Everything Should be Reviewed Within 2 Days

Slide 18

Slide 18

Reviewing Code Review Lee Stone
! @leesto 16 Everyone is invited to the review

Slide 19

Slide 19

Reviewing Code Review Lee Stone
! @leesto 16 Everyone is invited to the review 1 x Senior must sign off

Slide 20

Slide 20

Reviewing Code Review Lee Stone
! @leesto 16 Everyone is invited to the review 1 x Senior must sign off 1 x Other must sign off

Slide 21

Slide 21

Reviewing Code Review Lee Stone
! @leesto 16 Everyone is invited to the review 1 x Senior must sign off 1 x Other must sign off No defects

Slide 22

Slide 22

Reviewing Code Review Lee Stone
! @leesto 17 HipChat Bot Because we all forget

Slide 23

Slide 23

Reviewing Code Review Lee Stone
! @leesto 18 Effective Code Reviews

Slide 24

Slide 24

Reviewing Code Review Lee Stone
! @leesto 19 Don’t Make it Personal.

Slide 25

Slide 25

Reviewing Code Review Lee Stone
! @leesto 19 Don’t Take it Personally.

Slide 26

Slide 26

Reviewing Code Review Lee Stone
! @leesto 20 I find using “we” rather than “I” or “You” helps

Slide 27

Slide 27

Reviewing Code Review Lee Stone
! @leesto 21 Don’t just point out the error or problem and move on Provide Solutions

Slide 28

Slide 28

Reviewing Code Review Lee Stone
! @leesto 22 Put whitespace only changes into separate commits

Slide 29

Slide 29

Reviewing Code Review Lee Stone
! @leesto 23 Put ‘library’ code and ‘application’ code into separate reviews

Slide 30

Slide 30

Reviewing Code Review Lee Stone
! @leesto 24 What Has Gone Well For Us?

Slide 31

Slide 31

Reviewing Code Review Lee Stone
! @leesto 25 Increased knowledge of similar work at sprint planning sessions.

Slide 32

Slide 32

Reviewing Code Review Lee Stone
! @leesto 26 Tended towards standard approaches in a quicker fashion.

Slide 33

Slide 33

Reviewing Code Review Lee Stone
! @leesto 27 Seen opportunities to refactor and produce more generic libraries earlier.

Slide 34

Slide 34

Reviewing Code Review Lee Stone
! @leesto 28 Caught Security Issues Before Hitting Production SQL Injection Modifying Other Customer’s Settings Producing a List of Customer Emails Partners Seeing Gradwell Only Pages

Slide 35

Slide 35

Reviewing Code Review Lee Stone
! @leesto 29 Improved In-line Documentation

Slide 36

Slide 36

Reviewing Code Review Lee Stone
! @leesto 30 Increased Confidence From The Rest of The Business

Slide 37

Slide 37

Reviewing Code Review Lee Stone
! @leesto 31 Given Individual Developers More Freedom

Slide 38

Slide 38

Reviewing Code Review Lee Stone
! @leesto 32 Where Do I Have To Encourage The Team?

Slide 39

Slide 39

Reviewing Code Review Lee Stone
! @leesto 33 What are the most difficult reviews to get feedback on?

Slide 40

Slide 40

Reviewing Code Review Lee Stone
! @leesto 34 Anything by This Guy

Slide 41

Slide 41

Reviewing Code Review Lee Stone
! @leesto 35 A new developer to the team is more cautious about commenting on anyone else’s code. How to Encourage Newer Developers.

Slide 42

Slide 42

Reviewing Code Review Lee Stone
! @leesto 35 A new developer to the team is more cautious about commenting on anyone else’s code. How to Encourage Newer Developers. %

Start Small. Typos and coding styles are still important and are ‘less risky’ to comment on.

Slide 43

Slide 43

Reviewing Code Review Lee Stone
! @leesto 35 A new developer to the team is more cautious about commenting on anyone else’s code. How to Encourage Newer Developers. %

Start Small. Typos and coding styles are still important and are ‘less risky’ to comment on. %

Ask Why. Code reviews don’t have to be just for pointing out problems. Asking why an approach was taken can be a good learning opportunity.

Slide 44

Slide 44

Reviewing Code Review Lee Stone
! @leesto 35 A new developer to the team is more cautious about commenting on anyone else’s code. How to Encourage Newer Developers. %

Start Small. Typos and coding styles are still important and are ‘less risky’ to comment on. %

Ask Why. Code reviews don’t have to be just for pointing out problems. Asking why an approach was taken can be a good learning opportunity. %

Say If You Don’t Understand. We all have to maintain the code and readability is one of our most important considerations. If you don’t understand what is happening, we have probably done something wrong. Even if the code works.

Slide 45

Slide 45

Reviewing Code Review Lee Stone
! @leesto 35 A new developer to the team is more cautious about commenting on anyone else’s code. How to Encourage Newer Developers. %

Start Small. Typos and coding styles are still important and are ‘less risky’ to comment on. %

Ask Why. Code reviews don’t have to be just for pointing out problems. Asking why an approach was taken can be a good learning opportunity. %

Say If You Don’t Understand. We all have to maintain the code and readability is one of our most important considerations. If you don’t understand what is happening, we have probably done something wrong. Even if the code works. %

Bring Fresh Ideas Everyone can bring different experiences and suggest new and improved ways of approaching something.

Slide 46

Slide 46

Reviewing Code Review Lee Stone
! @leesto 36 Move Beyond Coding Standards

Slide 47

Slide 47

Reviewing Code Review Lee Stone
! @leesto 36 Move Beyond Coding Standards

Slide 48

Slide 48

Reviewing Code Review Lee Stone
! @leesto 37 What Do We Need To Improve?

Slide 49

Slide 49

Reviewing Code Review Lee Stone
! @leesto 38 Introduce Code Coverage Reports

Slide 50

Slide 50

Reviewing Code Review Lee Stone
! @leesto 39 Get Reviews Completed Quicker

Slide 51

Slide 51

Reviewing Code Review Lee Stone
! @leesto 40

Slide 52

Slide 52

Reviewing Code Review Lee Stone
! @leesto 40

Slide 53

Slide 53

Reviewing Code Review Lee Stone
! @leesto 41 Why so Long? Reviewers Don’t Want to Interrupt Flow Other developers don’t look until they have finished their task, or at an ideal break point

Slide 54

Slide 54

Reviewing Code Review Lee Stone
! @leesto 41 Why so Long? Reviewers Don’t Want to Interrupt Flow Other developers don’t look until they have finished their task, or at an ideal break point Developers Move on to Something New Resistant to context switch back to make any suggested changes

Slide 55

Slide 55

Reviewing Code Review Lee Stone
! @leesto 41 Why so Long? Reviewers Don’t Want to Interrupt Flow Other developers don’t look until they have finished their task, or at an ideal break point Developers Move on to Something New Resistant to context switch back to make any suggested changes Large Reviews are Harder to Start People see ’67 files changed’ and delay

Slide 56

Slide 56

Reviewing Code Review Lee Stone
! @leesto 41 Why so Long? Reviewers Don’t Want to Interrupt Flow Other developers don’t look until they have finished their task, or at an ideal break point Developers Move on to Something New Resistant to context switch back to make any suggested changes Large Reviews are Harder to Start People see ’67 files changed’ and delay It Gets Worse The more cycles, the longer since the code was written, the longer it takes to switch

Slide 57

Slide 57

Reviewing Code Review Lee Stone
! @leesto 42 These Delays Hurt Our Release Pace

Slide 58

Slide 58

Reviewing Code Review Lee Stone
! @leesto 43 How to Speed Up? Encourage Smaller Reviews

More partial reviews early on

Fundamentally create smaller stories to work on

Slide 59

Slide 59

Reviewing Code Review Lee Stone
! @leesto 43 How to Speed Up? Encourage Smaller Reviews

More partial reviews early on

Fundamentally create smaller stories to work on Encourage Use of Small Time Periods

Before / after meetings

Before / after lunch.

End of day

Slide 60

Slide 60

Reviewing Code Review Lee Stone
! @leesto 43 How to Speed Up? Encourage Smaller Reviews

More partial reviews early on

Fundamentally create smaller stories to work on Encourage Use of Small Time Periods

Before / after meetings

Before / after lunch.

End of day ‘Fixed’ Review Times I want to avoid this

Slide 61

Slide 61

Reviewing Code Review Lee Stone
! @leesto 44 Code reviews take time, but bring benefits to teams. Your approach needs to be customised to suit your team. In Summary…

Slide 62

Slide 62

Reviewing Code Review Lee Stone
! @leesto 44 Code reviews take time, but bring benefits to teams. Your approach needs to be customised to suit your team. In Summary… &

Think About…. What Do You Want To Get Out Of The Reviews?

Slide 63

Slide 63

Reviewing Code Review Lee Stone
! @leesto 44 Code reviews take time, but bring benefits to teams. Your approach needs to be customised to suit your team. In Summary… &

Think About…. What Do You Want To Get Out Of The Reviews? &

Think About…. How Do You Get Buy In From The Team?

Slide 64

Slide 64

Reviewing Code Review Lee Stone
! @leesto 44 Code reviews take time, but bring benefits to teams. Your approach needs to be customised to suit your team. In Summary… &

Think About…. What Do You Want To Get Out Of The Reviews? &

Think About…. How Do You Get Buy In From The Team? &

Think About…. What Tooling Can Fit Into Yo u r W o r k fl o w ?

Slide 65

Slide 65

Reviewing Code Review Lee Stone
! @leesto 44 Code reviews take time, but bring benefits to teams. Your approach needs to be customised to suit your team. In Summary… &

Think About…. What Do You Want To Get Out Of The Reviews? &

Think About…. How Do You Get Buy In From The Team? &

Think About…. What Tooling Can Fit Into Yo u r W o r k fl o w ? &

Think About…. How Do You Not Considerably Slow Your Release Pace?

Slide 66

Slide 66

Reviewing Code Review Lee Stone
! @leesto 45 Thank You. Any Questions?