SlideShare a Scribd company logo
©2008–18 New Relic, Inc. All rights reserved
Ground Rules for Code Reviews
Joshua Gerth, Senior Software Engineer, NRDB Team
©2008–18 New Relic, Inc. All rights reserved
Improving Development Velocity and Team Communication
©2008–18 New Relic, Inc. All rights reserved 2
Safe Harbor
This presentation and the information herein (including any information that may be incorporated by reference) is provided for informational
purposes only and should not be construed as an offer, commitment, promise or obligation on behalf of New Relic, Inc. (“New Relic”) to sell
securities or deliver any product, material, code, functionality, or other feature. Any information provided hereby is proprietary to New Relic and
may not be replicated or disclosed without New Relic’s express written permission.
Such information may contain forward-looking statements within the meaning of federal securities laws. Any statement that is not a historical fact or
refers to expectations, projections, future plans, objectives, estimates, goals, or other characterizations of future events is a forward-looking
statement. These forward-looking statements can often be identified as such because the context of the statement will include words such as
“believes,” “anticipates,” “expects” or words of similar import.
Actual results may differ materially from those expressed in these forward-looking statements, which speak only as of the date hereof, and are
subject to change at any time without notice. Existing and prospective investors, customers and other third parties transacting business with New
Relic are cautioned not to place undue reliance on this forward-looking information. The achievement or success of the matters covered by such
forward-looking statements are based on New Relic’s current assumptions, expectations, and beliefs and are subject to substantial risks,
uncertainties, assumptions, and changes in circumstances that may cause the actual results, performance, or achievements to differ materially
from those expressed or implied in any forward-looking statement. Further information on factors that could affect such forward-looking statements
is included in the filings New Relic makes with the SEC from time to time. Copies of these documents may be obtained by visiting New Relic’s
Investor Relations website at ir.newrelic.com or the SEC’s website at www.sec.gov.
New Relic assumes no obligation and does not intend to update these forward-looking statements, except as required by law. New Relic makes no
warranties, expressed or implied, in this presentation or otherwise, with respect to the information provided.
©2008–18 New Relic, Inc. All rights reserved 3
The Team Had a Problem
?!!??!
??? !!!
!?!
?!?
©2008–18 New Relic, Inc. All rights reserved 4
Collision Points
Reviewer:
The constant should be
on the lefthand side.
Author:
In Java you can’t do an
assignment in a conditional.
Reviewer:
It’s still good practice.
if ( counter == 100 ) {
return “Target reached”;
}
The tone feels patronizing.
Leaves the change request in
an “unknown” state as it’s not
Blocked or Approved.
©2008–18 New Relic, Inc. All rights reserved 5
Collision Points
return offset < TIME_LIMIT &&
getStartTime() <= timestamp;
Reviewer:
"offset >= 0 && offset < TIME_LIMIT"
would be more clear
Author:
Made the change.
Clarity is subjective.
Author feels frustrated.
Reviewer feels unappreciated.
Lose/Lose.
©2008–18 New Relic, Inc. All rights reserved 6
Taking a Step Back
What was going on? Why was it happening?
How can we fix it?
Code Reviews
©2008–18 New Relic, Inc. All rights reserved 7
How Can We Give Effective Feedback?
• Creative writing 101
• ….
• ….
• How to give critical feedback
• ….
• Computer Science 101
• ….
• Data structures
• Algorithm analysis
• ….
Creative Writing Computer Science
©2008–18 New Relic, Inc. All rights reserved 8
Types of Feedback
Finding these issues in a code review is easy.
“Your variable should use camel
case, not snake case”
Subjective Comments
Finding these issues in a code review is rare.
“Your method name is confusing”
“Your curly brace is on the wrong
line"
“You have created an infinite loop”
“You are missing a semicolon”
“Your boolean logic is wrong”
Objective Comments
©2008–18 New Relic, Inc. All rights reserved 9
Mixing Subjective with Objective
Minimizes
difference
of opinions
Causes
frustration and
resentment
Can lead to a
breakdown in team
communication
Disregards
feelings
“My opinion is the correct one”
©2008–18 New Relic, Inc. All rights reserved 10
Establishing Ground Rules
BLOCKING NON-BLOCKINGBLOCKING BLOCKING
Errors that will
cause an issue in
production.
1
Stated goal of the
change aligns with the
actual changes.
2
Changes align with
the team’s coding
standards.
3
Anything they
personally
disagree with.
4
The reviewer should be looking for the following
©2008–18 New Relic, Inc. All rights reserved 11
Adding Tags
Subjective Comments
Blocking:
Objective Comments
Your boolean logic is wrong
You have created an infinite loop
You are missing a semicolon
Blocking:
Blocking:
Non-blocking: Your method name
is confusing
Non-blocking: Your curly brace is on
the wrong line
Non-blocking: Your variable should use
camel case, not snake case
©2008–18 New Relic, Inc. All rights reserved 12
Concerns
1
The author would ignore
non-blocking comments.
The code our team
produced would not appear
uniform.
2
©2008–18 New Relic, Inc. All rights reserved 13
Sponsoring a Coding Standard
Coding Standards must:
Be written in non-subjective language.
Be fully supported by the sponsor.
©2008–18 New Relic, Inc. All rights reserved 14
Impact
Tone of the subjective comments
became more respectful. Provided
more context.
Authors read, and
responded to,
non-blocking comments.
Authors felt less
resentment and reviewers
felt more appreciated.
Review process
took less time.
Onboarding new reviewers was
quick and easy.
©2008–18 New Relic, Inc. All rights reserved 15
Team Autonomy
Only define what reviewers
should be looking for and
how to give feedback.
Ground rules still support team autonomy.
Each team can adopt which ever
style guide they want.
©2008–18 New Relic, Inc. All rights reserved 16
Thank You
©2008–18 New Relic, Inc. All rights reserved

