January 20, 2015
Hector Zarate Rea (@iOSCowboy)
From Plan to Done (iOS Client)
Spotify in Numbers
•Over 60 million active users.
•Over 30 million songs.
• 20,000 songs added per day.
•Over 1.5 billion playlists created so far.
• Available in 58 markets
Our iOS Client in Numbers
40 Contributors each month
Millions User Base
500,000 Lines of code
Repository Contributors in Numbers
0
12,5
25
37,5
50
PROBLEM 1: Feature Branches
master
Feature Branches
master
Feature Branches
feature_a
master
Feature Branches
feature_a
feature_b
master
Feature Branches
feature_a
feature_b
feature_c
master
Feature Branches
feature_a
feature_b
feature_c
x
x
Branches Merged Back Into Master
70%
30%
SOLUTION 1: AB Rollout
master
SOLUTION 1: AB Rollout
master (feature_a, feature_b, feature-c)
SOLUTION 1: AB Rollout
A B
SOLUTION 1: AB Rollout
A B
Branches Merged Back Into Master10%
90%
PROBLEM 2: Merge Conflicts (Lots of ‘em)
Spotify.xcodeproj
PROBLEM 2: Merge Conflicts (Lots of ‘em)
PROBLEM 2: Merge Conflicts (Lots of ‘em)
+x x
PROBLEM 2: Merge Conflicts (Lots of ‘em)
Spotify.xcodeproj
PROBLEM 2: Merge Conflicts (Lots of ‘em)
Radio Browse Social
DiscoverMusic Player X
1. Agile - Flavored Process
Plan Work Done
1. Agile - Flavored Process
Plan Work Done
◕ ◡ ◕
2. Version Control
◕ ◡ ◕
2. Version Control
3. Code Reviews
◕ ◡ ◕
3. Code Reviews
ಠ _ ಠ ◕ ◡ ◕
3. Code Reviews
ಠ _ ಠ ◕ _ ◕
3. Code Reviews
ಠ ◡ ಠ ◕ _ ◕
3. Code Reviews
ಠ ◡ ಠ ◕ ◡ ◕
3. Code Reviews
• Spread Knowledge.
• Prevent work from being repeated.
• Opportunity to detect errors earlier.
feature
3. Continuos Integration
3. Continuos Integration
• Eases integration issues.
• Gives automatic notification of build and test errors and prints stats like code coverage.
• Gives clues of where and when things went wrong to everybody.
• Executes tests suites
4. Unit Tests
1 2 3 4
4. Unit Tests
1 2 3 4 5
4. Unit Tests
1 2 3 4 5 6
4. Unit Tests
• Used mainly to test model and model-view layers of the client.
• First channel of feedback to avoid regressions.
• Can be executed on the developer machine as well.
5. Automated Tests
5. Automated Tests
5. Automated Tests
• Used mainly to test the view layer and user interfaces of the app.
• Executed on all supported devices.
January 20, 2015
Questions!
January 20, 2015
Thank you!
January 20, 2015
Keep in touch
[email protected]
@iOSCowboy
iOSCowboy.com