SlideShare a Scribd company logo
iOS Development Best
Practices
Tony Collins - Lead iOS developer
Jonathan Winger-Lang - iOS developer
“A bad workman blames his tools”
Before you start coding anything, make sure you
have the right tools available!
IDE……… Xcode
API testing/POST/GET
Postman - Is handy when collaborating across a few developers
as requests can be exported/saved (including header info).
Downside - requires Chrome = Memory Beast
CocoaRestClient - Super lightweight, native

OSX app. Does most things Postman can.

My personal choice.
API testing TCP/HTTP
Charles - Really powerful HTTP proxy that allows you to actually
see the traffic your app is sending/receiving in real time. Possible
to spoof your SSL cert in order to see encrypted traffic. 

Downside - Costs $50 (worth it though)
Wireshark - Allows you to intercept traffic going to/from your app
and analyse the packet contents/HTTP headers etc. Globally
recognised as the number 1 opensource app for this job.

Downside - Requires a fair amount of set up (which can be a little
intimidating)
Automation tools
Automator - Seriously underused/underrated app packaged with
every build of OSX
Great to do batch tasks e.g. Change 100 images to a
specific size
Visually build complex shell scripts and mix in AppleScript or
whatever you need
Fastlane/deliver - Takes the pain out of uploading metadata and
screenshots to iTunes connect
What took days now takes 6 minutes!!
SQLite (Looking at your DB)
SQLPro - Native OSX app. Most stable and reliable I have found. 

Downside - costs $10
SQLiteManager - Browser plug in for FireFox

Downside - lacks quality of dedicated app
Planning
Proper Preparation Prevents Poor Performance
AGILE (Just a few basics)
Create ‘user stories’ from the specification
Be Data driven - Gut feeling will only get you so far!!!!!
Be user driven - What do your users want ?
Be Involved - Don’t be shy, have an opinion, use your knowledge
to advance the idea. Spot flaws NOW, not 1 month down the line.
You will save yourself time, money and a lot of headaches.
Iterate - Check, Do, Check, Change
Time to start coding (nearly)
Get an API spec!
Get the wireframes!!
Get a logic flowchart!!!
Get the designs/assets/brand guidelines!!!!
Research any third party tools!!!!!
Which Design Pattern ?
Whilst analysing the wireframes, look for View Controllers that
have a common theme.
Spot repeating elements - multiple payment options e.g. Linepay,
Alipay, Paypal - can we link them ?
Think long term. This is a project you may have to deal with in 12
months time. Do yourself a favour and make the right decisions
now.
Facade pattern
Keeps the API’s normalised
Hides complexity behind a simple method
Makes it easier to refactor code
Facade - Example
2 API’s which are used when a payment is made - no
matter what the source (PayPal, Linepay etc)
Facade - Example
Hides this complexity
Singleton - Good and Bad
Ask yourself these questions:
“Does the object need to be referenced by multiple other objects at
the same time e.g. needs to be ‘Thread safe’ ?“
“Does the current ‘state’ need to be always up to date when
referenced ?”
“Is there a risk that if a duplicate object is created, the calling object
might be pointing at the wrong object?”
If yes to all of these - USE A SINGLETON!
Category pattern
Very useful for keeping your code DRY
Easy to change a single method than same method
multiple times
Delegate vs Notifications
Use a delegate pattern if it is only a single object that
cares about the event
Use NSNotifications when you need more then one
object to know about the event
Delegates allow you to have more transparent objects
as you can specify @required @optional
NSCoding
Allows custom objects to be persisted and retrieved
later
Can store custom objects in .bin files or to places such
as NSUserDefaults
Daily Coding tips
D.R.Y - Dont Repeat Yourself
The patterns mentioned will naturally force you to be D.R.Y
It will become a natural part of your refactoring
Don’t do magic to achieve D.R.Y
Unit Testing
Try and add unit tests from the beginning of a project. Retrofitting unit
tests can be painful .
Great new UITesting tools in Xcode 7
Daily Coding tips
Comments + Verbose method names
COMMENT YOUR CODE - NO EXCUSES
Saves 1000’s of man hours
Is just common courtesy
Name of method should explain what it does
Add a comment in the .h advising what the class does
Daily Coding tips
Prototype
Great to show stakeholders (Storyboards designed for it)
Can trust implementation without the ‘noise’ of existing code
Can help spot issues earlier
Use continuous integration tools
Apple Bots - preferred as made by Apple although Travis
and Jenkins (free) are good
Daily Coding tips
Final tips…
Keep your project organised
Git - Commit little and often
Dont be an ‘end of the day’ committer
Get into the habit even when working solo
Commit should reflect what was actually done
Do pair programming - Make it 20% of your weekly schedule
Text
ENJOY CODING!!!
Any questions ?
Ad

