The document discusses two challenges faced in the Coconut product development process and how two tools helped improve reliability and changeability. The first challenge was random application breaks due to a lack of testing. Jenkins was introduced for continuous integration to provide instant feedback. The second challenge was difficulty refactoring and changing functionality. Gerrit was implemented for code reviews to catch errors and improve code quality before merging. In conclusion, the tools helped but defining the right processes around testing and reviews was most important for quality improvements.
2. Roelof Reitsma
Lead developer Coconut team
Favorite gems:
Bundler & Capistrano
Favorite tools:
Gerrit & Jenkins
When I'm not working: cycling, running and
creating an awesome meal!
3. Goal:
Show two challenges we encountered
developing our product
Demonstrate how two tools help us improve
(which might be useful for you)
4. Contents
● An introduction to Coconut
● First challenge: reliability
● Second challenge: changeability
● Conclusion
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. Introduction to Coconut
Start of the project
● The first release syndrome
● Novice level developers
● The 80% done developer
Lead to some “pretty horrifying code”
16. Challenge 1: reliability
● Application would break randomly
● No way of telling up front if things are OK
or not
● Fixing or creating bugs?
17. Challenge 1: reliability
Solution: do test driven
development
Then you must have CI!
● otherwise no-one will run tests
● or say: it works on my PC!
18. Challenge 1: reliability
Introduce Jenkins (prev. Hudson)
● Open source tool for CI
● Java webapplication
● Highly configurable
● Easy to create your own scripts
20. Challenge 1: reliability
What do we do in a Jenkins build?
– Create sandbox
– Check basics (bundle, database setup
etc)
– Run specs
– Run integration specs
– Run acceptance specs
– Create review site
– Check if site runs at all
29. Challenge 2: changeability
You are going to write all code at least
twice. And that's not even considering
change.
● How hard is it to refactor?
● How fast can you change functionality?
30. Challenge 2: changeability
● Less changeable if
– Untested code
– Hard to read code
– Code duplication
– Invalid comments
– Unused code
– Bad naming
32. Challenge 2: changeability
Goal: prevent erroneous or bad code to
get into central repository
1)Developer submits commit
2)CI checks commit for errors
3)Other developer reviews code
4)When both OK: code submitted to main
repository
46. Conclusion
● We drastically improved quality by doing
TDD and code reviewing
● Jenkins and Gerrit are nice tools that are
free, offer lots of features and do the job
well
● However, tools are less important.
Choosing the correct process is.