47
© Zühlke 2012 Stefan Grasmann XING for Windows Phone by Zühlke (Webinar for SAP) Lessons Learned from Building a Social Media App for Windows Phone 11. April 2012 Slide 1 of 49

Sap building a_social_media_app_for_windows_phone_grasmann

  • Upload
    zuehlke

  • View
    594

  • Download
    0

Embed Size (px)

DESCRIPTION

Presentation at SAP on the lessons learned buildung a social media App for windows phone. The slides include a link to a 35sec-Demo on YouTube and share lessons learned regarding: performance, going live, handling user feedback, live tiles, architecture and cross-platform opportunities.

Citation preview

Page 1: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012

Stefan Grasmann

XING for Windows Phone by Zühlke (Webinar for SAP)

Lessons Learned from Building a Social Media App for Windows Phone

11. April 2012Slide 1 of 49

Page 2: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

Agenda

Intro

Demo

Lessons learned regarding

• Performance

• Going live

• Handling user feedback

• Live Tiles

• Architecture

• Cross-platform opportunities

Summary11. April 2012 Slide 2 of 49

Page 3: Sap building a_social_media_app_for_windows_phone_grasmann

Zühlke. Empowering Ideas.

Page 4: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

Three connected areasto increase growth, innovation and productivity

• Product & Software Engineering

• Management Consulting

• Ventures

11. April 2012 Slide 4 of 49

Page 5: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

Facts & Figures• More than 7000 projects to our

credit

• Turnover 68 Mio. € (2011)

• 500 Employees (end 2011)

• In Austria, Germany, Switzerland and in the United Kingdom

• Foundation 1968, now owned by a management team

• ISO 9001:2000 and 13485 certificated

11. April 2012 Slide 5 of 49

Page 6: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

…and about me

Stefan Grasmann• MSc in Computer Science,

• since 2003 @ Zühlke, since 2007 Business Unit Manager with a team in Frankfurt/Eschborn

• Responsible Engagement Manager for many projects with Microsoft technologies

• Broad spectrum of project types: embedded topics, rich clients, RIA, web development – now more and more mobile topics

• Contact me:– @sgrasmann – [email protected]– sgrasmann.blogspot.com

11. April 2012 Slide 6 of 49

Page 7: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

Our situation in 2010:

• Big interest among our employees regarding app development

• Many initiatives were started (without too much focus)

• Interesting technologies

• We had to come up with a management strategy to guide all this enthusiasm

Smartphone apps – a challenge or an opportunity for engineering service providers like Zühlke?

11. April 2012 Slide 7 of 49

Page 8: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

• How can we leverage our existing knowledge (embedded & connected systems, enterprise mobile apps) to the smart phone app development market?

• Where might be our(!) business and which apps and customers would be suitable to our quality and pricing?

• Which platform(s) should be in our focus?

• How do we differentiate from competitors?

• How do the different app markets work? How do you earn money?

• Where is our first project to create a compelling reference case?

Many questions…

11. April 2012 Slide 8 of 49

Page 9: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

• As usual: Convince the customer with our Zühlke values and engineering experience. Propose a time & material budget!?– No chance without references in the different app stores and market

places! Difficult…

• Be a competitor to agencies, which generate a mobile app from your Facebook account for 500€?– Extremely low price levels. Economically dangerous…

• Create demo apps for Android, iPhone and WP7!– We gave it a try, nobody believed us…

…earlier attempts to enter the market…

11. April 2012 Slide 9 of 49

Page 10: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

Search for a well-known brand,

…a trusted partner, who still is a challenger in this market……

…and create something new.

New idea…

11. April 2012 Slide 10 of 49

Page 11: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

Goals of the partners

All: Quality

& Reach

Microsoft:- Create

another top app for our

new platform

XING:- Increase

Reach- Relief

through a partner

Zühlke:- Marketing

and visibility in the new

market- gain

credibility

11. April 2012 Slide 11 of 49

Page 14: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012

Lessons Learned from Building a Social Media App for Windows Phone

Stefan Grasmann

Lessons learned regarding…

…performance

11. April 2012Slide 14 of 49

Page 15: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012

The emulator

• is faster than your target

• has more memory than your target

• has better connectivity than your target

• has better crypto algorithms implemented than your target

Bottom line:

Test on the target!

As early as possible!

On as many device types as possible!

LL Perf1:The emulator is not your target!

11. April 2012 Slide 15 of 49

Page 16: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

Measure

• memory footprint of the app (different scenarios)

• startup times

• animation overhead

Trace

• typical user flows (beware of privacy!)

