SlideShare a Scribd company logo
1 of 19
Download to read offline
One month to the
app store
Christopher Winstanley
@CWinstanley90
Problem
Every app should solve a problem

Started at BBC 

Missing Trams

beta.tfgm.com

TFGM App

Registered for the API

Received Email on 22nd

Released on
https://tfgm.com/
Every app should solve a problem

Started at BBC 

Missing Trams

beta.tfgm.com

TFGM App

Registered for the API

Received Email on 22nd

Released on
Tram Times
• Add your favourite stops to the app to access the tram times quickly.

• Departure message board for the latest information on your tram line.

• Quickly access your first stop using the Today Widget.

• Quickly access your saved stops using 3D Touch.

• View the latest tram times for your saved stops on your Apple Watch.

Data is realtime and updated live direct from Metrolink.
1. Ideas
• Lots of half started projects
• Set yourself a month -
• 2 weeks of development days
• 40 hours of development
• Get it into the hands of users early
yes this is another 10 tips to the app store talk

considerations when working at a short time scale

development tools

Whose Xcode project looks like this

set a month for your idea to mvp

get it into the hands of users 

some tips on getting to the app store
2. Maintainability
Lots of different app architectures, MVC, MVVM-C

SRP 

The Single Responsibility Principle (SRP) states that each software module should have one and only one reason to change.

http://blog.cleancoder.com/uncle-bob/2016/01/04/ALittleArchitecture.html

Layers

http://alistair.cockburn.us/Hexagonal+architecture
Coordinators
http://khanlou.com/2015/10/coordinators-redux/
Each view controller is now isolated.

View controllers are now reusable.

Every task and sub-task in your app now has a dedicated way of being encapsulated.

Coordinators separate display-binding from side effects.

Coordinators are objects fully in your control.
Refactor
3. Frameworks
Adapters
https://www.raywenderlich.com/126365/ios-frameworks-tutorial
Wrap your dependencies in frameworks

Hexaganol

Protection from change

Tram api changed 

I want to use something other than user defaults

Judgement call on system frameworks

Easier for re-use
4. App Extensions
Today Extension

Imports Station request framework, feature without much effort

Home screen quick actions

3D Touch

Messages

Spotlight Index
5. Testing
• Don’t
• Spend time writing features not tests
• Now I have some users I will spend 2
months writing tests to stop regression
• On any other project TDD :-)
• http://codingdojo.org/kata/Bowling/
Don’t test

spend time writing features not tests

will probably spend the 2 months after testing
6. WatchKit
• WatchKit very different to UIKit
• Different container, User Defaults
• OS Changes
• Need to create a watch specific framework
Took a long time

WatchKit different to UIKit

Complications
7. Tooling
- Limit dependencies
- 10 minute commits
- Cocoapods
- Icons 8
- CircleCI
- http://appreviewtimes.com/ https://icons8.com/
Github - 10 minute commits, Bitbucket

Circle CI

Limit dependencies

Don’t use AFNetworking, URLSession, Decodable

https://github.com/AFNetworking/AFNetworking

Cocoapods over spm or carthage
https://firebase.google.com/docs/ios/setup?authuser=0
- Firebase
- Crashlytics
7. Tooling
All much of a muchness

Big push on analytics

No deployment yet

Nice features for push notifications
7. Tooling
https://fastlane.tools/
- Snapshot
- frameit
- Deliver
Fastlane build automation tools

Snapshot -> Demo

Deliver

bump version numbers
8. Testers
• Annoy people at work
• Use Hockey or TestFlight
9. Accessibility
- VoiceOver Support
- Settings -> General -> Accessibility -> VoiceOver
- Accessibility Inspector
https://www.raywenderlich.com/142058/ios-accessibility-tutorial
10. Share Your Ideas
https://github.com/Winnie90/TFGMLive
Tram Times
@CWinstanley90
https://goo.gl/XLnCTe
• Add your favourite stops to the app to access the tram times quickly.

• Departure message board for the latest information on your tram line.

