NSCoder Spotify - From Plan to Done

56
January 20, 2015 Hector Zarate Rea (@iOSCowboy) From Plan to Done (iOS Client)

Transcript of NSCoder Spotify - From Plan to Done

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

S C A L E

P R O B L E M S

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

GAME STRATEGY

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

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.

master

6. Log Crashes

January 20, 2015

Questions!

January 20, 2015

Thank you!

January 20, 2015

Keep in touch

[email protected]

@iOSCowboy

iOSCowboy.com