Successive, well intentioned, changes to
architecture throughout the lifetime of a
project can lead to a fragmented and
hard-to-maintain code base
Lava layers
Slide 16
Slide 16 text
Rewrite by abstraction
Slide 17
Slide 17 text
Rewrite by abstraction
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
● Legacy project by an external agency
● Decision to start from scratch
● Big bang release*
* except iPad which got delayed
iOS
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
● Fresh start with code architecture
● Away with legacy code
once and for all
● Innovation on hold for a while
● Might need to sacrifice existing
features → angry users
Rewrite aftermath
Slide 22
Slide 22 text
Positive side effect
User complaints about iOS app crashes
Slide 23
Slide 23 text
4
Avoid premature reorganisation
Slide 24
Slide 24 text
The challenge
Scaling the team
Slide 25
Slide 25 text
How we thought we’ll solve it
Scaling the team
Slide 26
Slide 26 text
How it was in practice
Scaling the team
Slide 27
Slide 27 text
Expectations
Path to feature teams
Slide 28
Slide 28 text
Reality
Path to feature teams
Slide 29
Slide 29 text
Current transitional structure
Scaling the team
Slide 30
Slide 30 text
5
Empower teams
Slide 31
Slide 31 text
iOS/Android team
Search Stations Sign-in Creators
...
Traditional release model
Slide 32
Slide 32 text
Search Stations Sign-in Creators
...
Relase train model
Slide 33
Slide 33 text
Empower teams
● Everyone can ship to master*
● Put the code behind a feature flag
● Enable the feature once ready to ship
* Pairing required. When working alone you need 2x on your pull request.
Slide 34
Slide 34 text
Release train
Feature development & QA Review / Public Beta
Feature freeze
Feature freeze
Feature freeze
Behind the feature flag
- (void)registerAppShortcuts
{
if ([FTSFlipTheSwitch isDevAppShortcutsEnabled]) {
[self registerInitialActions];
}
}
Slide 38
Slide 38 text
“You break it, you buy fix it”
● Continuous integration allows us to
trust that we’re not breaking features
● Good unit and acceptance tests as an
insurance policy