More Related Content

What's hot (20)

Aspect oriented programming
Aspect oriented programmingAspect oriented programming
Aspect oriented programming
Robert MacLean
 
BDD with SpecFlow and Selenium
BDD with SpecFlow and SeleniumBDD with SpecFlow and Selenium
BDD with SpecFlow and Selenium
Liraz Shay
 
Contributing to open source
Contributing to open sourceContributing to open source
Contributing to open source
Devin Abbott
 
Cypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil Tayar
Cypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil TayarCypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil Tayar
Cypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil Tayar
Applitools
 
Tech Talk Tokyo #2 tetsuya matsuzawa
Tech Talk Tokyo #2 tetsuya matsuzawaTech Talk Tokyo #2 tetsuya matsuzawa
Tech Talk Tokyo #2 tetsuya matsuzawa
Rarejob
 
React Native
React NativeReact Native
React Native
Huqiu Liao
 
When to (use / not use) React Native.
When to (use / not use) React Native.When to (use / not use) React Native.
When to (use / not use) React Native.
Bobby Schultz
 
Алексей Волков "Введение в React Native"
Алексей Волков "Введение в React Native"Алексей Волков "Введение в React Native"
Алексей Волков "Введение в React Native"
Fwdays
 
Google App Engine - Java Style
Google App Engine - Java StyleGoogle App Engine - Java Style
Google App Engine - Java Style
Peter Lind
 
Test driven development v1.0
Test driven development v1.0Test driven development v1.0
Test driven development v1.0
Ganesh Kondal
 
Cypress workshop for JSFoo 2019
Cypress  workshop for JSFoo 2019Cypress  workshop for JSFoo 2019
Cypress workshop for JSFoo 2019
Biswajit Pattanayak
 
Angle Forward with TypeScript
Angle Forward with TypeScriptAngle Forward with TypeScript
Angle Forward with TypeScript
Jeremy Likness
 
Angular from a Different Angle
Angular from a Different AngleAngular from a Different Angle
Angular from a Different Angle
Jeremy Likness
 
06 integrating extra features and looking forward
06   integrating extra features and looking forward06   integrating extra features and looking forward
06 integrating extra features and looking forward
Марина Босова
 
Nativescript
NativescriptNativescript
Nativescript
Software Infrastructure
 
DSL, Page Object and WebDriver – the path to reliable functional tests.pptx
DSL, Page Object and WebDriver – the path to reliable functional tests.pptxDSL, Page Object and WebDriver – the path to reliable functional tests.pptx
DSL, Page Object and WebDriver – the path to reliable functional tests.pptx
Mikalai Alimenkou
 
Top java script frameworks ppt
Top java script frameworks pptTop java script frameworks ppt
Top java script frameworks ppt
Omkarsoft Bangalore
 
Intro to react native
Intro to react nativeIntro to react native
Intro to react native
ModusJesus
 
Intro to Service Worker API and its use cases
Intro to Service Worker API and its use casesIntro to Service Worker API and its use cases
Intro to Service Worker API and its use cases
satejsahu
 
An iOS Developer's Perspective on React Native
An iOS Developer's Perspective on React NativeAn iOS Developer's Perspective on React Native
An iOS Developer's Perspective on React Native
Aleksandras Smirnovas
 
Aspect oriented programming
Aspect oriented programmingAspect oriented programming
Aspect oriented programming
Robert MacLean
 
BDD with SpecFlow and Selenium
BDD with SpecFlow and SeleniumBDD with SpecFlow and Selenium
BDD with SpecFlow and Selenium
Liraz Shay
 
Contributing to open source
Contributing to open sourceContributing to open source
Contributing to open source
Devin Abbott
 
Cypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil Tayar
Cypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil TayarCypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil Tayar
Cypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil Tayar
Applitools
 
Tech Talk Tokyo #2 tetsuya matsuzawa
Tech Talk Tokyo #2 tetsuya matsuzawaTech Talk Tokyo #2 tetsuya matsuzawa
Tech Talk Tokyo #2 tetsuya matsuzawa
Rarejob
 
When to (use / not use) React Native.
When to (use / not use) React Native.When to (use / not use) React Native.
When to (use / not use) React Native.
Bobby Schultz
 
Алексей Волков "Введение в React Native"
Алексей Волков "Введение в React Native"Алексей Волков "Введение в React Native"
Алексей Волков "Введение в React Native"
Fwdays
 
Google App Engine - Java Style
Google App Engine - Java StyleGoogle App Engine - Java Style
Google App Engine - Java Style
Peter Lind
 
Test driven development v1.0
Test driven development v1.0Test driven development v1.0
Test driven development v1.0
Ganesh Kondal
 
Angle Forward with TypeScript
Angle Forward with TypeScriptAngle Forward with TypeScript
Angle Forward with TypeScript
Jeremy Likness
 
Angular from a Different Angle
Angular from a Different AngleAngular from a Different Angle
Angular from a Different Angle
Jeremy Likness
 
06 integrating extra features and looking forward
06   integrating extra features and looking forward06   integrating extra features and looking forward
06 integrating extra features and looking forward
Марина Босова
 
DSL, Page Object and WebDriver – the path to reliable functional tests.pptx
DSL, Page Object and WebDriver – the path to reliable functional tests.pptxDSL, Page Object and WebDriver – the path to reliable functional tests.pptx
DSL, Page Object and WebDriver – the path to reliable functional tests.pptx
Mikalai Alimenkou
 
Intro to react native
Intro to react nativeIntro to react native
Intro to react native
ModusJesus
 
Intro to Service Worker API and its use cases
Intro to Service Worker API and its use casesIntro to Service Worker API and its use cases
Intro to Service Worker API and its use cases
satejsahu
 
An iOS Developer's Perspective on React Native
An iOS Developer's Perspective on React NativeAn iOS Developer's Perspective on React Native
An iOS Developer's Perspective on React Native
Aleksandras Smirnovas
 

Viewers also liked (8)

Business_Summary_Alive_Automations (1)
Business_Summary_Alive_Automations (1)Business_Summary_Alive_Automations (1)
Business_Summary_Alive_Automations (1)
Kushagra Choudhary
 
Sophie Angus Unit 35 LO2
Sophie Angus Unit 35 LO2Sophie Angus Unit 35 LO2
Sophie Angus Unit 35 LO2
sangus7
 
Webinář: Co nového přináší verze 9 jedničky v zálohování Veeam Backup & Repli...
Webinář: Co nového přináší verze 9 jedničky v zálohování Veeam Backup & Repli...Webinář: Co nového přináší verze 9 jedničky v zálohování Veeam Backup & Repli...
Webinář: Co nového přináší verze 9 jedničky v zálohování Veeam Backup & Repli...
Jaroslav Prodelal
 
Presentazione Tambeach
Presentazione Tambeach Presentazione Tambeach
Presentazione Tambeach
Nada Vallone
 
