A Business Case for Git - Tim Pettersen
description
Transcript of A Business Case for Git - Tim Pettersen
#atlassian
Tim Pettersen • Developer Provocateur • Atlassian • @kannonboy
The business case for GitIt’s not (just) about developer happiness
The business case for
for businessPhoto: Hpeterswald
Marcus Bertrand Don’t fear the branch!!!
Stefan Saasen Scaling git!!!
Sarah Goff-Dupont Super-powered git+CI!!!
Nicola Paolucci Becoming a git master!!!
More
?
S H I P P I N G I T
C O D E Q U A L I T Y
D E V E L O P E R P R O D U C T I V I T Y
K I L L E R C O L L A B O R AT I O N
B U S I N E S S R I S K
The business case for
Wranglin’Release
Photo: Colin Gray
JIRA-456
JIRA-123
Linear workflow
feature/JIRA-123
master
Branching workflow
feature/JIRA-123
master
Branching workflow
feature/JIRA-123
isolated feature work
master
Branching workflow
feature/JIRA-123
stable master branch
isolated feature work
master
Branching workflow
git vs centralized
10
20
30
40
Daily Weekly Monthly Quarterly Yearly
git centralized
Source: Atlassian Git Survey 2013
git vs centralized
Photo: Daniel Ramirez
Shipping releases
• Git makes releasing easier and more regular
• Regular releases are good for everybody
TheBusiness
Case
Code Quality
Quality
n. koâla tēaQuality
n. koâla tēaQuality
CodeReview
Photo: Yogi (Flickr)
Reviews and releases
10
20
30
40
Daily Weekly Monthly Quarterly Yearly
Code Review No Code Review
Source: Atlassian Git Survey 2013
Better Code
Better Code
Shared Knowledge
Better Code
Shared Knowledge
Team Ownership
G = 1
R+1
Developer guilt
Team Ownership
Team Ownership
Team Ownership
</rant>
Code review
Pull requests
Pull requests
Pull requests
review before merging
We Don’t Need Code Review… We Have Continuous Integration!W E L L I N T E N T I O N E D ( B U T I N C O R R E C T ) D E V E L O P E R
”“
Pull requests
Pull requests
Pull requests
Pull requeststechnical debt
Pull requestsO(n!) algorithm
technical debt
Pull requestsbad API decision
O(n!) algorithm
technical debt
Pull requests
“what-evs”
bad API decision
O(n!) algorithm
technical debt
Pull requestshuman judgement needed
?
“what-evs”
bad API decision
O(n!) algorithm
technical debt
Pull request enforcement
Pull request enforcement
Pull request enforcement
• Code review shortens time to release
• Code review reduces business risk
• Code review and CI complement each other
TheBusiness
Case
Unblock developers
Photo: Dwight Sipler
Branch name pre-populated
Is the branch green?
Branch name pre-populated
Confounding build breakages
master
Confounding build breakages
master
Confounding build breakages
master
Confounding build breakages
master
Confounding build breakages
master
Confounding build breakages
bugfix/JRA-1
master
Confounding build breakages
bugfix/JRA-1
master
Confounding build breakages
bugfix/JRA-1
master
Confounding build breakages
bugfix/JRA-1
master
Confounding build breakages
bugfix/JRA-1
master
Is the branch green?
Comic: Randall Munroe http://xkcd.com/303/
Building branches
master
always build master
automatically triggered
Building branches
master
always build master
• Server-side branching is crazy… like a fox
• Git makes developers more productive
• Running CI on branches saves a lot of time
TheBusiness
Case
Collaborate
Photo: Photographer's Mate 3rd Class Eric S. Garst
better
Circle of Trust
Photo: Aljaz Zajc
Core dev team
Circle of Trust
Interns
Other product teams
SupportCore dev team
Circle of Trust
Strangers on the internet
Contractors
Interns
Other product teams
SupportCore dev team
Circle of Trust
Collaborating with SVN
Core dev team
Collaborating with SVN
Core dev team
Everyone else
Collaborating with SVN
Core dev team
Everyone else
emailing patches repository tarballs hell-ish conflicts
Collaborating with forks
Everyone else
Core dev team
Collaborating with forks
Everyone else
Core dev team
Collaborating with forks
Everyone else
Core dev team Changes
automatically synchronize downstream
Collaborating with forks
Everyone else
Core dev team Changes
automatically synchronize downstream
.. but must be reviewed
before moving upstream
Mentoring with branches
Senior developers
Junior developers
master
feature/*
Mentoring with branches
Senior developers
Junior developers
master
feature/*
Mentoring with branches
Senior developers
Junior developers
master
feature/*
Mentoring with branches
Senior developers
Junior developers
master
Strangers on the internet
Interns
Other product teams
SupportCore dev team
Contractors
Strangers on the internet
Interns
Other product teams
SupportCore dev team
Contractors
Strangers on the internet
Interns
Other product teams
SupportCore dev team
Contractors
Strangers on the internet
Interns
Other product teams
SupportCore dev team
Contractors
• Collaboration used to be hard
• Forks make external collaboration easy
• Branch permissions are great for mentoring
TheBusiness
Case
BusinessRisk
Photo:Remi Maupetit
Don’t lose your investment
Don’t lose your investment
Don’t lose your investment
Don’t lose your investment
Centralized DVCSCentralized SVN
Centralized DVCSCentralized SVN
??
? ?
??
Centralized DVCSCentralized SVN
??
? ?
??
Decaying branches
Decaying branchesfailed experiments?
Implementing gitis a business risk
Implementing gitis a business risk
NOT
VCS marketshare 2014
Source: Black Duck https://www.openhub.net/repositories/compare
9% 48% 37%
VCS marketshare 2014
Source: Black Duck https://www.openhub.net/repositories/compare
9% 48% 37% 2%
All sorts of teams are on&
• Git helps you track R&D more easily
• Git is widely used in the industry
• Switching to Git will help your hiring effort
TheBusiness
Case
Tim Pettersen • Developer Provocateur • Atlassian • @kannonboy
Thank you!