www.devoxx.com
Effective code reviews in agile teams <ul><li>Wojciech Seliga </li></ul><ul><li>Senior SW Developer </li></ul><ul><li>Atla...
Overall Presentation Goal <ul><li>Share our observations on lightweight code reviews. Gather feedback and discuss it. </li...
About us <ul><li>Wojciech Seliga  is a software developer working for Atlassian on IDE Connectors. He is also a co-founder...
<ul><li>Does code review make sense? </li></ul><ul><li>Can we prove its value or lack thereof? </li></ul><ul><li>Pair prog...
<ul><ul><li>Obvious(?) pros and cons of code reviews </li></ul></ul><ul><ul><li>Top 5 ways to make reviews better </li></u...
<ul><ul><li>Introducing people to the code </li></ul></ul><ul><ul><ul><li>used style/conventions </li></ul></ul></ul><ul><...
<ul><ul><li>Time-consuming </li></ul></ul><ul><ul><li>Risk of flame-wars and animosities </li></ul></ul><ul><ul><li>Disrup...
<ul><ul><li>Requires synchronization from all reviewers </li></ul></ul><ul><ul><li>Super tedious </li></ul></ul><ul><ul><l...
<ul><ul><li>Make it asynchronous </li></ul></ul><ul><ul><li>Make it lightweight - simple process </li></ul></ul><ul><ul><l...
<ul><ul><li>Every team has its own rules - self-organization </li></ul></ul><ul><ul><li>But usually: </li></ul></ul><ul><u...
<ul><ul><li>Facilitation of distributed teams (including outsourcing & offshoring)‏ </li></ul></ul><ul><ul><li>Collaborati...
<ul><ul><li>Hanging reviews </li></ul></ul><ul><ul><li>Re-reviews, tracking defects and their resolution </li></ul></ul><u...
DEMO <ul><li>Creating and performing code review using </li></ul><ul><li>Atlassian Crucible web UI </li></ul>
DEMO <ul><li>Creating and performing code review from IDE using </li></ul><ul><li>Atlassian IntelliJ Connector connected t...
Q&A <ul><li>What do you think </li></ul>
Thanks for your attention! <ul><li>Atlassian Crucible </li></ul><ul><li>http://www.atlassian.com/software/crucible/ </li><...
Upcoming SlideShare
Loading in...5
×

Devoxx08: Effective Code Reviews In Agile Teams

6,113

Published on

slides supporting the talk we gave at a BOF during Devoxx 2008 conference

Published in: Technology
1 Comment
8 Likes
Statistics
Notes
No Downloads
Views
Total Views
6,113
On Slideshare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
94
Comments
1
Likes
8
Embeds 0
No embeds