Creating a Culture of Innovation in Your Library and Community (SWKLS)
Creating a Culture of Innovation in Your Library and Community (SWKLS)Creating a Culture of Innovation in Your Library and Community (SWKLS)
Creating a Culture of Innovation in Your Library and Community (SWKLS)
Heather Braum
 
Frankl Viktor Logoterapia Teorias de la personalidad
Frankl Viktor Logoterapia Teorias de la personalidadFrankl Viktor Logoterapia Teorias de la personalidad
Frankl Viktor Logoterapia Teorias de la personalidad
Rene Higuera
 
Alternative currencies
Alternative currenciesAlternative currencies
Alternative currencies
Kaynat Khan
 
Metsätilaston palvelut elinkeinoelämän näkökulmasta - Simo jaakkola, Koneyrit...
Metsätilaston palvelut elinkeinoelämän näkökulmasta - Simo jaakkola, Koneyrit...Metsätilaston palvelut elinkeinoelämän näkökulmasta - Simo jaakkola, Koneyrit...
Metsätilaston palvelut elinkeinoelämän näkökulmasta - Simo jaakkola, Koneyrit...
Natural Resources Institute Finland (Luke) / Luonnonvarakeskus (Luke)
 
Business_Summary_Alive_Automations (1)
Business_Summary_Alive_Automations (1)Business_Summary_Alive_Automations (1)
Business_Summary_Alive_Automations (1)
Kushagra Choudhary
 
Sophie Angus Unit 35 LO2
Sophie Angus Unit 35 LO2Sophie Angus Unit 35 LO2
Sophie Angus Unit 35 LO2
sangus7
 
Webinář: Co nového přináší verze 9 jedničky v zálohování Veeam Backup & Repli...
Webinář: Co nového přináší verze 9 jedničky v zálohování Veeam Backup & Repli...Webinář: Co nového přináší verze 9 jedničky v zálohování Veeam Backup & Repli...
Webinář: Co nového přináší verze 9 jedničky v zálohování Veeam Backup & Repli...
Jaroslav Prodelal
 
Presentazione Tambeach
Presentazione Tambeach Presentazione Tambeach
Presentazione Tambeach
Nada Vallone
 
Creating a Culture of Innovation in Your Library and Community (SWKLS)
Creating a Culture of Innovation in Your Library and Community (SWKLS)Creating a Culture of Innovation in Your Library and Community (SWKLS)
Creating a Culture of Innovation in Your Library and Community (SWKLS)
Heather Braum
 
Frankl Viktor Logoterapia Teorias de la personalidad
Frankl Viktor Logoterapia Teorias de la personalidadFrankl Viktor Logoterapia Teorias de la personalidad
Frankl Viktor Logoterapia Teorias de la personalidad
Rene Higuera
 
Alternative currencies
Alternative currenciesAlternative currencies
Alternative currencies
Kaynat Khan
 
Ad

Similar to iOS development best practices (20)

Computer software specialists wikki verma
Computer software specialists   wikki vermaComputer software specialists   wikki verma
Computer software specialists wikki verma
Livingston Technology Solution
 
Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patterns
Steven Smith
 
iPhone App from concept to product
iPhone App from concept to productiPhone App from concept to product
iPhone App from concept to product
joeysim
 
System design for Web Application
System design for Web ApplicationSystem design for Web Application
System design for Web Application
Michael Choi
 
Architecting a Large Software Project - Lessons Learned
Architecting a Large Software Project - Lessons LearnedArchitecting a Large Software Project - Lessons Learned
Architecting a Large Software Project - Lessons Learned
João Pedro Martins
 
Publishing strategies for API documentation
Publishing strategies for API documentationPublishing strategies for API documentation
Publishing strategies for API documentation
Tom Johnson
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learned
Wojciech Koszek
 
Debugging
DebuggingDebugging
Debugging
Olivier Teytaud
 
30 days or less: New Features to Production
30 days or less: New Features to Production30 days or less: New Features to Production
30 days or less: New Features to Production
Karthik Gaekwad
 