• locally and Server-side (e.g. Omniture)

• to learn about your users

Optimize

• for important/frequently used scenarios and areas

LL Perf2:Don’t guess! Measure, trace and optimize as much as you can

11. April 2012 Slide 16 of 49

Page 17: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

Lazy loading might be good in PC apps and for servers

It is not for mobile apps!

Your users will judge your app on the first impression and its loading and scrolling performance – you won’t get a second chance!

We implemented a “fetch relevant data on first app start” mechanism to be as fast as possible on 1st usage – so far 0 complaints about this “unusual behavior”

LL Perf3:Beware of lazy loading!

11. April 2012 Slide 17 of 49

Page 18: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012

Lessons Learned from Building a Social Media App for Windows Phone

Stefan Grasmann

Lessons learned regarding…

…going live

11. April 2012Slide 18 of 49

Page 19: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012

You will need to create

• great teaser texts for your marketplace offer

• compelling screen shots (privacy!)

• hi-res versions of your app screenshots

• a press release in the name of your upper management

• Set up a social media strategy to influence feedback

at a time when you have other problems…

LL GoingLive1:Don’t underestimate marketing efforts!

11. April 2012 Slide 19 of 49

Page 20: Sap building a_social_media_app_for_windows_phone_grasmann

11. April 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

Bug in V1.2

Bugs in V1.0 (z.B. User with

2835 XING contacts)

Problem solved in v1.1

Hotfix

(v1.3)

LL GoingLive2:Prepare for fast fixes!

2 weeks

Page 21: Sap building a_social_media_app_for_windows_phone_grasmann

Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann Slide 21 of 49

Microsoft campaign

(App of the day)

Press Releases XING & Zühlke

LL GoingLive3:Marketing and promotions matter!

Mobile Tech Conference

(talk)

Promotion during CeBIT

(MS)

XING corp. blog

Microsoft campaign

(App of the day)

Page 22: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012

Lessons Learned from Building a Social Media App for Windows Phone

Stefan Grasmann

Lessons learned regarding…

…user feedback

11. April 2012Slide 22 of 49

Page 23: Sap building a_social_media_app_for_windows_phone_grasmann

LL Feedback1:Better be prepared!

Page 24: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012

Create feedback channels for

• errors and problems (when they occur!)

• suggestions to improve subtle things

• fans (yes you will get fans!)

Try to create a community:

• use social media

• direct your users to your place and be a good moderator

• React on questions and concerns

LL Feedback2:Create usable feedback channels!

11. April 2012 Slide 24 of 49

Page 25: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012

Respond to every feedback!

Be as fast as you can!

In case of a problem

• tell your users about the problem

• explain the background and reasons why this happened and won’t happen in the future

If you get feature wishes:

• Explain the priority of the feature wish

• Tell your users if you won’t implement their wishes and why

LL Feedback3:Be honest and grateful for feedback!

11. April 2012 Slide 25 of 49

Page 26: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012

If you want to give proper feedback you want to concentrate on the real problems – so try to let the app handle “normal problems” for itself

Give the user as much information as possible why s.th. currently doesn’t work properly (error messages!)

LL Feedback4:Implement self-healing mechanisms to reduce support effort!

11. April 2012 Slide 26 of 49

Page 27: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

Try to consider error conditions and implement self-healing features so that the users won’t bother you with things like

• the web server (or a part/service of it) currently isn’t available

• the user is currently offline or not allowed to use a certain feature

• S.th. with caching went wrong and you’ve got inconsistent data

• -> Demo

LL Feedback4:Implement self-healing mechanisms to reduce support effort!

11. April 2012 Slide 27 of 49

Page 28: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012

Lessons Learned from Building a Social Media App for Windows Phone

Stefan Grasmann

Lessons learned regarding…

…Live Tiles

11. April 2012Slide 28 of 49

Page 29: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012

Live Tiles are the No1 differentiator for Windows Phone apps

Creating a good Live Tile is hard…

…and needs several iterations:

LL LiveTiles1:Creating Live Tiles for Windows Phone Apps is hard!

11. April 2012 Slide 29 of 49

Page 30: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012

Lessons Learned from Building a Social Media App for Windows Phone

Stefan Grasmann

Lessons learned regarding…

…architecture

11. April 2012Slide 30 of 49

Page 31: Sap building a_social_media_app_for_windows_phone_grasmann

LL Arch1:Offline = default!

Page 32: Sap building a_social_media_app_for_windows_phone_grasmann

Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann Slide 32 of 49

LL Arch2:Use MVVM, async calls, decouple commands