No notes for slide
  • Devoxx08: Effective Code Reviews In Agile Teams

    1. 1. www.devoxx.com
    2. 2. Effective code reviews in agile teams <ul><li>Wojciech Seliga </li></ul><ul><li>Senior SW Developer </li></ul><ul><li>Atlassian </li></ul><ul><li>Sławomir Ginter </li></ul><ul><li>Senior SW Developer & CSM </li></ul><ul><li>SPARTEZ </li></ul>
    3. 3. Overall Presentation Goal <ul><li>Share our observations on lightweight code reviews. Gather feedback and discuss it. </li></ul>
    4. 4. About us <ul><li>Wojciech Seliga is a software developer working for Atlassian on IDE Connectors. He is also a co-founder of SPARTEZ - agile and Java consultancy. For many years Wojciech has been fostering agile practices, introducing collaboration tools and developing mission-critical software systems. </li></ul><ul><li>Sławomir Ginter is a software developer at Atlassian working on Clover integration with IDEs. He is also a co-founder of SPARTEZ. Sławomir is a certified ScrumMaster. He has many years of experience in embedded systems and Java. </li></ul>
    5. 5. <ul><li>Does code review make sense? </li></ul><ul><li>Can we prove its value or lack thereof? </li></ul><ul><li>Pair programming or code review? </li></ul>
    6. 6. <ul><ul><li>Obvious(?) pros and cons of code reviews </li></ul></ul><ul><ul><li>Top 5 ways to make reviews better </li></ul></ul><ul><ul><li>How we at Atlassian perform code reviews </li></ul></ul><ul><ul><li>Non-obvious aspects of code reviews </li></ul></ul><ul><ul><li>Problems we have with code reviews </li></ul></ul><ul><ul><li>Demo - code review with Atlassian Crucible web UI </li></ul></ul><ul><ul><li>Demo - code review with Atlassian IntelliJ Connector </li></ul></ul><ul><ul><li>Q&A, open discussion, your feedback </li></ul></ul>Agenda
    7. 7. <ul><ul><li>Introducing people to the code </li></ul></ul><ul><ul><ul><li>used style/conventions </li></ul></ul></ul><ul><ul><ul><li>design </li></ul></ul></ul><ul><ul><ul><li>reusable components </li></ul></ul></ul><ul><ul><li>Mentoring junior developers </li></ul></ul><ul><ul><li>Sharing good engineering practices </li></ul></ul><ul><ul><li>Spotting bugs earlier </li></ul></ul><ul><ul><li>Fostering collective code ownership </li></ul></ul>Reasons for doing code reviews
    8. 8. <ul><ul><li>Time-consuming </li></ul></ul><ul><ul><li>Risk of flame-wars and animosities </li></ul></ul><ul><ul><li>Disrupting for developers </li></ul></ul><ul><ul><li>Possible bottlenecks (e.g. all reviews go to tech lead)‏ </li></ul></ul><ul><ul><li>Still no guarantee for spotting all the bugs </li></ul></ul><ul><ul><li>Often rejected or dropped due to tediousness </li></ul></ul><ul><ul><li>Code reviews vs. pair programming </li></ul></ul>Reasons for avoiding code reviews
    9. 9. <ul><ul><li>Requires synchronization from all reviewers </li></ul></ul><ul><ul><li>Super tedious </li></ul></ul><ul><ul><li>Too much emphasis on the structure and the workflow </li></ul></ul><ul><ul><li>Often the same code is reviewed many times </li></ul></ul>Why traditional code review sucks
    10. 10. <ul><ul><li>Make it asynchronous </li></ul></ul><ul><ul><li>Make it lightweight - simple process </li></ul></ul><ul><ul><li>Provide efficient tool support </li></ul></ul><ul><ul><li>Make it diff-oriented whenever applicable (in most cases)‏ </li></ul></ul><ul><ul><li>Make it transparent and persistent </li></ul></ul>Top 5 ways to make code review better
    11. 11. <ul><ul><li>Every team has its own rules - self-organization </li></ul></ul><ul><ul><li>But usually: </li></ul></ul><ul><ul><li>We use simple Crucible workflow and its terminology </li></ul></ul><ul><ul><li>All new people on team create review for every commit </li></ul></ul><ul><ul><li>Tech leads monitor commits, review diffs and raise reviews when required </li></ul></ul><ul><ul><li>Moderator = Author OR Moderator = Tech lead </li></ul></ul><ul><ul><li>Reviewers = well-known pack of fellows (per project/component)‏ </li></ul></ul><ul><ul><li>Allow anyone to join your reviews </li></ul></ul><ul><ul><li>Raise one review per day, try to complete pending reviews within one day </li></ul></ul><ul><ul><li>Post-commit OR pre-commit review </li></ul></ul>Code review at Atlassian
    12. 12. <ul><ul><li>Facilitation of distributed teams (including outsourcing & offshoring)‏ </li></ul></ul><ul><ul><li>Collaboration on low level design </li></ul></ul><ul><ul><li>Code review is typically easier to introduce than pair-programming (less resistance in the organization)‏ </li></ul></ul><ul><ul><li>Time-zone difference may work for you: code during the day, create review in the evening, have your review completed by next morning </li></ul></ul><ul><ul><li>Knowledge Base - tricks, do's, dont's, handling proprietary APIs </li></ul></ul>More advantages...
    13. 13. <ul><ul><li>Hanging reviews </li></ul></ul><ul><ul><li>Re-reviews, tracking defects and their resolution </li></ul></ul><ul><ul><li>Sometimes flame-wars are unavoidable... </li></ul></ul><ul><ul><li>Storm of notifications </li></ul></ul><ul><ul><li>Addressed vs. unaddressed changes/comments/replies </li></ul></ul><ul><ul><li>Too much focus on diffs (tempting)‏ </li></ul></ul>Problems we have
    14. 14. DEMO <ul><li>Creating and performing code review using </li></ul><ul><li>Atlassian Crucible web UI </li></ul>
    15. 15. DEMO <ul><li>Creating and performing code review from IDE using </li></ul><ul><li>Atlassian IntelliJ Connector connected to Crucible </li></ul>
    16. 16. Q&A <ul><li>What do you think </li></ul>
    17. 17. Thanks for your attention! <ul><li>Atlassian Crucible </li></ul><ul><li>http://www.atlassian.com/software/crucible/ </li></ul><ul><li>Atlassian IDE Connector </li></ul><ul><li>http://www.atlassian.com/software/ideconnector/ </li></ul>
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×