• Quickly access your first stop using the Today Widget.

• Quickly access your saved stops using 3D Touch.

• View the latest tram times for your saved stops on your Apple Watch.

Data is realtime and updated live direct from Metrolink.

More Related Content

What's hot

Automating Hybrid Applications with Appium
Automating Hybrid Applications with AppiumAutomating Hybrid Applications with Appium
Automating Hybrid Applications with Appium
Sauce Labs
 

What's hot (20)

Digital Success Stack for DCBKK 2018
Digital Success Stack for DCBKK 2018Digital Success Stack for DCBKK 2018
Digital Success Stack for DCBKK 2018
 
Testing on Mobile Devices with Location Services
Testing on Mobile Devices with Location ServicesTesting on Mobile Devices with Location Services
Testing on Mobile Devices with Location Services
 
What's New in JHipsterLand - DevNexus 2017
What's New in JHipsterLand - DevNexus 2017What's New in JHipsterLand - DevNexus 2017
What's New in JHipsterLand - DevNexus 2017
 
Introduction cypress
Introduction cypressIntroduction cypress
Introduction cypress
 
Are you ready to adopt GraphQL?
Are you ready to adopt GraphQL?Are you ready to adopt GraphQL?
Are you ready to adopt GraphQL?
 
Azure slots for app deployment the continuous delivery way
Azure slots for app deployment the continuous delivery wayAzure slots for app deployment the continuous delivery way
Azure slots for app deployment the continuous delivery way
 
BuildStatus - PiterJS #1
BuildStatus - PiterJS #1BuildStatus - PiterJS #1
BuildStatus - PiterJS #1
 
Performance testing for developers
Performance testing for developersPerformance testing for developers
Performance testing for developers
 
Finland Azure User Group #8 DevOps Mobile Client Releases
Finland Azure User Group #8 DevOps Mobile Client Releases Finland Azure User Group #8 DevOps Mobile Client Releases
Finland Azure User Group #8 DevOps Mobile Client Releases
 
PWA - Progressive WordPress Apps
PWA - Progressive WordPress AppsPWA - Progressive WordPress Apps
PWA - Progressive WordPress Apps
 
Mobile Automation Using Appium - vodQA Bangalore 2015
Mobile Automation Using Appium - vodQA Bangalore 2015Mobile Automation Using Appium - vodQA Bangalore 2015
Mobile Automation Using Appium - vodQA Bangalore 2015
 
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017
 
Improving Android app testing with Appium and Sauce Labs
Improving Android app testing with Appium and Sauce LabsImproving Android app testing with Appium and Sauce Labs
Improving Android app testing with Appium and Sauce Labs
 
Selenium Conference 2015 - Mobile Selenium Grid Setup
Selenium Conference 2015 - Mobile Selenium Grid SetupSelenium Conference 2015 - Mobile Selenium Grid Setup
Selenium Conference 2015 - Mobile Selenium Grid Setup
 
Automating Hybrid Applications with Appium
Automating Hybrid Applications with AppiumAutomating Hybrid Applications with Appium
Automating Hybrid Applications with Appium
 
Java and services code lab spring boot and spring data using mongo db
Java and services code lab spring boot and spring data using mongo dbJava and services code lab spring boot and spring data using mongo db
Java and services code lab spring boot and spring data using mongo db
 
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java ApplicationTrust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
 
How to build a Lean SaaS App with WordPress Multisite [WordCamp Europe 2019]
How to build a Lean SaaS App with WordPress Multisite [WordCamp Europe 2019] How to build a Lean SaaS App with WordPress Multisite [WordCamp Europe 2019]
How to build a Lean SaaS App with WordPress Multisite [WordCamp Europe 2019]
 
Cloud Native Progressive Web Applications - Denver JUG 2016
Cloud Native Progressive Web Applications - Denver JUG 2016Cloud Native Progressive Web Applications - Denver JUG 2016
Cloud Native Progressive Web Applications - Denver JUG 2016
 
Google Website Optimizer API integration with Motivity
Google Website Optimizer API integration with MotivityGoogle Website Optimizer API integration with Motivity
Google Website Optimizer API integration with Motivity
 

Similar to One Month to the App Store

Continuous delivery mobile application development
Continuous delivery mobile application developmentContinuous delivery mobile application development
Continuous delivery mobile application development
Thoughtworks
 
Option 2015- Getting Started with Optimizely for Mobile
Option 2015- Getting Started with Optimizely for MobileOption 2015- Getting Started with Optimizely for Mobile
Option 2015- Getting Started with Optimizely for Mobile
Optimizely
 

Similar to One Month to the App Store (20)

To the App Store in One Month
To the App Store in One MonthTo the App Store in One Month
To the App Store in One Month
 
Google IO 2017 Recap
Google IO 2017 RecapGoogle IO 2017 Recap
Google IO 2017 Recap
 
Everything XControls
Everything XControlsEverything XControls
Everything XControls
 
Ship code like a keptn
Ship code like a keptnShip code like a keptn
Ship code like a keptn
 
Develop Windows 8 & Windows Phone apps using crucial Google APIs
Develop Windows 8 & Windows Phone apps using crucial Google APIsDevelop Windows 8 & Windows Phone apps using crucial Google APIs
Develop Windows 8 & Windows Phone apps using crucial Google APIs
 
Mobile Apps CI
Mobile Apps CIMobile Apps CI
Mobile Apps CI
 
Continuous delivery mobile application development
Continuous delivery mobile application developmentContinuous delivery mobile application development
Continuous delivery mobile application development
 
How to boost your workflow, or git rebase for designers
How to boost your workflow, or git rebase for designersHow to boost your workflow, or git rebase for designers
How to boost your workflow, or git rebase for designers
 
GSOC 2016 mifos
GSOC 2016 mifosGSOC 2016 mifos
GSOC 2016 mifos
 
Identifying and solving enterprise problems
Identifying and solving enterprise problems  Identifying and solving enterprise problems
Identifying and solving enterprise problems
 
Development Processes and Tooling
Development Processes and ToolingDevelopment Processes and Tooling
Development Processes and Tooling
 
Option 2015- Getting Started with Optimizely for Mobile
Option 2015- Getting Started with Optimizely for MobileOption 2015- Getting Started with Optimizely for Mobile
Option 2015- Getting Started with Optimizely for Mobile
 
Draftkings: Launching w/ Confidence at Scale, FutureStack17 NYC
Draftkings: Launching w/ Confidence at Scale, FutureStack17 NYCDraftkings: Launching w/ Confidence at Scale, FutureStack17 NYC
Draftkings: Launching w/ Confidence at Scale, FutureStack17 NYC
 
Rapid Application Development with MEAN Stack
Rapid Application Development with MEAN StackRapid Application Development with MEAN Stack
Rapid Application Development with MEAN Stack
 
How to build a SaaS solution in 60 days
How to build a SaaS solution in 60 daysHow to build a SaaS solution in 60 days
How to build a SaaS solution in 60 days
 
Mobile apps that win
Mobile apps that winMobile apps that win
Mobile apps that win
 
Sam segal resume
Sam segal resumeSam segal resume
Sam segal resume
 
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
 
Hassle-Free Continuous Integration with Real Device Testing
Hassle-Free Continuous Integration with Real Device TestingHassle-Free Continuous Integration with Real Device Testing
Hassle-Free Continuous Integration with Real Device Testing
 
txtWeb : Imagine the Internet and more on SMS
txtWeb : Imagine the Internet and more on SMStxtWeb : Imagine the Internet and more on SMS
txtWeb : Imagine the Internet and more on SMS
 

Recently uploaded

CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
anilsa9823
 
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
anilsa9823
 

Recently uploaded (7)

CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
 
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
 
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
 
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
 
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
 
9892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x79892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x7
 
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
 

