working with people adl uni
DESCRIPTION
Talk given to students at Adelaide University on 20 March 2008 about how we do software development in teams at Rising Sun PicturesTRANSCRIPT
![Page 2: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/2.jpg)
• #!/usr/bin/env ruby## "Hello world"
puts "Hello World"
![Page 3: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/3.jpg)
• $ sudo cp helloworld /usr/local/bin$
![Page 4: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/4.jpg)
What happens when you’re not working on your own?
![Page 5: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/5.jpg)
Things get a whole lot more difficult and complicated
![Page 6: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/6.jpg)
About Rising Sun Pictures
• Australian visual effects company
• Focus entirely on producing visual effects for feature films
• Founded 13 years ago
![Page 7: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/7.jpg)
About Rising Sun Pictures
• Offices in Adelaide and Sydney
• 120 people
• In the last five years the vast majority of our work has been for US clients
![Page 8: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/8.jpg)
Version Control
• At RSP we use Subversion for software version control
![Page 9: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/9.jpg)
Version Control
• Subversion (SVN)
• Central repository
• Tracks each change made by each person
• Supports branches
![Page 10: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/10.jpg)
Version Control
• We simply couldn’t function without it
• There are too many people working on the same code
• When something breaks, how else would we know what’s changed?
![Page 11: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/11.jpg)
Commit often
• Commit when you’ve made an “atomic” change
• A general rule of thumb - you should be committing at the very least several times a day
• Don’t commit something that breaks the unit tests
![Page 12: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/12.jpg)
Commit comments
• Tell people why you made a change. Remember the code tells people what you changed
• Consider your words carefully and keep it brief
• Include information about which bug/feature is being addressed
• Example: “Log the latest history key-value entries to a seperate metadata file in version directory [PUBLISH-496]”
![Page 13: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/13.jpg)
Bug tracking
• We have more than 12000 bug/feature tickets in our system
• More than 2000 of those are currently open
• This is way too much for any person to keep in their head
![Page 14: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/14.jpg)
Bug tracking
• We use a commercial bug tracker called JIRA www.atlassian.com/software/jira/
![Page 15: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/15.jpg)
![Page 16: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/16.jpg)
![Page 17: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/17.jpg)
Bug/version control integration
![Page 18: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/18.jpg)
![Page 19: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/19.jpg)
• Things have changed since the last time you looked at the code
• Why were the changes made? Who made them? When were they done? Who was involved in the discussions about these new features?
• You simply couldn’t answer these questions easily unless version control and bug tracking fitted together
You’re asked to add a feature
![Page 20: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/20.jpg)
Getting releases out on time
• Agile
• Short iterations of work
• Estimate the work that goes into each release
• Plan what goes into each release so that you can achieve your deadline
![Page 21: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/21.jpg)
Getting releases out on time
![Page 22: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/22.jpg)
Needs
• RSP has about 200 software projects
• Each project has around 10 versions deployed
• RSP is working on six different movies at the moment spread across two offices
• Each movie might be running a different version of each piece of software
![Page 23: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/23.jpg)
Needs
Sounds like a recipe for chaos!
![Page 24: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/24.jpg)
Needs
Our solution:
The “need” system
For example:
• $ need publish_3.6
![Page 25: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/25.jpg)
Job environment
• $ job bb
• [bb|common|global]
• $
![Page 26: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/26.jpg)
Deployment
• Builds applications on multiple architectures automatically
• Only allows deployment when unit tests pass
• Integrates with RSP’s “need” system
• Every deployment happens in both Adelaide and Sydney
• Versions the releases automatically
• Notifies people of the new release by email
![Page 27: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/27.jpg)
Deployment
![Page 28: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/28.jpg)
The result
• Once projects are set up they are very easy to deploy
• Deployments are consistent
• Fewer mistakes
• Deploying new versions of software will never change anything for the user until they specifically request that new version
![Page 29: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/29.jpg)
The Future
• Open source bug tracking tools keeps getting better
• Distributed version control is gathering momentum, especially in the open-source community.
![Page 30: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/30.jpg)
Distributed version control
• No central repository
• When you a copy (“clone”) a repository it copies the entire history
• You make all the commits to your local repository (on your own machine) - works even when there is no network. Great for working on the train!
![Page 31: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/31.jpg)
Distributed version control
• Mercurial - http://www.selenic.com/mercurial/
• Git - http://git.or.cz (Also see Linus Torvalds Google Tech Talk - google “torvalds git”)
![Page 32: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/32.jpg)
Distributed version control
No need to give anyone “commit access”
![Page 33: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/33.jpg)
Distributed version control
For those working on “Earth”
you’re going to be using git!
![Page 34: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/34.jpg)
Distributed version control
Mary’s external repo Jane’s external repo
Mary’s repo Jane’s repo
Push PushPull
![Page 35: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/35.jpg)
What you’ve seen today
• Some reasons why working in a team is harder than working on your own
• Version control
• Bug tracking
• Automated software deployment
• A bit about the future of version control
![Page 36: Working With People Adl Uni](https://reader034.vdocuments.site/reader034/viewer/2022042613/54b2d5344a795972698b459a/html5/thumbnails/36.jpg)
Questions?