DocOps: Documentation at the Speed of Agile
DocOps: Documentation at the Speed of AgileDocOps: Documentation at the Speed of Agile
DocOps: Documentation at the Speed of Agile
Mary Connor
 
564 Class Notes July 27, 2010
564 Class Notes July 27, 2010564 Class Notes July 27, 2010
564 Class Notes July 27, 2010
Stephanie Magleby
 
Automation and machine learning in the enterprise
Automation and machine learning in the enterpriseAutomation and machine learning in the enterprise
Automation and machine learning in the enterprise
alphydan
 
Workshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdfWorkshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdf
TobiasGoeschel
 
Learning to be IDE Free (PrDC 2015)
Learning to be IDE Free (PrDC 2015)Learning to be IDE Free (PrDC 2015)
Learning to be IDE Free (PrDC 2015)
David Wesst
 
PHP Mega Meetup, Sep, 2020, Anti patterns in php
PHP Mega Meetup, Sep, 2020, Anti patterns in phpPHP Mega Meetup, Sep, 2020, Anti patterns in php
PHP Mega Meetup, Sep, 2020, Anti patterns in php
Ahmed Abdou
 
The Final Frontier
The Final FrontierThe Final Frontier
The Final Frontier
jClarity
 
Learning Web Development with Ruby on Rails Launch
Learning Web Development with Ruby on Rails LaunchLearning Web Development with Ruby on Rails Launch
Learning Web Development with Ruby on Rails Launch
Thiam Hock Ng
 
GoF Design patterns I: Introduction + Structural Patterns
GoF Design patterns I:   Introduction + Structural PatternsGoF Design patterns I:   Introduction + Structural Patterns
GoF Design patterns I: Introduction + Structural Patterns
Sameh Deabes
 
Managing Phone Dev Projects
Managing Phone Dev ProjectsManaging Phone Dev Projects
Managing Phone Dev Projects
John McKerrell
 
The "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsThe "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/Ops
Erik Osterman
 
Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patterns
Steven Smith
 
iPhone App from concept to product
iPhone App from concept to productiPhone App from concept to product
iPhone App from concept to product
joeysim
 
System design for Web Application
System design for Web ApplicationSystem design for Web Application
System design for Web Application
Michael Choi
 
Architecting a Large Software Project - Lessons Learned
Architecting a Large Software Project - Lessons LearnedArchitecting a Large Software Project - Lessons Learned
Architecting a Large Software Project - Lessons Learned
João Pedro Martins
 
Publishing strategies for API documentation
Publishing strategies for API documentationPublishing strategies for API documentation
Publishing strategies for API documentation
Tom Johnson
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learned
Wojciech Koszek
 
30 days or less: New Features to Production
30 days or less: New Features to Production30 days or less: New Features to Production
30 days or less: New Features to Production
Karthik Gaekwad
 
DocOps: Documentation at the Speed of Agile
DocOps: Documentation at the Speed of AgileDocOps: Documentation at the Speed of Agile
DocOps: Documentation at the Speed of Agile
Mary Connor
 
564 Class Notes July 27, 2010
564 Class Notes July 27, 2010564 Class Notes July 27, 2010
564 Class Notes July 27, 2010
Stephanie Magleby
 
Automation and machine learning in the enterprise
Automation and machine learning in the enterpriseAutomation and machine learning in the enterprise
Automation and machine learning in the enterprise
alphydan
 
Workshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdfWorkshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdf
TobiasGoeschel
 
Learning to be IDE Free (PrDC 2015)
Learning to be IDE Free (PrDC 2015)Learning to be IDE Free (PrDC 2015)
Learning to be IDE Free (PrDC 2015)
David Wesst
 
PHP Mega Meetup, Sep, 2020, Anti patterns in php
PHP Mega Meetup, Sep, 2020, Anti patterns in phpPHP Mega Meetup, Sep, 2020, Anti patterns in php
PHP Mega Meetup, Sep, 2020, Anti patterns in php
Ahmed Abdou
 