One Month to the App Store

  • 1. One month to the app store Christopher Winstanley @CWinstanley90
  • 2. Problem Every app should solve a problem Started at BBC Missing Trams beta.tfgm.com TFGM App Registered for the API Received Email on 22nd Released on
  • 3. https://tfgm.com/ Every app should solve a problem Started at BBC Missing Trams beta.tfgm.com TFGM App Registered for the API Received Email on 22nd Released on
  • 4. Tram Times • Add your favourite stops to the app to access the tram times quickly. • Departure message board for the latest information on your tram line. • Quickly access your first stop using the Today Widget. • Quickly access your saved stops using 3D Touch. • View the latest tram times for your saved stops on your Apple Watch. Data is realtime and updated live direct from Metrolink.
  • 5. 1. Ideas • Lots of half started projects • Set yourself a month - • 2 weeks of development days • 40 hours of development • Get it into the hands of users early yes this is another 10 tips to the app store talk considerations when working at a short time scale development tools Whose Xcode project looks like this set a month for your idea to mvp get it into the hands of users some tips on getting to the app store
  • 6. 2. Maintainability Lots of different app architectures, MVC, MVVM-C SRP The Single Responsibility Principle (SRP) states that each software module should have one and only one reason to change. http://blog.cleancoder.com/uncle-bob/2016/01/04/ALittleArchitecture.html Layers http://alistair.cockburn.us/Hexagonal+architecture
  • 7. Coordinators http://khanlou.com/2015/10/coordinators-redux/ Each view controller is now isolated. View controllers are now reusable. Every task and sub-task in your app now has a dedicated way of being encapsulated. Coordinators separate display-binding from side effects. Coordinators are objects fully in your control.
  • 9. 3. Frameworks Adapters https://www.raywenderlich.com/126365/ios-frameworks-tutorial Wrap your dependencies in frameworks Hexaganol Protection from change Tram api changed I want to use something other than user defaults Judgement call on system frameworks Easier for re-use
  • 10. 4. App Extensions Today Extension Imports Station request framework, feature without much effort Home screen quick actions 3D Touch Messages Spotlight Index
  • 11. 5. Testing • Don’t • Spend time writing features not tests • Now I have some users I will spend 2 months writing tests to stop regression • On any other project TDD :-) • http://codingdojo.org/kata/Bowling/ Don’t test spend time writing features not tests will probably spend the 2 months after testing
  • 12. 6. WatchKit • WatchKit very different to UIKit • Different container, User Defaults • OS Changes • Need to create a watch specific framework Took a long time WatchKit different to UIKit Complications
  • 13. 7. Tooling - Limit dependencies - 10 minute commits - Cocoapods - Icons 8 - CircleCI - http://appreviewtimes.com/ https://icons8.com/ Github - 10 minute commits, Bitbucket Circle CI Limit dependencies Don’t use AFNetworking, URLSession, Decodable https://github.com/AFNetworking/AFNetworking Cocoapods over spm or carthage
  • 14. https://firebase.google.com/docs/ios/setup?authuser=0 - Firebase - Crashlytics 7. Tooling All much of a muchness Big push on analytics No deployment yet Nice features for push notifications
  • 15. 7. Tooling https://fastlane.tools/ - Snapshot - frameit - Deliver Fastlane build automation tools Snapshot -> Demo Deliver bump version numbers
  • 16. 8. Testers • Annoy people at work • Use Hockey or TestFlight
  • 17. 9. Accessibility - VoiceOver Support - Settings -> General -> Accessibility -> VoiceOver - Accessibility Inspector https://www.raywenderlich.com/142058/ios-accessibility-tutorial
  • 18. 10. Share Your Ideas https://github.com/Winnie90/TFGMLive
  • 19. Tram Times @CWinstanley90 https://goo.gl/XLnCTe • Add your favourite stops to the app to access the tram times quickly. • Departure message board for the latest information on your tram line. • Quickly access your first stop using the Today Widget. • Quickly access your saved stops using 3D Touch. • View the latest tram times for your saved stops on your Apple Watch. Data is realtime and updated live direct from Metrolink.