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
© 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
© 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
Zühlke. Empowering Ideas.
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
Watch a short recorded demo on YouTube
© Zühlke 2012
Current reviews look as if we managed to achieve some of our goals
https://monitor.distimo.com/reviews
http://www.windowsphone.com/de-de/apps/47d0b293-e59c-e011-986b-78e7d1fa76f8
Publicly available:
© 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
© 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
© 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
© 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
© 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
© 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
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
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)
© 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
LL Feedback1:Better be prepared!
© 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
© 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
© 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
© 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
© 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
© 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
© 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
LL Arch1:Offline = default!
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
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
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
…
…
© 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
© 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
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
© 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
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
© 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
© Zühlke 2012
Lessons Learned from Building a Social Media App for Windows Phone
Stefan Grasmann
Summary
11. April 2012Slide 41 of 49
It’s not always cosy in a Sandwich position with partners…
… but it will work if you really want to!
© 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
© 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
© 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
Thank you!
Even apps need engineering.
More on Mobile Computing: