+ All Categories
Home > Documents > Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the...

Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the...

Date post: 28-Mar-2018
Category:
Upload: vuongkhanh
View: 212 times
Download: 0 times
Share this document with a friend
73
Code review is an architectural necessity Colin Dean @colindean 1
Transcript
Page 1: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Code review is an architectural necessity

Colin Dean@colindean

1

Page 2: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

@ColinDean

Software Engineer

Organizer, Abstractions.io

Wearer of many hats2

Page 3: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

My words are my own and not my employer(s), past or present.

Please save questions until the end of the presentation.

3

Page 4: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Agenda• Quick anecdote

• What is code review?

• What problems does code review solve?

• Quality attributes code review ensures

• Tips for code reviews

• Limitations4

Page 5: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

5

Page 6: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Agenda• Quick anecdote

• What is code review?

• What problems do code review solve?

• Quality attributes code review ensures

• Tips for code reviews

• Limitations6

Page 7: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

What is code review?

7

Page 8: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Code review is the process by which those who maintain a software codebase evaluate a proposed change to that codebase, regardless of the source of the proposed change.

8

Page 9: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Code review is systematic examination of computer source code.

9

Code Review, Wikipedia

Page 10: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Peer Review

10

Page 11: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Code Review

11

Page 12: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Code Review Vocabulary• Change - an individual unit of work altering what exists

• Submission - a collection of changes

• Submitter - the person proposing the submission

• Reviewer - the people evaluating the submission

• Annotation - remarks or ratings bestowed upon the submission

12

Page 13: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

The submitter proposes changes in a submission, which is evaluated by a

reviewer, who annotates or accepts it.

13

Page 14: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Inspection Team review Walkthrough Pair

programmingPeer

deskcheck, passaround

Ad-hoc review

Wiegers’ peer review formality spectrum14

Least formalMost formal

Page 15: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Most formal Least formal

Inspection Team review Walkthrough Pair

programmingPeer

deskcheck, passaround

Ad-hoc review

Wiegers’ peer review formality spectrum15

Page 16: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

16

Page 17: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Agenda• Quick anecdote

• What is code review?

• What problems does code review solve?

• Quality attributes code review ensures

• Tips for code reviews

• Limitations17

Page 18: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Code review solves two major problems.

18

Aside from the primary goal of reducing defects,

Page 19: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Mental model synchronizationCode review solves

19

Page 20: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

20

Page 21: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

21

Page 22: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Close enough Need guidanceOn target

22

Page 23: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Tribal knowledge developmentCode review solves

23

Page 24: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Michael KeelingCreating an Architecture Oral History, SATURN 2012

“Architecture oral history requires

that the team is both willing and

able to retell the stories and keep

the oral history alive.”

24

Page 25: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Write it down.Make it searchable.

Code review forces us to

25

Page 26: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Agenda• Quick anecdote

• What is code review?

• What problems does code review solve?

• Quality attributes code review ensures

• Tips for code reviews

• Limitations26

Page 27: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

MaintainabilityCode review ensures

27

Page 28: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Maintainability

• Learnability

• Understandability

• Serviceability

Code review drives

28

Page 29: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Learnability• Developing Code

• Patterns & Conventions

• Risks & Goals

• Developing People

• Common Vocabulary

• Teaching Moments

Maintainability Learnability Understandability Serviceability

Code review drives

29

Page 30: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Learner

Expert

Coding Reviewing

Coding

Reviewing

SynchronousPairing &Teaching

ExemplaryReading

ConstructivelyCritical

Evaluation

SerendipitousEvaluation of

Example

Maintainability Learnability Understandability Serviceability

30

Page 31: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Understandability

• Establishes common yet evolving mental model

• Builds confidence in direction and design decisions

• Builds tribal knowledge

• Bonus: Enables elevator pitch

Maintainability Learnability Understandability Serviceability

Code review drives

31

Page 32: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Serviceability

• Exposes addressable “gotchas”

• Exposes end-user interaction points

• Establishes consensus on supported workflows

Maintainability Learnability Understandability Serviceability

Code review drives

32

Page 33: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Linus’s Law

“Given enough eyes, all bugs are shallow.”

33

Page 34: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Maintainability

✓Learnability

✓Understandability

✓Serviceability

Code review drives

34

Page 35: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

First programming job out of school - B2B imprinting company

if($customer == “spacely_sprockets”) { do_something(); }else { cry(); }

• Version control!

• No code review tooling or process

• Minimal pairing

• Continous integration easily circumvented35

Page 36: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Lack of code review

36

Lost Opportunities

Page 37: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Lack of code review

37

Lost OpportunitiesLost Revenue

Page 38: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Lack of code reviewLost Opportunities

Lost RevenueLost Job

38

Page 39: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

ComplianceCode review ensures

39

Page 40: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Compliance

• Accessibility

• Auditability

• Idiomaticity

Code review drives

40

Page 41: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Second job out of school - Consulting

• Lone wolf working alongside other lone wolves

• No version control in proprietary software with custom “IDE” a.k.a. textarea.

• Last modified and modifier only

• No process of our own

41

Page 42: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

First professional code review experience was group review

• Subcontractor on government project, 2010-2012

• Lone SME on platform

• Borland StarTeam + in house review system

• My tools for version control integration

• Weekly merge window

• Round robin inspection

42

Page 43: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

43

Page 44: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Not a pleasant experience• Three to four hour weekly round robin inspection

• Cutthroat mixture of competing contractors, subcontractors, and employees

• Embarrassment galore ☞ Not a learning environment

• Immediate defensive posture

• “Merge next week” = you failed, possibly delayed project

44

Page 45: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

$1,450 per hour

45

Page 46: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

$1,450 per hour$5,800 per weekly meeting

46

Page 47: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

$1,450 per hour$5,800 per weekly meeting$290,000 per year

47

Page 48: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Effects?

• Waste

• “Get this over with.”

• Obstructionism

• Plenty of bugs

• “I’ll fix that mistake later.”48

Page 49: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Missed opportunities• Accessibility expert was most vocal

• Project manager was vocal on contractual and HF matters

➡Both could have reviewed asynchronously

• Project was behind

➡Too many people could say No49

Page 50: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

SecurityCode review ensures

50

Page 51: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Security

• Spot vulnerabilities

• Teach best practices

• Filter unnecessary code

• YAGNI

Code review drives

51

Page 52: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Reviewers are like your lawyerScreening and recommending actions to minimize risk, avoid preventable mistakes

52

Page 53: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Agenda• Quick anecdote

• What is code review?

• What problems does code review solve?

• Quality attributes code review ensures

• Tips for code reviews

• Limitations53

Page 54: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

When should you integrate code review?

54

Page 55: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Context

• Project

• Technical

55

Page 56: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Keep reviews informal and short.

56

Page 57: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Tips for thorough code review

• Devote time

• Accept debt

• Identify churn

• Minimize pedantry

• Make progress57

Page 58: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Major things we look for• Algorithmic complexity

• Exception & error handling

• Exception, class, & variable naming

• Logging sufficiency & level

• Style conformation (automate!)

• Long lines & methods

• Readability

• Single purpose per commit

58

Page 59: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Most importantly

Does it work?Is it tested?

59

Page 60: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Agenda• Quick anecdote

• What is code review?

• What problems does code review solve?

• Quality attributes code review ensures

• Tips for code reviews

• Limitations60

Page 61: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Analyze dynamic structuresCode review cannot

61

Page 62: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Go on endlesslyCode review cannot

62

Page 63: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Solve political problemsCode review cannot

63

Page 64: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Agenda• Quick anecdote

• What is code review?

• What problems do code review solve?

• Quality attributes code review ensures

• Tips for code reviews

• Limitations64

Page 65: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Code Reviewis systemic examination of proposed changes to a codebase.

solves mental model synchronization and tribal knowledge development.

ensures maintainability, compliance, & security.

must be short, thorough, and automated where possible.

will not solve all human problems, but some is better than none.

65

Page 66: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

1,500+ software professionals in Pittsburgh in August

abstractions.io

@abstractionscon66

Page 67: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

@ColinDean

github.com/colindean/talks

speakerdeck.com/colindean

67

Page 68: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

FIN

68

Page 69: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Attributions• Westminster College picture: https://www.flickr.com/photos/westminstercollege/15759678054/in/album-72157649340620016/

• RMU picture: http://cfbarchitects.com/higher-education/selected-projects/academic-buildings-libraries-learning-commons/robert-morris-university/

• Pittsburgh picture: probably Dave DiCello

• On switch https://openclipart.org/detail/180085/switch-on

• Off switch https://openclipart.org/detail/180084/switch-off

• “Their first code review” http://classicprogrammerpaintings.tumblr.com/post/142702963264/their-first-code-review-william-frederick

• Bass, Len; Paul Clements, and Rick Kazman. Software Architecture in Practice. Addison Wesley, 2013.

• Wiegers, Karl E. Peer Reviews in Software. Addison Wesley, 2012.

• Cohen, Jason, Steven Teleki, and Eric Brown. Best Kept Secrets of Peer Code Review. Smart Bear Software, 2006.

• Wilhelm, Alex and Alexia Tsotsis. Julie Ann Horvath Describes Sexism and Intimidation behind Her Github Exit. TechCruch, 2014 March 15. Retrieved 2016 April 26. http://techcrunch.com/2014/03/15/julie-ann-horvath-describes-sexism-and-intimidation-behind-her-github-exit/

• and others mentioned in the slides

69

Page 70: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

No, really. Fin. Srsly.

70

Page 71: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Third out of school and current job -Engineering• Highly disciplined team using Java, Scala, and Groovy

• Git + Gerrit

• Constructively critical feedback

• No criticism without alternative solution and reasoning

• Wide experience range: 1-2 yrs to 25+ yrs

• Team split in late 2014, I was asked to be tech lead71

Page 72: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Github Enterprise in 2016

• All new projects

• Same workflow as public Github

72

Page 73: Code Review Is an Architectural Necessity · PDF fileReviewer - the people evaluating the submission ... and how code review enables these attributes in a system architecture. Created

Code Review Tools

Used Haven’t Used

Like

Dislike

★Github★Gerrit★Gitlab

• Gitbucket• BitBucket

★StarTeam• Phabricator

• git-assess

73


Recommended