Agile workflows for version control

Post on 16-Jan-2015

2.827 views 2 download

Tags:

description

 

Transcript of Agile workflows for version control

Agile Workflowsfor Version Control

Lasse Koskela

Agile Workflowsfor Version Control

Lasse Koskela

© Copyright Reaktor 2011 Confidential

60 minutes

© Copyright Reaktor 2011 Confidential

60 minutes

1. common workflows

© Copyright Reaktor 2011 Confidential

60 minutes

1. common workflows

2. agile concerns

© Copyright Reaktor 2011 Confidential

60 minutes

1. common workflows

2. agile concerns

3. critical evaluation

© Copyright Reaktor 2011 Confidential

60 minutes

1. common workflows

2. agile concerns

3. critical evaluation

4. food for thought

© Copyright Reaktor 2011 Confidential

common workflows

© Copyright Reaktor 2011 Confidential

Project X

© Copyright Reaktor 2011 Confidential

© Copyright Reaktor 2011 Confidential

© Copyright Reaktor 2011 Confidential

© Copyright Reaktor 2011 Confidential

© Copyright Reaktor 2011 Confidential

© Copyright Reaktor 2011 Confidential

© Copyright Reaktor 2011 Confidential

”© Copyright Reaktor 2011 Confidential

Developer X

I just love it when we get to use the best tools there are. Subversion kicks ass like Chuck Norris.

”© Copyright Reaktor 2011 Confidential

Developer Y

Hey, what’s this? Linus has written his own version control system from scratch? Cool. Installing git-svn...

”© Copyright Reaktor 2011 Confidential

Developer Z

It’s Sprint #35 and we’re still breaking the build almost every day, especially when Mark gets his drink on, and we end up panicking on the release day over the f***ups, wondering whether all features are ready for show time.

© Copyright Reaktor 2011 Confidential

© Copyright Reaktor 2011 Confidential

trunk development

© Copyright Reaktor 2011 Confidential

trunk development

private branches

© Copyright Reaktor 2011 Confidential

feature branches

trunk development

private branches

© Copyright Reaktor 2011 Confidential

feature branches

trunk development

© Copyright Reaktor 2011 Confidential

continuous integration

trunk development

feature branches

© Copyright Reaktor 2011 Confidential

Agile Workflows?

✓ working software as measure of progress

➡ workflow aligned with continuous integration

✓ attention to technical excellence

➡ workflow supports refactoring

✓ early and continuous delivery

➡ workflow supports one-piece flow

✓ team reflecting on its behavior

➡ workflow highlights problems

”© Copyright Reaktor 2011 Confidential

Agile Manifesto

Working software is the primary measure of progress.

continuous integration

© Copyright Reaktor 2011 Confidential

continuous integration

Working software as measure of progress

© Copyright Reaktor 2011 Confidential

continuous integration

Trunk development is almost synonymous with continuous integration. All teams integrate with the trunk so teams see the true progress all the time.(Except when you break the build for everyone.)

Teams live in the fantasy world of their feature branch until they integrate and everybody else

integrates.(Integrating continuously is only possible in the

trunk, which is not continuous integration.)

Working software as measure of progress

”© Copyright Reaktor 2011 Confidential

Agile Manifesto

Continuous attention to technical excellence and good design enhances agility.

refactoring

© Copyright Reaktor 2011 Confidential

refactoring

Attention to technical excellence

© Copyright Reaktor 2011 Confidential

refactoring

Small changes are simple. Preference to wait until after hours for doing broader refactorings.

(Due to fear of breaking stuff.)

Simple refactorings are trouble-free within the feature branch. Broader refactorings are scary.

(Because I don’t know how far others have deviated from the trunk since our common starting point.)

Attention to technical excellence

”© Copyright Reaktor 2011 Confidential

Agile Manifesto

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

one-piece flow

© Copyright Reaktor 2011 Confidential

continuous integration

Early and continuous delivery

© Copyright Reaktor 2011 Confidential

one-piece flow

We can deploy the latest and greatest while the trunk is green or quickly fix what’s broken.

(Assuming we’re good at this software stuff.)

We can deploy what we had a few hours ago or quickly integrate that one feature you really wanted.

(Assuming we’re good at this software stuff.)

Early and continuous delivery

”© Copyright Reaktor 2011 Confidential

Agile Manifesto

At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

highlighting problems

© Copyright Reaktor 2011 Confidential

continuous integration

Reflecting on our way of working

© Copyright Reaktor 2011 Confidential

highlighting problems

Problems are visible right away. Pressure to fix the build. Pressure to find a way to collaborate on the same branch (trunk), same files, and same feature.

Focus is on finding ways to collaborate.

Option of deciding what goes into a release. Attention drawn to questions like enabling and

disabling incomplete features. Focus is on managing product development.

Reflecting on our way of working

© Copyright Reaktor 2011 Confidential

Food for thought(stuff that might matter to you)

© Copyright Reaktor 2011 Confidential

(There.)

© Copyright Reaktor 2011 Confidential

Code archaeology

© Copyright Reaktor 2011 Confidential

What goes into a release?

© Copyright Reaktor 2011 Confidential

Balancing proximity and stability

© Copyright Reaktor 2011 Confidential

Balancing proximity and stability

Stability =Team Size x Feedback Cycle

Discipline x Architecture

© Copyright Reaktor 2011 Confidential

Branching by Abstraction

thank you.lasse.koskela@reaktor.fi

questions? thoughts?