More Related Content

What's hot

Keeping Modern Applications Performing
Keeping Modern Applications PerformingKeeping Modern Applications Performing
Keeping Modern Applications PerformingNew Relic
 
FS18 Chicago Keynote
FS18 Chicago Keynote FS18 Chicago Keynote
FS18 Chicago Keynote New Relic
 
Engineering and Autonomy in the Age of Microservices - Nic Benders, New Relic
Engineering and Autonomy in the Age of Microservices - Nic Benders, New RelicEngineering and Autonomy in the Age of Microservices - Nic Benders, New Relic
Engineering and Autonomy in the Age of Microservices - Nic Benders, New RelicAmbassador Labs
 
Inversion of Control: How New Relic’s Engineers Picked Their Own Jobs and Bui...
Inversion of Control: How New Relic’s Engineers Picked Their Own Jobs and Bui...Inversion of Control: How New Relic’s Engineers Picked Their Own Jobs and Bui...
Inversion of Control: How New Relic’s Engineers Picked Their Own Jobs and Bui...New Relic
 
Microservices Practitioner Summit Jan '15 - Designing APIs with Customers in ...
Microservices Practitioner Summit Jan '15 - Designing APIs with Customers in ...Microservices Practitioner Summit Jan '15 - Designing APIs with Customers in ...
Microservices Practitioner Summit Jan '15 - Designing APIs with Customers in ...Ambassador Labs
 
Cloud Migration Acceptance Testing - Prove Success
Cloud Migration Acceptance Testing - Prove SuccessCloud Migration Acceptance Testing - Prove Success
Cloud Migration Acceptance Testing - Prove SuccessKevin Downs
 
Rock Stars, Builders, and Janitors: You're Doing It Wrong, New Relic [FutureS...
Rock Stars, Builders, and Janitors: You're Doing It Wrong, New Relic [FutureS...Rock Stars, Builders, and Janitors: You're Doing It Wrong, New Relic [FutureS...
Rock Stars, Builders, and Janitors: You're Doing It Wrong, New Relic [FutureS...New Relic
 
Track Welcome: Developing Breakthrough Customer Experiences [FutureStack16]
Track Welcome: Developing Breakthrough Customer Experiences [FutureStack16]Track Welcome: Developing Breakthrough Customer Experiences [FutureStack16]
Track Welcome: Developing Breakthrough Customer Experiences [FutureStack16]New Relic
 
If It Touches Production, It Is Production
If It Touches Production, It Is ProductionIf It Touches Production, It Is Production
If It Touches Production, It Is ProductionNew Relic
 
10 Things You Can Do With New Relic - Number 9 Will Shock You
10 Things You Can Do With New Relic - Number 9 Will Shock You10 Things You Can Do With New Relic - Number 9 Will Shock You
10 Things You Can Do With New Relic - Number 9 Will Shock YouNew Relic
 
Changing The Laws Of Engineering With Github Pull Requests
Changing The Laws Of Engineering With Github Pull RequestsChanging The Laws Of Engineering With Github Pull Requests
Changing The Laws Of Engineering With Github Pull RequestsNew Relic
 
New Relic Infrastructure Intro: Increasing Mean Time Between Loss of Sleep [F...
New Relic Infrastructure Intro: Increasing Mean Time Between Loss of Sleep [F...New Relic Infrastructure Intro: Increasing Mean Time Between Loss of Sleep [F...
New Relic Infrastructure Intro: Increasing Mean Time Between Loss of Sleep [F...New Relic
 
Best Practices for Measuring your Code Pipeline
Best Practices for Measuring your Code PipelineBest Practices for Measuring your Code Pipeline
Best Practices for Measuring your Code PipelineNew Relic
 
Track Welcome: Operating Dynamic Infrastructure [FutureStack]
Track Welcome: Operating Dynamic Infrastructure [FutureStack]Track Welcome: Operating Dynamic Infrastructure [FutureStack]
Track Welcome: Operating Dynamic Infrastructure [FutureStack]New Relic
 
Cloud Expo (Keynote) - Static vs Dynamic
Cloud Expo (Keynote) - Static vs DynamicCloud Expo (Keynote) - Static vs Dynamic
Cloud Expo (Keynote) - Static vs DynamicLee Atchison
 
How New Relic Develops Language Agents [FutureStack16]
How New Relic Develops Language Agents [FutureStack16]How New Relic Develops Language Agents [FutureStack16]
How New Relic Develops Language Agents [FutureStack16]New Relic
 
Track Welcome: New Relic 101 [FutureStack16]
Track Welcome: New Relic 101 [FutureStack16]Track Welcome: New Relic 101 [FutureStack16]
Track Welcome: New Relic 101 [FutureStack16]New Relic
 

What's hot (19)

Fail Better
Fail BetterFail Better
Fail Better
 
SRE-iously
SRE-iouslySRE-iously
SRE-iously
 
Keeping Modern Applications Performing
Keeping Modern Applications PerformingKeeping Modern Applications Performing
Keeping Modern Applications Performing
 
FS18 Chicago Keynote
FS18 Chicago Keynote FS18 Chicago Keynote
FS18 Chicago Keynote
 
Engineering and Autonomy in the Age of Microservices - Nic Benders, New Relic
Engineering and Autonomy in the Age of Microservices - Nic Benders, New RelicEngineering and Autonomy in the Age of Microservices - Nic Benders, New Relic
Engineering and Autonomy in the Age of Microservices - Nic Benders, New Relic
 
Inversion of Control: How New Relic’s Engineers Picked Their Own Jobs and Bui...
Inversion of Control: How New Relic’s Engineers Picked Their Own Jobs and Bui...Inversion of Control: How New Relic’s Engineers Picked Their Own Jobs and Bui...
Inversion of Control: How New Relic’s Engineers Picked Their Own Jobs and Bui...
 
Microservices Practitioner Summit Jan '15 - Designing APIs with Customers in ...
Microservices Practitioner Summit Jan '15 - Designing APIs with Customers in ...Microservices Practitioner Summit Jan '15 - Designing APIs with Customers in ...
Microservices Practitioner Summit Jan '15 - Designing APIs with Customers in ...
 
Cloud Migration Acceptance Testing - Prove Success
Cloud Migration Acceptance Testing - Prove SuccessCloud Migration Acceptance Testing - Prove Success
Cloud Migration Acceptance Testing - Prove Success
 
Rock Stars, Builders, and Janitors: You're Doing It Wrong, New Relic [FutureS...
Rock Stars, Builders, and Janitors: You're Doing It Wrong, New Relic [FutureS...Rock Stars, Builders, and Janitors: You're Doing It Wrong, New Relic [FutureS...
Rock Stars, Builders, and Janitors: You're Doing It Wrong, New Relic [FutureS...
 
Track Welcome: Developing Breakthrough Customer Experiences [FutureStack16]
Track Welcome: Developing Breakthrough Customer Experiences [FutureStack16]Track Welcome: Developing Breakthrough Customer Experiences [FutureStack16]
Track Welcome: Developing Breakthrough Customer Experiences [FutureStack16]
 
If It Touches Production, It Is Production
If It Touches Production, It Is ProductionIf It Touches Production, It Is Production
If It Touches Production, It Is Production
 
10 Things You Can Do With New Relic - Number 9 Will Shock You
10 Things You Can Do With New Relic - Number 9 Will Shock You10 Things You Can Do With New Relic - Number 9 Will Shock You
10 Things You Can Do With New Relic - Number 9 Will Shock You
 
Changing The Laws Of Engineering With Github Pull Requests
Changing The Laws Of Engineering With Github Pull RequestsChanging The Laws Of Engineering With Github Pull Requests
Changing The Laws Of Engineering With Github Pull Requests
 
New Relic Infrastructure Intro: Increasing Mean Time Between Loss of Sleep [F...
New Relic Infrastructure Intro: Increasing Mean Time Between Loss of Sleep [F...New Relic Infrastructure Intro: Increasing Mean Time Between Loss of Sleep [F...
New Relic Infrastructure Intro: Increasing Mean Time Between Loss of Sleep [F...
 
Best Practices for Measuring your Code Pipeline
Best Practices for Measuring your Code PipelineBest Practices for Measuring your Code Pipeline
Best Practices for Measuring your Code Pipeline
 
Track Welcome: Operating Dynamic Infrastructure [FutureStack]
Track Welcome: Operating Dynamic Infrastructure [FutureStack]Track Welcome: Operating Dynamic Infrastructure [FutureStack]
Track Welcome: Operating Dynamic Infrastructure [FutureStack]
 
Cloud Expo (Keynote) - Static vs Dynamic
Cloud Expo (Keynote) - Static vs DynamicCloud Expo (Keynote) - Static vs Dynamic
Cloud Expo (Keynote) - Static vs Dynamic
 
How New Relic Develops Language Agents [FutureStack16]
How New Relic Develops Language Agents [FutureStack16]How New Relic Develops Language Agents [FutureStack16]
How New Relic Develops Language Agents [FutureStack16]
 
Track Welcome: New Relic 101 [FutureStack16]
Track Welcome: New Relic 101 [FutureStack16]Track Welcome: New Relic 101 [FutureStack16]
Track Welcome: New Relic 101 [FutureStack16]
 

Similar to Ground Rules for Code Reviews: Improving development velocity and team communication

You’re ready to migrate, but how will you prove success?
You’re ready to migrate, but how will you prove success?You’re ready to migrate, but how will you prove success?
You’re ready to migrate, but how will you prove success?New Relic
 
How to Lower or Justify your Cloud Spend
How to Lower or Justify your Cloud Spend How to Lower or Justify your Cloud Spend
How to Lower or Justify your Cloud Spend New Relic
 
re:Thinking the Cloud
re:Thinking the Cloudre:Thinking the Cloud
re:Thinking the CloudNew Relic
 
Kubernetes in the Wild: Best Practices for Monitoring
Kubernetes in the Wild: Best Practices for MonitoringKubernetes in the Wild: Best Practices for Monitoring
Kubernetes in the Wild: Best Practices for MonitoringNew Relic
 
Nr fy19 analystday_presentation_web
Nr fy19 analystday_presentation_webNr fy19 analystday_presentation_web
Nr fy19 analystday_presentation_webinvestorsnewrelic
 
FutureStack'19 Closing Keynote
FutureStack'19 Closing KeynoteFutureStack'19 Closing Keynote
FutureStack'19 Closing KeynoteLee Atchison
 
Gartner IT Ops Summit 2015: Why Fast is not enough: App Monitoring in the Cus...
Gartner IT Ops Summit 2015: Why Fast is not enough: App Monitoring in the Cus...Gartner IT Ops Summit 2015: Why Fast is not enough: App Monitoring in the Cus...
Gartner IT Ops Summit 2015: Why Fast is not enough: App Monitoring in the Cus...Al Sargent
 
New Relic Infrastructure in the Real World: AWS
New Relic Infrastructure in the Real World: AWSNew Relic Infrastructure in the Real World: AWS
New Relic Infrastructure in the Real World: AWSNew Relic
 
Living in the Cloud
Living in the CloudLiving in the Cloud
Living in the CloudKevin Downs
 
Flink Forward Berlin 2018: Caito Scherr & Nikolas Davis - "Flink Positive/Fli...
Flink Forward Berlin 2018: Caito Scherr & Nikolas Davis - "Flink Positive/Fli...Flink Forward Berlin 2018: Caito Scherr & Nikolas Davis - "Flink Positive/Fli...
Flink Forward Berlin 2018: Caito Scherr & Nikolas Davis - "Flink Positive/Fli...Flink Forward
 
New Relic After Lift and Shift - FutureStack 2019
New Relic After Lift and Shift - FutureStack 2019New Relic After Lift and Shift - FutureStack 2019
New Relic After Lift and Shift - FutureStack 2019Kevin Downs
 
Scaling with Docker: New Relic’s Containerization Journey
Scaling with Docker: New Relic’s Containerization JourneyScaling with Docker: New Relic’s Containerization Journey
Scaling with Docker: New Relic’s Containerization JourneyTori Wieldt
 
Cloud Expo - Flying Two Mistakes High
Cloud Expo - Flying Two Mistakes HighCloud Expo - Flying Two Mistakes High
Cloud Expo - Flying Two Mistakes HighLee Atchison
 
Megabase: How We Containerized Databases at New Relic
Megabase: How We Containerized Databases at New RelicMegabase: How We Containerized Databases at New Relic
Megabase: How We Containerized Databases at New RelicMarty Matheny
 
FutureStack16 NYC Opening Keynote
FutureStack16 NYC Opening KeynoteFutureStack16 NYC Opening Keynote
FutureStack16 NYC Opening KeynoteNew Relic
 
Implementing Docker in Production at Scale
Implementing Docker in Production at ScaleImplementing Docker in Production at Scale
Implementing Docker in Production at ScaleKarl Matthias
 
How to become an Elastic contributor
How to become an Elastic contributorHow to become an Elastic contributor
How to become an Elastic contributorElasticsearch
 

Similar to Ground Rules for Code Reviews: Improving development velocity and team communication (17)

You’re ready to migrate, but how will you prove success?
You’re ready to migrate, but how will you prove success?You’re ready to migrate, but how will you prove success?
You’re ready to migrate, but how will you prove success?
 
How to Lower or Justify your Cloud Spend
How to Lower or Justify your Cloud Spend How to Lower or Justify your Cloud Spend
How to Lower or Justify your Cloud Spend
 
re:Thinking the Cloud
re:Thinking the Cloudre:Thinking the Cloud
re:Thinking the Cloud
 
Kubernetes in the Wild: Best Practices for Monitoring
Kubernetes in the Wild: Best Practices for MonitoringKubernetes in the Wild: Best Practices for Monitoring
Kubernetes in the Wild: Best Practices for Monitoring
 
Nr fy19 analystday_presentation_web
Nr fy19 analystday_presentation_webNr fy19 analystday_presentation_web
Nr fy19 analystday_presentation_web
 
FutureStack'19 Closing Keynote
FutureStack'19 Closing KeynoteFutureStack'19 Closing Keynote
FutureStack'19 Closing Keynote
 
Gartner IT Ops Summit 2015: Why Fast is not enough: App Monitoring in the Cus...
Gartner IT Ops Summit 2015: Why Fast is not enough: App Monitoring in the Cus...Gartner IT Ops Summit 2015: Why Fast is not enough: App Monitoring in the Cus...
Gartner IT Ops Summit 2015: Why Fast is not enough: App Monitoring in the Cus...
 
New Relic Infrastructure in the Real World: AWS
New Relic Infrastructure in the Real World: AWSNew Relic Infrastructure in the Real World: AWS
New Relic Infrastructure in the Real World: AWS
 
Living in the Cloud
Living in the CloudLiving in the Cloud
Living in the Cloud
 
Flink Forward Berlin 2018: Caito Scherr & Nikolas Davis - "Flink Positive/Fli...
Flink Forward Berlin 2018: Caito Scherr & Nikolas Davis - "Flink Positive/Fli...Flink Forward Berlin 2018: Caito Scherr & Nikolas Davis - "Flink Positive/Fli...
Flink Forward Berlin 2018: Caito Scherr & Nikolas Davis - "Flink Positive/Fli...
 
New Relic After Lift and Shift - FutureStack 2019
New Relic After Lift and Shift - FutureStack 2019New Relic After Lift and Shift - FutureStack 2019
New Relic After Lift and Shift - FutureStack 2019
 
Scaling with Docker: New Relic’s Containerization Journey
Scaling with Docker: New Relic’s Containerization JourneyScaling with Docker: New Relic’s Containerization Journey
Scaling with Docker: New Relic’s Containerization Journey
 
Cloud Expo - Flying Two Mistakes High
Cloud Expo - Flying Two Mistakes HighCloud Expo - Flying Two Mistakes High
Cloud Expo - Flying Two Mistakes High
 
Megabase: How We Containerized Databases at New Relic
Megabase: How We Containerized Databases at New RelicMegabase: How We Containerized Databases at New Relic
Megabase: How We Containerized Databases at New Relic
 
FutureStack16 NYC Opening Keynote
FutureStack16 NYC Opening KeynoteFutureStack16 NYC Opening Keynote
FutureStack16 NYC Opening Keynote
 
Implementing Docker in Production at Scale
Implementing Docker in Production at ScaleImplementing Docker in Production at Scale
Implementing Docker in Production at Scale
 
How to become an Elastic contributor
How to become an Elastic contributorHow to become an Elastic contributor
How to become an Elastic contributor
 

More from New Relic

7 Tips & Tricks to Having Happy Customers at Scale
7 Tips & Tricks to Having Happy Customers at Scale7 Tips & Tricks to Having Happy Customers at Scale
7 Tips & Tricks to Having Happy Customers at ScaleNew Relic
 
7 Tips & Tricks to Having Happy Customers at Scale
7 Tips & Tricks to Having Happy Customers at Scale7 Tips & Tricks to Having Happy Customers at Scale
7 Tips & Tricks to Having Happy Customers at ScaleNew Relic
 
New Relic University at Future Stack Tokyo 2019
New Relic University at Future Stack Tokyo 2019New Relic University at Future Stack Tokyo 2019
New Relic University at Future Stack Tokyo 2019New Relic
 
FutureStack Tokyo 19 -[事例講演]株式会社リクルートライフスタイル:年間9300万件以上のサロン予約を支えるホットペッパービューティ...
FutureStack Tokyo 19 -[事例講演]株式会社リクルートライフスタイル:年間9300万件以上のサロン予約を支えるホットペッパービューティ...FutureStack Tokyo 19 -[事例講演]株式会社リクルートライフスタイル:年間9300万件以上のサロン予約を支えるホットペッパービューティ...
FutureStack Tokyo 19 -[事例講演]株式会社リクルートライフスタイル:年間9300万件以上のサロン予約を支えるホットペッパービューティ...New Relic
 
FutureStack Tokyo 19 -[New Relic テクニカル講演]モニタリングと可視化がデジタルトランスフォーメーションを救う! - サ...
FutureStack  Tokyo 19 -[New Relic テクニカル講演]モニタリングと可視化がデジタルトランスフォーメーションを救う! - サ...FutureStack  Tokyo 19 -[New Relic テクニカル講演]モニタリングと可視化がデジタルトランスフォーメーションを救う! - サ...
FutureStack Tokyo 19 -[New Relic テクニカル講演]モニタリングと可視化がデジタルトランスフォーメーションを救う! - サ...New Relic
 
FutureStack Tokyo 19 -[特別講演]システム開発によろこびと驚きの連鎖を
FutureStack Tokyo 19 -[特別講演]システム開発によろこびと驚きの連鎖をFutureStack Tokyo 19 -[特別講演]システム開発によろこびと驚きの連鎖を
FutureStack Tokyo 19 -[特別講演]システム開発によろこびと驚きの連鎖をNew Relic
 
FutureStack Tokyo 19 -[パートナー講演]アマゾン ウェブ サービス ジャパン株式会社: New Relicを活用したAWSへのアプリ...
FutureStack Tokyo 19 -[パートナー講演]アマゾン ウェブ サービス ジャパン株式会社: New Relicを活用したAWSへのアプリ...FutureStack Tokyo 19 -[パートナー講演]アマゾン ウェブ サービス ジャパン株式会社: New Relicを活用したAWSへのアプリ...
FutureStack Tokyo 19 -[パートナー講演]アマゾン ウェブ サービス ジャパン株式会社: New Relicを活用したAWSへのアプリ...New Relic
 
FutureStack Tokyo 19_インサイトとデータを組織の力にする_株式会社ドワンゴ 池田 明啓 氏
FutureStack Tokyo 19_インサイトとデータを組織の力にする_株式会社ドワンゴ 池田 明啓 氏FutureStack Tokyo 19_インサイトとデータを組織の力にする_株式会社ドワンゴ 池田 明啓 氏
FutureStack Tokyo 19_インサイトとデータを組織の力にする_株式会社ドワンゴ 池田 明啓 氏New Relic
 
Three Monitoring Mistakes and How to Avoid Them
Three Monitoring Mistakes and How to Avoid ThemThree Monitoring Mistakes and How to Avoid Them
Three Monitoring Mistakes and How to Avoid ThemNew Relic
 
Intro to Multidimensional Kubernetes Monitoring
Intro to Multidimensional Kubernetes MonitoringIntro to Multidimensional Kubernetes Monitoring
Intro to Multidimensional Kubernetes MonitoringNew Relic
 
Understanding Microservice Latency for DevOps Teams: An Introduction to New R...
Understanding Microservice Latency for DevOps Teams: An Introduction to New R...Understanding Microservice Latency for DevOps Teams: An Introduction to New R...
Understanding Microservice Latency for DevOps Teams: An Introduction to New R...New Relic
 
Top Three Mistakes People Make with Monitoring
Top Three Mistakes People Make with MonitoringTop Three Mistakes People Make with Monitoring
Top Three Mistakes People Make with MonitoringNew Relic
 
Our Evolution to GraphQL: Unifying our API Strategy
Our Evolution to GraphQL: Unifying our API StrategyOur Evolution to GraphQL: Unifying our API Strategy
Our Evolution to GraphQL: Unifying our API StrategyNew Relic
 
Kick Ass Data Exploration through Dashboards
Kick Ass Data Exploration through DashboardsKick Ass Data Exploration through Dashboards
Kick Ass Data Exploration through DashboardsNew Relic
 

More from New Relic (14)

7 Tips & Tricks to Having Happy Customers at Scale
7 Tips & Tricks to Having Happy Customers at Scale7 Tips & Tricks to Having Happy Customers at Scale
7 Tips & Tricks to Having Happy Customers at Scale
 
7 Tips & Tricks to Having Happy Customers at Scale
7 Tips & Tricks to Having Happy Customers at Scale7 Tips & Tricks to Having Happy Customers at Scale
7 Tips & Tricks to Having Happy Customers at Scale
 
New Relic University at Future Stack Tokyo 2019
New Relic University at Future Stack Tokyo 2019New Relic University at Future Stack Tokyo 2019
New Relic University at Future Stack Tokyo 2019
 
FutureStack Tokyo 19 -[事例講演]株式会社リクルートライフスタイル:年間9300万件以上のサロン予約を支えるホットペッパービューティ...
FutureStack Tokyo 19 -[事例講演]株式会社リクルートライフスタイル:年間9300万件以上のサロン予約を支えるホットペッパービューティ...FutureStack Tokyo 19 -[事例講演]株式会社リクルートライフスタイル:年間9300万件以上のサロン予約を支えるホットペッパービューティ...
FutureStack Tokyo 19 -[事例講演]株式会社リクルートライフスタイル:年間9300万件以上のサロン予約を支えるホットペッパービューティ...
 
FutureStack Tokyo 19 -[New Relic テクニカル講演]モニタリングと可視化がデジタルトランスフォーメーションを救う! - サ...
FutureStack  Tokyo 19 -[New Relic テクニカル講演]モニタリングと可視化がデジタルトランスフォーメーションを救う! - サ...FutureStack  Tokyo 19 -[New Relic テクニカル講演]モニタリングと可視化がデジタルトランスフォーメーションを救う! - サ...
FutureStack Tokyo 19 -[New Relic テクニカル講演]モニタリングと可視化がデジタルトランスフォーメーションを救う! - サ...
 
FutureStack Tokyo 19 -[特別講演]システム開発によろこびと驚きの連鎖を
FutureStack Tokyo 19 -[特別講演]システム開発によろこびと驚きの連鎖をFutureStack Tokyo 19 -[特別講演]システム開発によろこびと驚きの連鎖を
FutureStack Tokyo 19 -[特別講演]システム開発によろこびと驚きの連鎖を
 
FutureStack Tokyo 19 -[パートナー講演]アマゾン ウェブ サービス ジャパン株式会社: New Relicを活用したAWSへのアプリ...
FutureStack Tokyo 19 -[パートナー講演]アマゾン ウェブ サービス ジャパン株式会社: New Relicを活用したAWSへのアプリ...FutureStack Tokyo 19 -[パートナー講演]アマゾン ウェブ サービス ジャパン株式会社: New Relicを活用したAWSへのアプリ...
FutureStack Tokyo 19 -[パートナー講演]アマゾン ウェブ サービス ジャパン株式会社: New Relicを活用したAWSへのアプリ...
 
FutureStack Tokyo 19_インサイトとデータを組織の力にする_株式会社ドワンゴ 池田 明啓 氏
FutureStack Tokyo 19_インサイトとデータを組織の力にする_株式会社ドワンゴ 池田 明啓 氏FutureStack Tokyo 19_インサイトとデータを組織の力にする_株式会社ドワンゴ 池田 明啓 氏
FutureStack Tokyo 19_インサイトとデータを組織の力にする_株式会社ドワンゴ 池田 明啓 氏
 
Three Monitoring Mistakes and How to Avoid Them
Three Monitoring Mistakes and How to Avoid ThemThree Monitoring Mistakes and How to Avoid Them
Three Monitoring Mistakes and How to Avoid Them
 
Intro to Multidimensional Kubernetes Monitoring
Intro to Multidimensional Kubernetes MonitoringIntro to Multidimensional Kubernetes Monitoring
Intro to Multidimensional Kubernetes Monitoring
 
Understanding Microservice Latency for DevOps Teams: An Introduction to New R...
Understanding Microservice Latency for DevOps Teams: An Introduction to New R...Understanding Microservice Latency for DevOps Teams: An Introduction to New R...
Understanding Microservice Latency for DevOps Teams: An Introduction to New R...
 
Top Three Mistakes People Make with Monitoring
Top Three Mistakes People Make with MonitoringTop Three Mistakes People Make with Monitoring
Top Three Mistakes People Make with Monitoring
 
Our Evolution to GraphQL: Unifying our API Strategy
Our Evolution to GraphQL: Unifying our API StrategyOur Evolution to GraphQL: Unifying our API Strategy
Our Evolution to GraphQL: Unifying our API Strategy
 
Kick Ass Data Exploration through Dashboards
Kick Ass Data Exploration through DashboardsKick Ass Data Exploration through Dashboards
Kick Ass Data Exploration through Dashboards
 

Recently uploaded

Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Product School
 
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»QADay
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Product School
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...Product School
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsVlad Stirbu
 
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™UiPathCommunity
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Thierry Lestable
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesThousandEyes
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
 

Recently uploaded (20)

Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 

Ground Rules for Code Reviews: Improving development velocity and team communication

  • 1. ©2008–18 New Relic, Inc. All rights reserved Ground Rules for Code Reviews Joshua Gerth, Senior Software Engineer, NRDB Team ©2008–18 New Relic, Inc. All rights reserved Improving Development Velocity and Team Communication
  • 2. ©2008–18 New Relic, Inc. All rights reserved 2 Safe Harbor This presentation and the information herein (including any information that may be incorporated by reference) is provided for informational purposes only and should not be construed as an offer, commitment, promise or obligation on behalf of New Relic, Inc. (“New Relic”) to sell securities or deliver any product, material, code, functionality, or other feature. Any information provided hereby is proprietary to New Relic and may not be replicated or disclosed without New Relic’s express written permission. Such information may contain forward-looking statements within the meaning of federal securities laws. Any statement that is not a historical fact or refers to expectations, projections, future plans, objectives, estimates, goals, or other characterizations of future events is a forward-looking statement. These forward-looking statements can often be identified as such because the context of the statement will include words such as “believes,” “anticipates,” “expects” or words of similar import. Actual results may differ materially from those expressed in these forward-looking statements, which speak only as of the date hereof, and are subject to change at any time without notice. Existing and prospective investors, customers and other third parties transacting business with New Relic are cautioned not to place undue reliance on this forward-looking information. The achievement or success of the matters covered by such forward-looking statements are based on New Relic’s current assumptions, expectations, and beliefs and are subject to substantial risks, uncertainties, assumptions, and changes in circumstances that may cause the actual results, performance, or achievements to differ materially from those expressed or implied in any forward-looking statement. Further information on factors that could affect such forward-looking statements is included in the filings New Relic makes with the SEC from time to time. Copies of these documents may be obtained by visiting New Relic’s Investor Relations website at ir.newrelic.com or the SEC’s website at www.sec.gov. New Relic assumes no obligation and does not intend to update these forward-looking statements, except as required by law. New Relic makes no warranties, expressed or implied, in this presentation or otherwise, with respect to the information provided.
  • 3. ©2008–18 New Relic, Inc. All rights reserved 3 The Team Had a Problem ?!!??! ??? !!! !?! ?!?
  • 4. ©2008–18 New Relic, Inc. All rights reserved 4 Collision Points Reviewer: The constant should be on the lefthand side. Author: In Java you can’t do an assignment in a conditional. Reviewer: It’s still good practice. if ( counter == 100 ) { return “Target reached”; } The tone feels patronizing. Leaves the change request in an “unknown” state as it’s not Blocked or Approved.
  • 5. ©2008–18 New Relic, Inc. All rights reserved 5 Collision Points return offset < TIME_LIMIT && getStartTime() <= timestamp; Reviewer: "offset >= 0 && offset < TIME_LIMIT" would be more clear Author: Made the change. Clarity is subjective. Author feels frustrated. Reviewer feels unappreciated. Lose/Lose.
  • 6. ©2008–18 New Relic, Inc. All rights reserved 6 Taking a Step Back What was going on? Why was it happening? How can we fix it? Code Reviews
  • 7. ©2008–18 New Relic, Inc. All rights reserved 7 How Can We Give Effective Feedback? • Creative writing 101 • …. • …. • How to give critical feedback • …. • Computer Science 101 • …. • Data structures • Algorithm analysis • …. Creative Writing Computer Science
  • 8. ©2008–18 New Relic, Inc. All rights reserved 8 Types of Feedback Finding these issues in a code review is easy. “Your variable should use camel case, not snake case” Subjective Comments Finding these issues in a code review is rare. “Your method name is confusing” “Your curly brace is on the wrong line" “You have created an infinite loop” “You are missing a semicolon” “Your boolean logic is wrong” Objective Comments
  • 9. ©2008–18 New Relic, Inc. All rights reserved 9 Mixing Subjective with Objective Minimizes difference of opinions Causes frustration and resentment Can lead to a breakdown in team communication Disregards feelings “My opinion is the correct one”
  • 10. ©2008–18 New Relic, Inc. All rights reserved 10 Establishing Ground Rules BLOCKING NON-BLOCKINGBLOCKING BLOCKING Errors that will cause an issue in production. 1 Stated goal of the change aligns with the actual changes. 2 Changes align with the team’s coding standards. 3 Anything they personally disagree with. 4 The reviewer should be looking for the following
  • 11. ©2008–18 New Relic, Inc. All rights reserved 11 Adding Tags Subjective Comments Blocking: Objective Comments Your boolean logic is wrong You have created an infinite loop You are missing a semicolon Blocking: Blocking: Non-blocking: Your method name is confusing Non-blocking: Your curly brace is on the wrong line Non-blocking: Your variable should use camel case, not snake case
  • 12. ©2008–18 New Relic, Inc. All rights reserved 12 Concerns 1 The author would ignore non-blocking comments. The code our team produced would not appear uniform. 2
  • 13. ©2008–18 New Relic, Inc. All rights reserved 13 Sponsoring a Coding Standard Coding Standards must: Be written in non-subjective language. Be fully supported by the sponsor.
  • 14. ©2008–18 New Relic, Inc. All rights reserved 14 Impact Tone of the subjective comments became more respectful. Provided more context. Authors read, and responded to, non-blocking comments. Authors felt less resentment and reviewers felt more appreciated. Review process took less time. Onboarding new reviewers was quick and easy.
  • 15. ©2008–18 New Relic, Inc. All rights reserved 15 Team Autonomy Only define what reviewers should be looking for and how to give feedback. Ground rules still support team autonomy. Each team can adopt which ever style guide they want.
  • 16. ©2008–18 New Relic, Inc. All rights reserved 16
  • 17. Thank You ©2008–18 New Relic, Inc. All rights reserved

Editor's Notes

  1. After a reorg we had a lot of senior engineers all on one team. This resulted in a lot of passionate developers having their code reviewed by other passionate developers. Code reviews became collision points worked out through passive aggressive arguments. We were in trouble.
  2. After a reorg we had a lot of senior engineers all on one team. This resulted in a lot of passionate developers having their code reviewed by other passionate developers. Code reviews became collision points worked out through passive aggressive arguments. We were in trouble.
  3. After a reorg we had a lot of senior engineers all on one team. This resulted in a lot of passionate developers having their code reviewed by other passionate developers. Code reviews became collision points worked out through passive aggressive arguments. We were in trouble.
  4. So we decided to step back and try to figure out: what was going on why it wasn’t working and what we could do to fix it.   And since most of the frustration was coming from our code reviews we started by asking the simple question:
  5. For software engineers learning how to give critical feedback is rarely a priority. Computer science curriculum focused on algorithm analysis, data models and problem solving. Writing software was about achieving specific tasks. Feedback tended to be straightforward: it either worked or it didn’t.
  6. As academics are discovering, the way in which we give feedback is critically important to the overall creative process.   Developers tend to lack the basic skills for delivering successful feedback This can unintentionally cause frustration and resentment.   Our team is attempting to address this by establishing our set of ground rules for how we work together and so far, it seems to be helping.