The Final Frontier
The Final FrontierThe Final Frontier
The Final Frontier
jClarity
 
Learning Web Development with Ruby on Rails Launch
Learning Web Development with Ruby on Rails LaunchLearning Web Development with Ruby on Rails Launch
Learning Web Development with Ruby on Rails Launch
Thiam Hock Ng
 
GoF Design patterns I: Introduction + Structural Patterns
GoF Design patterns I:   Introduction + Structural PatternsGoF Design patterns I:   Introduction + Structural Patterns
GoF Design patterns I: Introduction + Structural Patterns
Sameh Deabes
 
Managing Phone Dev Projects
Managing Phone Dev ProjectsManaging Phone Dev Projects
Managing Phone Dev Projects
John McKerrell
 
The "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsThe "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/Ops
Erik Osterman
 
Ad

More from Michal Juhas (15)

Tech Mind Maps - Booklet Preview
Tech Mind Maps - Booklet PreviewTech Mind Maps - Booklet Preview
Tech Mind Maps - Booklet Preview
Michal Juhas
 
IT Recruiter's Mind Maps - Booklet Preview
IT Recruiter's Mind Maps - Booklet PreviewIT Recruiter's Mind Maps - Booklet Preview
IT Recruiter's Mind Maps - Booklet Preview
Michal Juhas
 
Three Secret Ingredients To Recruiting Software Developers
Three Secret Ingredients To Recruiting Software DevelopersThree Secret Ingredients To Recruiting Software Developers
Three Secret Ingredients To Recruiting Software Developers
Michal Juhas
 
What i wish i knew in my 20's
What i wish i knew in my 20'sWhat i wish i knew in my 20's
What i wish i knew in my 20's
Michal Juhas
 
Adaptive Upskill As The Future Of The Workforce
Adaptive Upskill As The Future Of The WorkforceAdaptive Upskill As The Future Of The Workforce
Adaptive Upskill As The Future Of The Workforce
Michal Juhas
 
Introducing PlanetQuest on the TechsSmmit 2018
Introducing PlanetQuest on the TechsSmmit 2018Introducing PlanetQuest on the TechsSmmit 2018
Introducing PlanetQuest on the TechsSmmit 2018
Michal Juhas
 
Metasearch Outlook 2017
Metasearch Outlook 2017Metasearch Outlook 2017
Metasearch Outlook 2017
Michal Juhas
 
Subscription Economy: How to shift mindset in 2017 and adapt to changing cons...
Subscription Economy: How to shift mindset in 2017 and adapt to changing cons...Subscription Economy: How to shift mindset in 2017 and adapt to changing cons...
Subscription Economy: How to shift mindset in 2017 and adapt to changing cons...
Michal Juhas
 
How do we test nodejs apps?
How do we test nodejs apps?How do we test nodejs apps?
How do we test nodejs apps?
Michal Juhas
 
A walkthrough of JavaScript ES6 features
A walkthrough of JavaScript ES6 featuresA walkthrough of JavaScript ES6 features
A walkthrough of JavaScript ES6 features
Michal Juhas
 
Becoming Data Driven
Becoming Data DrivenBecoming Data Driven
Becoming Data Driven
Michal Juhas
 
Productive Android developers (Meetup slides)
Productive Android developers (Meetup slides)Productive Android developers (Meetup slides)
Productive Android developers (Meetup slides)
Michal Juhas
 
Building Scalable Micro-services with Nodejs
Building Scalable Micro-services with NodejsBuilding Scalable Micro-services with Nodejs
Building Scalable Micro-services with Nodejs
Michal Juhas
 
Lessons Learnt from Backend Systems Development
Lessons Learnt from Backend Systems DevelopmentLessons Learnt from Backend Systems Development
Lessons Learnt from Backend Systems Development
Michal Juhas
 
HotelQuickly Product & Engineering
HotelQuickly Product & EngineeringHotelQuickly Product & Engineering
HotelQuickly Product & Engineering
Michal Juhas
 
