Code Review as a Great Tool in the Agile Toolbox Matthias Sohn, Stefan Lay (SAP)...

Post on 29-Mar-2015

220 views 2 download

Tags:

Transcript of Code Review as a Great Tool in the Agile Toolbox Matthias Sohn, Stefan Lay (SAP)...

Code Reviewas a Great Tool in the Agile Toolbox

Matthias Sohn,Stefan Lay (SAP)Matthias.sohnn@sap.com, stefan.lay@sap.com

Twitter: @masohn @stefanlay

Agenda

How we became agile

What we learned from Open Source

Why we embraced Code Review

How we scale up agile with Open Source processes  

Agile Feedback cycles

  

Source: http://en.wikipedia.org/wiki/Extreme_Programming

Agile Feedback cycles

  Pair Programming

Ralph and Karsten hacking on E4

Agile Feedback cycles

  Test Driven Development

Agile Feedback cycles

  Continuous Integration

Q: Who is who?

Agile Feedback cycles

Code Review?

Sometimes formal Code Review (Fagan style inspection)

Pair Programming is considered to be more agile• Higher bandwidth (Faster feedback)• Leads to faster integration than Code Review• “Individuals and interactions over processes and tools”

Agile Software Engineering

 Engineering practices are key

SAP trained its developers• > 4000 participants• 1 week training• 3 weeks coaching

Focus on• Scrum• Pair programming• Test Driven Development• Continuous Integration• Acceptance Tests

Code Review in Open Source

Maintainer Hierarchy / Contributors

Public peer review on mailing list

Committer / Contributor model

Public peer review • Patch in Bugzilla• Gerrit• Github

Code Review vs. Pair Programming

  

Code Review vs. Pair Programming

Code Review • leads to small, self-contained increments• ensures that ideas can be understood from code• leads to review discussions visible to everybody• leaves room to develop alternative solutions

Ideal complement to Pair Programming which is great to• explore unknown terrain• onboard new developer• combine complementary skills

Code Review is asynchronous

Can be done when there is timeThe whole team can review (also external reviewers)

Review takes time, but also leaves timeThis leads to parallel workflowGit perfectly supports this

Some aspects can be automated• Rule checking  • Build and test• Deployment to staging environment

All checks happen before submit

Code Review Best Practices

Small changes are much easier to review

A change should logically do one thing (not many)

No change shall break build or tests

Split big changes into series of digestible changes - These changes depend on each other- Last change should switch the new feature on

Commit message should explain Why - The What should be obvious from the code change

Code Review and Scrum

Successful code review required for a task to be finished

Many Done Criteria already checked during code review

Make review visible on Scrum Board

Reserve time for review

Everybody should review

Code Review and Scrum

Scrum Board

Story Bug Fix Review Story A Story B Story C …

Open

In Progress

In Review

Done

Code Review with Git and Gerrit

Gerrit is a Code Review system based on JGit http://code.google.com/p/gerrit/

Also serves as a Git server Adding access control and workflow

Used by • Android https://android-review.googlesource.com/• Eclipse https://git.eclipse.org/r/

• Google, QualComm, SAP, WikiMedia…

Code Review with Git and Gerrit

Code Review with Git and Gerrit

Gerrit usage at SAP started 2010

Projects: > 2.000Users: > 4.000Changes: > 300.000

Run by a small team of developers (us)

Training is important (> 400 developers)

Recently Git and Gerrit were approved as standard infrastructure

Scaling Agile with Open Source Processes

Agile processes work great for small teams

Collaboration between teams of a large project?

• High level planning of cross team topics still necessary

• Open Source like processes can replace detailed top-down planning

• Contribute to components owned by other teams• Review relevant changes of other teams• Scale up Pair Programming -> “Hackathons”

Contributions between teams

Find project information easily

Standardized infrastructure

Contributor Guide

Finding project info

Finding project info

Finding project info - Skalli

Standardized infrastructure

git clone <URL>

mvn clean install

Eclipse CBI: http://wiki.eclipse.org/CBI

Project specific

Standardized

Contributor Guide

Where to get the sourcesHow to setup the projectHow to buildReview processCommunication channelsCorrection Process

Coding conventionsHow to testReview rules…

Conclusion

Code Review brings additional value to agile teams

Git and Gerrit help a lot

Improves collaboration within and between teams

Standardization helps to scale

Questions & Answers

Agile Manifesto

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

In a complex and changing environment feedback is key!