280 likes | 394 Views
Code Review as a Great T ool 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
E N D
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 hackingon E4
Agile Feedback cycles Test Driven Development
Agile Feedback cycles Continuous Integration Q: Who iswho?
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 MaintainerHierarchy / Contributors Public peerreview on mailinglist • Committer / Contributormodel • Public peerreview • Patch in Bugzilla • Gerrit • Github
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 Programmingwhich is great to • explore unknown terrain • onboard new developer • combine complementary skills
Code Review is asynchronous • Can be done when there is time • The whole team can review (also external reviewers) • Review takes time, but also leaves time • This leads to parallel workflow • Git 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
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 • Androidhttps://android-review.googlesource.com/ • Eclipsehttps://git.eclipse.org/r/ • Google, QualComm, SAP, WikiMedia…
Code Review with Git and Gerrit Gerrit usage at SAP started 2010 Projects: > 2.000 Users: > 4.000 Changes: > 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 processesworkgreatforsmallteams • Collaborationbetweenteamsof a large project? • High levelplanningofcrossteamtopics still necessary • Open Source likeprocessescanreplacedetailed top-down planning • Contributetocomponentsownedbyotherteams • Review relevant changesofotherteams • Scale up Pair Programming -> “Hackathons”
Contributions between teams • Find projectinformationeasily • Standardizedinfrastructure • Contributor Guide
Standardized infrastructure gitclone <URL> mvn clean install EclipseCBI: http://wiki.eclipse.org/CBI
Contributor Guide Standardized Wheretogetthesources Howtosetuptheproject Howtobuild Review process Communication channels CorrectionProcess Codingconventions Howtotest Review rules … Project specific
Conclusion Code Review brings additional valueto agile teams Gitand Gerrit help a lot Improvescollaboration within and betweenteams Standardizationhelpstoscale
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 complexandchangingenvironmentfeedbackiskey!