Working With People Adl Uni

19
Working with people (and some technology that helps) [email protected] Rising Sun Pictures

description

Talk given to students at Adelaide University on 20 March 2008 about how we do software development in teams at Rising Sun Pictures

Transcript of Working With People Adl Uni

Page 1: Working With People Adl Uni

Working with people(and some technology that helps)

[email protected] Sun Pictures

Page 2: Working With People Adl Uni

• #!/usr/bin/env ruby## "Hello world"

puts "Hello World"

Page 3: Working With People Adl Uni

• $ sudo cp helloworld /usr/local/bin$

Page 4: Working With People Adl Uni

What happens when you’re not working on your own?

Page 5: Working With People Adl Uni

Things get a whole lot more difficult and complicated

Page 6: Working With People Adl Uni

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

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

Version Control

• At RSP we use Subversion for software version control

Page 9: Working With People Adl Uni

Version Control

• Subversion (SVN)

• Central repository

• Tracks each change made by each person

• Supports branches

Page 10: Working With People Adl Uni

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

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

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

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

Bug tracking

• We use a commercial bug tracker called JIRA www.atlassian.com/software/jira/

Page 15: Working With People Adl Uni
Page 16: Working With People Adl Uni
Page 17: Working With People Adl Uni

Bug/version control integration

Page 18: Working With People Adl Uni
Page 19: Working With People Adl Uni

• 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

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

Getting releases out on time

Page 22: Working With People Adl Uni

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

Needs

Sounds like a recipe for chaos!

Page 24: Working With People Adl Uni

Needs

Our solution:

The “need” system

For example:

• $ need publish_3.6

Page 25: Working With People Adl Uni

Job environment

• $ job bb

• [bb|common|global]

• $

Page 26: Working With People Adl Uni

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

Deployment

Page 28: Working With People Adl Uni

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

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

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

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

Distributed version control

No need to give anyone “commit access”

Page 33: Working With People Adl Uni

Distributed version control

For those working on “Earth”

you’re going to be using git!

Page 34: Working With People Adl Uni

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

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

Questions?