Isolated Storage

View

ViewModel

Store

Service

Commands, Calls

Data-Binding

CallBack,StateChangedEvent

Callback,errorCallback

Call

Call

LocalStorage

Access

REST-XMLParse ResponseMessenger

Publish/Subscribe

Page 33: Sap building a_social_media_app_for_windows_phone_grasmann

LL Arch3:Continuous integration is somewhat hard but possible for mobile development

Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann Slide 33 of 49

Page 34: Sap building a_social_media_app_for_windows_phone_grasmann

11. April 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

LL Arch4:Extend your app domain model with metadata to improve caching scenarios

Profile Data Container

Members

ContactsVisitorsContact

RequestsNews

Meta Data Meta Data Meta Data Meta Data

Meta Data

Page 35: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012

Lessons Learned from Building a Social Media App for Windows Phone

Stefan Grasmann

Lessons learned regarding…

…cross platform

11. April 2012Slide 35 of 49

Page 36: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012

Possible target platforms:

• Android phones & tablets (Mono for Android)

• iPhone & iPads (MonoTouch)

• Windows 8 Metro-style apps (.NET portable class libraries)

Create new native GUIs, but reuse the foundation of the app

• Data fetching

• Client domain model

• Error handling

• Caching

• …

Goal: Reuse business logic and service agent code for other apps!Remark: .NET & Mono is just one way!

11. April 2012 Slide 36 of 49

Page 37: Sap building a_social_media_app_for_windows_phone_grasmann

11. April 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

Evolution of our App Architecture to support Android (iOS alike)

ViewsViewModel

XingApp.Ui.Wp7

StoresServices

XingApp.Core

InterfacesEntities

XingApp.Common

Storage

XingApp.Common.Wp7

ViewsViewModel

XingApp.Ui.Android

Storage

XingApp.Common.Android

Page 38: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

21264

13792

11482

3245

Lines of Code

Views & ViewModelsCoreCommonWP7 specific

Current code distribution (without test code)-> ~50% reusability – and still „native“

11. April 2012 Slide 38 of 49

Page 39: Sap building a_social_media_app_for_windows_phone_grasmann

11. April 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

Evolution of our App Architecture to support Windows 8 Apps

ViewsViewModel

XingApp.Ui.Wp7

StoresServices

XingApp.Core

InterfacesEntities

XingApp.Common

Storage

XingApp.Common.Wp7

ViewsViewModel

XingApp.Ui.Win8

Storage

XingApp.Common.Win8

Reuse!

Refactor!

Refactor!

Replace RESTSharp with pluggable HttpClient conceptto support native Win8 HttpClient

Page 40: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

WP7 Windows 8 Android iOS

Views Silverlight & C#

WinRT views

Android specific iOS specific

ViewModels .NET portable class libraries(?)

Core Logic .NET portable class libraries

Common Interfaces .NET portable class libraries

Platform specific extensions

C# with WP7 API

C# with WinRT API

C# with Mono API

C# with Mono API

Reuse overview (possible target architecture)

11. April 2012 Slide 40 of 49

Page 41: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012

Lessons Learned from Building a Social Media App for Windows Phone

Stefan Grasmann

Summary

11. April 2012Slide 41 of 49

Page 42: Sap building a_social_media_app_for_windows_phone_grasmann

It’s not always cosy in a Sandwich position with partners…

Page 43: Sap building a_social_media_app_for_windows_phone_grasmann

… but it will work if you really want to!

Page 44: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012

Why?

• It is embedded software

• It’s a distributed solution

• You might not have control over the server-side and its evolution

• You typically don’t know much about the users (until v1 release)

• You need happy users, otherwise they will punish you…

• Your users expect not only functionality and usability – they want to enjoy your app!

This is complex!

Don’t underestimate the effort to build a first-class app!

11. April 2012 Slide 44 of 49

Page 45: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

Many different people helped to make this project successful!

11. April 2012 Slide 45 of 49

Page 46: Sap building a_social_media_app_for_windows_phone_grasmann

© Zühlke 2012Lessons Learned from Building a Social Media App for Windows Phone | Stefan Grasmann

Zühlke Seminar:Cross-Platform for Tablets and Smart Phones„One for all!?“

11. Juni 2012 Hannover

12. Juni 2012 Frankfurt

18. Juni 2012 München

HTML 5 vs. Native, cross-platform development options, cross-platform usability & UX, interface aspects & much more…

Details: http://www.zuehlke.com/seminar-mobile

Invitation

11. April 2012 Slide 46 of 49