+ All Categories
Home > Documents > How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov...

How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov...

Date post: 08-Aug-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
19
How we rewrote QuizUp iOS for 2.0 A story of ~3000 unit tests Jóhann Þ. Bergþórsson, CTO
Transcript
Page 1: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

How we rewrote QuizUp iOS for 2.0A story of ~3000 unit tests

Jóhann Þ. Bergþórsson, CTO

Page 2: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

Connecting People Through Shared Interests

Page 3: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

What is QuizUp?

Page 4: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

What is QuizUp?• The biggest trivia game in the world! • 1 million registered users in first week • 30m+ registered users • 549,250 questions in 1064 topics in 6

languages • Over 3 billion games played!

Page 5: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

A brief evolution of QuizUp

Page 6: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

Evolution of QuizUp• May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp begins • Nov 2013 - QuizUp iOS 1.0! • Feb 2014 - QuizUp for iPad • March 2014 - QuizUp Android 1.0!

Page 7: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

Technical Debt of QuizUp 1.0

Page 8: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

Technical Debt of QuizUp 1.0

• Cocos2D! • Topic metadata cache in client • Localisation • Almost no unit tests!

Page 9: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

How lack of tests slowed us down

Page 10: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

How lack of tests slowed us down

• Long QA cycles • Low confidence when releasing

updates • Expensive external regression tests • Wasted time while trying to write

stable UI integration tests

Page 11: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

Working Agreement for QuizUp 2.0

Page 12: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

Working Agreement for QuizUp 2.0

• Unit Tests! • High coverage, TDD and agreement on

no PR's without tests • Fully native using pure UIKit • MVVM and focus on immutability and

unidirectional data flow.

Page 13: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

Working Agreement for QuizUp 2.0• Agile development:

• Release internal build at every commit • Stability is key, i.e. fix bugs before new mayor feature • Short focused sprints • Easy to report bugs using shake-and-report

• Visible metrics during development on dashboards: • Crashes per version • Startup time • Low-memory warnings from OS • Image cache hit ratio

Page 14: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

The Big Rewrite

Page 15: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

The Big Rewrite• Cons:

• Classical failure scenario • High risk of making the same mistakes again • Huge complexity in maintaining two codebases

• Pros: • Greenfield projects are fun! • Possible to build upon lessons learned • Get rid of technical debt! • We’re building something incredibly awesome!

Page 16: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

QuizUp 2.0

Page 17: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

QuizUp 2.0!

LEGAL SAYS: NOT YET!

Page 18: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

Questions?

Page 19: How we rewrote QuizUp iOS for 2 · Evolution of QuizUp • May 2012 - Eurovision QuizUp • Nov 2012 - Twilight QuizUp • Feb 2013 - NatGeo QuizUp • May 2013 - Development of QuizUp

We’re hiring!q.is/jobs


Recommended