Tech Mind Maps - Booklet Preview
Tech Mind Maps - Booklet PreviewTech Mind Maps - Booklet Preview
Tech Mind Maps - Booklet Preview
Michal Juhas
 
IT Recruiter's Mind Maps - Booklet Preview
IT Recruiter's Mind Maps - Booklet PreviewIT Recruiter's Mind Maps - Booklet Preview
IT Recruiter's Mind Maps - Booklet Preview
Michal Juhas
 
Three Secret Ingredients To Recruiting Software Developers
Three Secret Ingredients To Recruiting Software DevelopersThree Secret Ingredients To Recruiting Software Developers
Three Secret Ingredients To Recruiting Software Developers
Michal Juhas
 
What i wish i knew in my 20's
What i wish i knew in my 20'sWhat i wish i knew in my 20's
What i wish i knew in my 20's
Michal Juhas
 
Adaptive Upskill As The Future Of The Workforce
Adaptive Upskill As The Future Of The WorkforceAdaptive Upskill As The Future Of The Workforce
Adaptive Upskill As The Future Of The Workforce
Michal Juhas
 
Introducing PlanetQuest on the TechsSmmit 2018
Introducing PlanetQuest on the TechsSmmit 2018Introducing PlanetQuest on the TechsSmmit 2018
Introducing PlanetQuest on the TechsSmmit 2018
Michal Juhas
 
Metasearch Outlook 2017
Metasearch Outlook 2017Metasearch Outlook 2017
Metasearch Outlook 2017
Michal Juhas
 
Subscription Economy: How to shift mindset in 2017 and adapt to changing cons...
Subscription Economy: How to shift mindset in 2017 and adapt to changing cons...Subscription Economy: How to shift mindset in 2017 and adapt to changing cons...
Subscription Economy: How to shift mindset in 2017 and adapt to changing cons...
Michal Juhas
 
How do we test nodejs apps?
How do we test nodejs apps?How do we test nodejs apps?
How do we test nodejs apps?
Michal Juhas
 
A walkthrough of JavaScript ES6 features
A walkthrough of JavaScript ES6 featuresA walkthrough of JavaScript ES6 features
A walkthrough of JavaScript ES6 features
Michal Juhas
 
Becoming Data Driven
Becoming Data DrivenBecoming Data Driven
Becoming Data Driven
Michal Juhas
 
Productive Android developers (Meetup slides)
Productive Android developers (Meetup slides)Productive Android developers (Meetup slides)
Productive Android developers (Meetup slides)
Michal Juhas
 
Building Scalable Micro-services with Nodejs
Building Scalable Micro-services with NodejsBuilding Scalable Micro-services with Nodejs
Building Scalable Micro-services with Nodejs
Michal Juhas
 
Lessons Learnt from Backend Systems Development
Lessons Learnt from Backend Systems DevelopmentLessons Learnt from Backend Systems Development
Lessons Learnt from Backend Systems Development
Michal Juhas
 
HotelQuickly Product & Engineering
HotelQuickly Product & EngineeringHotelQuickly Product & Engineering
HotelQuickly Product & Engineering
Michal Juhas
 

Recently uploaded (20)

Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 

