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 work...
Goal:Show two challenges we encountereddeveloping our productDemonstrate how two tools help us improve(which might be usef...
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 appli...
Introduction to CoconutStart of the project● The first release syndrome● Novice level developers● The 80% done developerLe...
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 c...
Challenge 1: reliabilitySolution: do test drivendevelopmentThen you must have CI!● otherwise no-one will run tests● or say...
Challenge 1: reliabilityIntroduce Jenkins (prev. Hudson)● Open source tool for CI● Java webapplication● Highly configurabl...
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 s...
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 i...
Challenge 2: changeability● Less changeable if– Untested code– Hard to read code– Code duplication– Invalid comments– Unus...
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 ...
Challenge 2: changeabilityIntroduce Gerrit● Open source code review tool● Java webapplication● Highly configurable● Jenkin...
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...
Upcoming SlideShare
Loading in …5
×

Product development and tools

272 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
272
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Product development and tools

  1. 1. Improving your productdevelopment processA view on the tools that help us improve
  2. 2. Roelof ReitsmaLead developer Coconut teamFavorite gems:Bundler & CapistranoFavorite tools:Gerrit & JenkinsWhen Im not working: cycling, running andcreating an awesome meal!
  3. 3. Goal:Show two challenges we encountereddeveloping our productDemonstrate how two tools help us improve(which might be useful for you)
  4. 4. Contents● An introduction to Coconut● First challenge: reliability● Second challenge: changeability● Conclusion
  5. 5. 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
  6. 6. Introduction to CoconutStart of the project● The first release syndrome● Novice level developers● The 80% done developerLead to some “pretty horrifying code”
  7. 7. Hall of shameExamples?
  8. 8. Hall of Shame
  9. 9. Hall of Shame
  10. 10. Hall of Shame
  11. 11. Hall of Shame
  12. 12. Hall of Shame
  13. 13. Hall of Shame
  14. 14. Hall of Shame
  15. 15. Hall of shameAnd sometimes some weird structures aswell
  16. 16. Challenge 1: reliability● Application would break randomly● No way of telling up front if things are OKor not● Fixing or creating bugs?
  17. 17. Challenge 1: reliabilitySolution: do test drivendevelopmentThen you must have CI!● otherwise no-one will run tests● or say: it works on my PC!
  18. 18. Challenge 1: reliabilityIntroduce Jenkins (prev. Hudson)● Open source tool for CI● Java webapplication● Highly configurable● Easy to create your own scripts
  19. 19. Challenge 1: reliabilityMain advantage of CI:Instant feedback!
  20. 20. 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
  21. 21. Jenkins: each git branch has a build
  22. 22. Jenkins: build queue
  23. 23. Jenkins: commits per build
  24. 24. Jenkins: review builds
  25. 25. Jenkins: review login page
  26. 26. Jenkins: review site
  27. 27. Jenkins: Chuck Norris plugin!Build failed? Chucks not happy
  28. 28. Jenkins: Chuck Norris plugin!Build succeeded?
  29. 29. 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?
  30. 30. Challenge 2: changeability● Less changeable if– Untested code– Hard to read code– Code duplication– Invalid comments– Unused code– Bad naming
  31. 31. Challenge 2: changeabilitySolution: do code reviewsBut how?● First: define the process● Second: choose the tool
  32. 32. 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
  33. 33. Challenge 2: changeabilityIntroduce Gerrit● Open source code review tool● Java webapplication● Highly configurable● Jenkins integration available
  34. 34. Challenge 2: changeabilityMain advantage of code reviewsYou learn a lot by reading otherpeoples code!
  35. 35. Gerrit: list of reviewable commits
  36. 36. Gerrit: list of reviewable commits
  37. 37. Gerrit: list of reviewable commits
  38. 38. Gerrit: commit view
  39. 39. Gerrit: commit view
  40. 40. Gerrit: commit view
  41. 41. Gerrit: diff patchsets
  42. 42. Gerrit: diff patchsets
  43. 43. Gerrit: grade commit
  44. 44. Gerrit: DONE!
  45. 45. Oh no! Weve abandoned HENK?
  46. 46. 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.

×