• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Product development and tools

Product development and tools






Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

    Product development and tools Product development and tools Presentation Transcript

    • Improving your productdevelopment processA view on the tools that help us improve
    • Roelof ReitsmaLead developer Coconut teamFavorite gems:Bundler & CapistranoFavorite tools:Gerrit & JenkinsWhen Im not working: cycling, running andcreating an awesome meal!
    • Goal:Show two challenges we encountereddeveloping our productDemonstrate how two tools help us improve(which might be useful for you)
    • Contents● An introduction to Coconut● First challenge: reliability● Second challenge: changeability● Conclusion
    • Introduction to Coconut● An private social network● Development in Ruby on Rails since 2008● Started as our intranet application● Focus on sharing knowledge● Competing with– Any other intranet solution– Enterprise social networks– Sharepoint
    • Introduction to CoconutStart of the project● The first release syndrome● Novice level developers● The 80% done developerLead to some “pretty horrifying code”
    • Hall of shameExamples?
    • Hall of Shame
    • Hall of Shame
    • Hall of Shame
    • Hall of Shame
    • Hall of Shame
    • Hall of Shame
    • Hall of Shame
    • Hall of shameAnd sometimes some weird structures aswell
    • Challenge 1: reliability● Application would break randomly● No way of telling up front if things are OKor not● Fixing or creating bugs?
    • Challenge 1: reliabilitySolution: do test drivendevelopmentThen you must have CI!● otherwise no-one will run tests● or say: it works on my PC!
    • Challenge 1: reliabilityIntroduce Jenkins (prev. Hudson)● Open source tool for CI● Java webapplication● Highly configurable● Easy to create your own scripts
    • Challenge 1: reliabilityMain advantage of CI:Instant feedback!
    • Challenge 1: reliabilityWhat do we do in a Jenkins build?– Create sandbox– Check basics (bundle, database setupetc)– Run specs– Run integration specs– Run acceptance specs– Create review site– Check if site runs at all
    • Jenkins: each git branch has a build
    • Jenkins: build queue
    • Jenkins: commits per build
    • Jenkins: review builds
    • Jenkins: review login page
    • Jenkins: review site
    • Jenkins: Chuck Norris plugin!Build failed? Chucks not happy
    • Jenkins: Chuck Norris plugin!Build succeeded?
    • Challenge 2: changeabilityYou are going to write all code at leasttwice. And thats not even consideringchange.● How hard is it to refactor?● How fast can you change functionality?
    • Challenge 2: changeability● Less changeable if– Untested code– Hard to read code– Code duplication– Invalid comments– Unused code– Bad naming
    • Challenge 2: changeabilitySolution: do code reviewsBut how?● First: define the process● Second: choose the tool
    • Challenge 2: changeabilityGoal: prevent erroneous or bad code toget into central repository1)Developer submits commit2)CI checks commit for errors3)Other developer reviews code4)When both OK: code submitted to mainrepository
    • Challenge 2: changeabilityIntroduce Gerrit● Open source code review tool● Java webapplication● Highly configurable● Jenkins integration available
    • Challenge 2: changeabilityMain advantage of code reviewsYou learn a lot by reading otherpeoples code!
    • Gerrit: list of reviewable commits
    • Gerrit: list of reviewable commits
    • Gerrit: list of reviewable commits
    • Gerrit: commit view
    • Gerrit: commit view
    • Gerrit: commit view
    • Gerrit: diff patchsets
    • Gerrit: diff patchsets
    • Gerrit: grade commit
    • Gerrit: DONE!
    • Oh no! Weve abandoned HENK?
    • Conclusion● We drastically improved quality by doingTDD and code reviewing● Jenkins and Gerrit are nice tools that arefree, offer lots of features and do the jobwell● However, tools are less important.Choosing the correct process is.