iOS development best practices

  • 1. iOS Development Best Practices Tony Collins - Lead iOS developer Jonathan Winger-Lang - iOS developer
  • 2. “A bad workman blames his tools” Before you start coding anything, make sure you have the right tools available!
  • 4. API testing/POST/GET Postman - Is handy when collaborating across a few developers as requests can be exported/saved (including header info). Downside - requires Chrome = Memory Beast CocoaRestClient - Super lightweight, native
 OSX app. Does most things Postman can.
 My personal choice.
  • 5. API testing TCP/HTTP Charles - Really powerful HTTP proxy that allows you to actually see the traffic your app is sending/receiving in real time. Possible to spoof your SSL cert in order to see encrypted traffic. 
 Downside - Costs $50 (worth it though) Wireshark - Allows you to intercept traffic going to/from your app and analyse the packet contents/HTTP headers etc. Globally recognised as the number 1 opensource app for this job.
 Downside - Requires a fair amount of set up (which can be a little intimidating)
  • 6. Automation tools Automator - Seriously underused/underrated app packaged with every build of OSX Great to do batch tasks e.g. Change 100 images to a specific size Visually build complex shell scripts and mix in AppleScript or whatever you need Fastlane/deliver - Takes the pain out of uploading metadata and screenshots to iTunes connect What took days now takes 6 minutes!!
  • 7. SQLite (Looking at your DB) SQLPro - Native OSX app. Most stable and reliable I have found. 
 Downside - costs $10 SQLiteManager - Browser plug in for FireFox
 Downside - lacks quality of dedicated app
  • 9. AGILE (Just a few basics) Create ‘user stories’ from the specification Be Data driven - Gut feeling will only get you so far!!!!! Be user driven - What do your users want ? Be Involved - Don’t be shy, have an opinion, use your knowledge to advance the idea. Spot flaws NOW, not 1 month down the line. You will save yourself time, money and a lot of headaches. Iterate - Check, Do, Check, Change
  • 10. Time to start coding (nearly) Get an API spec! Get the wireframes!! Get a logic flowchart!!! Get the designs/assets/brand guidelines!!!! Research any third party tools!!!!!
  • 11. Which Design Pattern ? Whilst analysing the wireframes, look for View Controllers that have a common theme. Spot repeating elements - multiple payment options e.g. Linepay, Alipay, Paypal - can we link them ? Think long term. This is a project you may have to deal with in 12 months time. Do yourself a favour and make the right decisions now.
  • 12. Facade pattern Keeps the API’s normalised Hides complexity behind a simple method Makes it easier to refactor code
  • 13. Facade - Example 2 API’s which are used when a payment is made - no matter what the source (PayPal, Linepay etc)
  • 14. Facade - Example Hides this complexity
  • 15. Singleton - Good and Bad Ask yourself these questions: “Does the object need to be referenced by multiple other objects at the same time e.g. needs to be ‘Thread safe’ ?“ “Does the current ‘state’ need to be always up to date when referenced ?” “Is there a risk that if a duplicate object is created, the calling object might be pointing at the wrong object?” If yes to all of these - USE A SINGLETON!
  • 16. Category pattern Very useful for keeping your code DRY Easy to change a single method than same method multiple times
  • 17. Delegate vs Notifications Use a delegate pattern if it is only a single object that cares about the event Use NSNotifications when you need more then one object to know about the event Delegates allow you to have more transparent objects as you can specify @required @optional
  • 18. NSCoding Allows custom objects to be persisted and retrieved later Can store custom objects in .bin files or to places such as NSUserDefaults
  • 19. Daily Coding tips D.R.Y - Dont Repeat Yourself The patterns mentioned will naturally force you to be D.R.Y It will become a natural part of your refactoring Don’t do magic to achieve D.R.Y Unit Testing Try and add unit tests from the beginning of a project. Retrofitting unit tests can be painful . Great new UITesting tools in Xcode 7
  • 20. Daily Coding tips Comments + Verbose method names COMMENT YOUR CODE - NO EXCUSES Saves 1000’s of man hours Is just common courtesy Name of method should explain what it does Add a comment in the .h advising what the class does
  • 21. Daily Coding tips Prototype Great to show stakeholders (Storyboards designed for it) Can trust implementation without the ‘noise’ of existing code Can help spot issues earlier Use continuous integration tools Apple Bots - preferred as made by Apple although Travis and Jenkins (free) are good
  • 22. Daily Coding tips Final tips… Keep your project organised Git - Commit little and often Dont be an ‘end of the day’ committer Get into the habit even when working solo Commit should reflect what was actually done Do pair programming - Make it 20% of your weekly schedule