going universal: ipad lessons learned at...

36
Going Universal iPad Lessons Learned at ING Age Mooij Andrew Snare

Upload: others

Post on 26-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Going UniversaliPad Lessons Learned at ING

Age MooijAndrew Snare

Page 2: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need
Page 3: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need
Page 4: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Things were going well...

Background

Page 5: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

The Challenge

• Strong focus on UI look and feel

• Heavily customized/styled UI

• Complex security requirements

• Coming from behind the market

• There was an existing app based on the MSN chat-bot: universally embarrassing.

Page 6: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

The Process

• A pilot scrum project at ING

• 2 week sprints

• Started with one team, grew to 3 teams (iOS, Android, backend)

• Dedicated UX people

• Lots of internal stakeholders!

Page 7: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

“That’s great, but will it also work on my iPad”?– Really Important Manager

The Big DemoSeptember 2011

Page 8: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

“That’s great, but will it also work on my iPad”?– Really Important Manager

The Big DemoSeptember 2011

Page 9: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

BigPhone™ — Just Scale Up

Plan A

Page 10: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Plan A: Results

• Took 2 weeks

• Developer hated being isolated

• Did not meet UX requirements

• It let us estimate the real effort.

Page 11: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Lesson Learned

For a high quality app, you really need to create a separate iPad UI.*

*Duh!

Page 12: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

A Tale of Two Teams

Plan B

iPhone

Universal

iPhone

Page 13: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Plan B: Results

• Lasted half a sprint

• Not sustainable due to merging overhead

• New team couldn’t help but slow the original team: they needed help.

Page 14: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Lesson Learned

This was a really bad idea!

Page 15: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

One Big Happy Family

Plan CnewTeam

oldTeambigTeam = zip(newTeam, oldTeam)

Page 16: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

One Big Happy Family

Plan C

newTeam oldTeambigTeam = zip(newTeam, oldTeam)

Page 17: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Plan C Result: 1.0

• This worked!

• Some pairs worked on new functionality, some on existing screens.

• Took 6 weeks, instead of 3

• Business very very happy.

Page 18: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Lesson Learned

Pair-programming is a fantastic tool for scaling a team up quickly.

Page 19: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

So what did we really need to do?

The Nerdy Bits

Page 20: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Splitting the Screen

Page 21: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Splitting the Screen

• Oh, the pain: UISplitViewController

• It must be the root, but our starting grid is.

• View controllers could no longer be in charge of the entire screen.

• Handling teardown on errors was very very hard.

• Keeping the two sides synchronized:

• Current balance

• Refresh detail triggers refresh of master

• Refresh master triggers selection, which forces refresh of the detail.

Page 22: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Lessons Learned

Custom UI and navigation flow is expensive.

View controllers should use a shared model.

Page 23: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Reuse existing view controllers inside model dialogs.

This saved us a lot of time.

Modal Popovers

Here be dragons:-(UIViewController *)parentViewController;-(UIViewController *)presentingViewController;

Page 24: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

if (iPad) …

• Sometimes we could get away with a more generic solution:view.autoresizingMask = UIViewAutoresizingFlexibleWidth | …;

• We used a lot of if-iPad blocks:if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) { … }

• We used subclassing:@interface FooViewController_iPad : FooViewController@end

Page 25: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Rotation

• Rotation was originally omitted to save time.

Not an acceptable compromise on the iPad: people expect all orientations to work.

• Lots of small changes required, mainly with autoresizing behaviour.

Page 26: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Cleaning up the mess…

Technical Debt

Page 27: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Conscious Compromise

• Decision to trade off technical debt for meeting the deadlines.

• Paying off the debt is still an ongoing effort.

Page 28: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Lesson Learned

Technical debt can be acceptable…

BUT

…be aware it may never be paid off.Don’t make the compromise if this is unacceptable.

Page 29: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Next time?

Just start with universal from the start…?

Stay agile, but anticipate going universal:

• For example, UI/UX design that is easier to scale.

Page 30: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

And what’s next?

Where are we now?

Page 31: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

A Success Story

> 1,000,000downloads

Lots of feedback (about

missing features)

Consistent 4.5 star rating

4 major releases2 minor releases

About every 6-8 weeks

Page 32: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Sneak Preview

Page 33: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Sneak Preview

Page 34: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Sneak Preview

Page 35: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

One more time…

• For a high quality app, you really need to create a separate iPad UI.

• Bad idea: 2 teams, 1 product.

• Pair-programming is a fantastic tool for scaling a team up quickly.

• Custom UI and navigation flow is expensive to build and maintain.

• View controllers should use a shared model.

• Technical debt may never be paid off: don’t make the compromise if this is unacceptable.

Page 36: Going Universal: iPad Lessons Learned at INGgotocon.com/...amsterdam...GoingUniversalIPadLessonsLearnedAtINGMobile.pdf · One more time… • For a high quality app, you really need

Thank You!

Age Mooij (@agemooij)Andrew Snare (@asnare)

Questions?