SlideShare a Scribd company logo
1 of 39
Becoming a Mac/iOS
Developer
Robert Brown
@robby_brown
So You Want to be a Mac/
iOS Developer?

What to expect:
  This presentation contains everything I wish I knew
  two years ago
  I will focus on Mac and iOS development, but the
  ideas apply to other specialties
So You Want to be a Mac/
iOS Developer?

What not to expect:
  This is not an introduction to Objective-C, Xcode, or
  any other tools.
Beginner
Find a Mentor


Find one to three people who you can ask questions
When you hit a problem, spend an hour trying to figure
it out on your own
If you can’t solve it after an hour, ask your mentor
Find a Good Book

Mac/iOS:
 Objective-C Programming: The Big Nerd Ranch
 Guide
 Beginning iOS 5 Development
 iOS Programming: The Big Nerd Ranch Guide
Find a Good Book

The Pragmatic Bookshelf
  iOS SDK Development
  Core Data (out of print but available on Amazon)
  Core Animation
Find a Good Book

The Pragmatic Bookshelf
  iOS Recipes
  Designed for Use
  iPad Programming
Find a Good Book


Design:
  Design Patterns: Elements of Reusable Object-
  oriented Software
  The Design of Everyday Things
Find a Good Book


Maintenance:
  Refactoring: Improving the Design of Existing Code
  Code Complete
Find a Good Book

Management:
 Peopleware: Productive Projects and Teams
 The Mythical Man Month
 Driving Technical Change
Tutorials


 Apple Tutorial
 Stanford on iTunes
Stack Overflow


Q&A for developers by developers
Lots of developers have the same problems as you
If someone hasn’t already asked your question, you
can ask the community yourself
LinkedIn

Start right away, even if you don’t have a good résumé
Connections are more valuable than skills
  Skills are important too
Recruiters can’t find enough iOS developers
Link to blog and portfolio
Twitter

 @daringfireball: John Gruber—Straightforward Apple
 news and opinions. WARNING: Coarse language!
 @mattgemmell: Matt Gemmel—Great iOS dev and
 blogger. WARNING: Coarse language!
 @cocoanetics: Oliver Drobnik—Another great iOS
 developer and blogger.
Twitter

 @gzicherm: Gabe Zicherman—Authority on
 gamification. WARNING: Coarse language!
 @bdudney: Bill Dudney—Former Apple engineer and
 great author for The Pragmatic Bookshelf.
 @mzarra: Marcus Zarra—Author for The Pragmatic
 Bookshelf and Cocoa Is My GirlFriend.
Twitter

 @glyphish: Glyphish—Quality, inexpensive iOS icons.
 @macrumors: MacRumors—Most “reliable” Apple
 rumors.
 @macrumorslive: MacRumors—Live tweets Apple events.
 Good for events that aren’t broadcasted.
Twitter

 @darthvader: Darth Vader (obviously)—Great comic
 relief for nerds.
 @davedelong: Dave Delong—Apple employee and
 amazing developer.
 @robby_brown: Robert Brown—Hey, that’s me!
 Independent iOS contractor and blogger. No brownie
 points for following me.
Intermediate
Learn Best Practice

Most developers/books/tutorials don’t follow good
practice :(
Design patterns are generic best practices
Other best practices are language specific
Follow the naming conventions of the language
Develop a coding standard
Learn Best Practice


Find a good mentor
  It’s hard to learn best practice on your own
  Do code reviews and pair programming
Learn to Design Code


Design Pattern: formalized description of best practice
There is a vast difference between code that works
now and code that will continue to work in the future
Mac/iOS naturally pushes good design patterns
Learn to Design UI

Design for mobile first!
If your app doesn’t look good, no one will buy it even if
it has amazing functionality
The Mac/iOS community naturally gravitates toward
good UI/UX
Be aware of why and how other app are designed.
Learn to Work in Teams

Most interesting software is written by a team
Good communication skills are critical
Knowing how to design helps to subdivide projects
A good coder is not necessarily a good project
manager and vice versa
Learn to Work in Teams


Do code reviews and pair programming
Use a version control system (VCS)
  EVERY developer MUST use version control
VCS Clients


Tower         Cornerstone
Versions      Gitbox
SourceTree    Terminal (for real devs)
Github


Git is the standard VCS
Github is an open source community
Github has many reusable Mac/iOS components.
Blogging

Teaching others helps reinforce learning
Writing skills are critical
Great Book: Technical Blogging
My Blog: Rob's Program Knowledge Base
  A collection of obscure errors and elegant solutions
Expert
Find a Specialty

 Find an area that interests you and dig deep
 You should enjoy what you do
 Broad knowledge is critical, but deep knowledge gets
 the good jobs
 My specialties: Multithreading, Core Data, UI/UX Design
Be a Mentor


Teaching others helps reinforce learning
Return the favor for those who mentored you
Give Presentations

Teaching others helps reinforce learning
Communication skills are critical
Slide Share: presentation sharing service
My Presentations
Stack Overflow


Teaching others helps reinforce learning
Answer questions
Gain reputation in your community
Github


Contribute to one or more open source projects
Makes a great portfolio
Great way to collaborate with others and learn from
them
Master
Change the World

Create a startup
Write a book
Write for a magazine
Do something else crazy
Summary

Know who and where to get help
Network and develop good reputation
Have a portfolio both of code and writing
Be involved in the community
Help others
Want to Learn More?

Lots of links in previous slides
http://penny-arcade.com/patv/episode/so-you-want-
to-be-a-developer-part-1
http://penny-arcade.com/patv/episode/so-you-want-
to-be-a-developer-part-2
Questions?

More Related Content

More from Robert Brown

Automatic Reference Counting
Automatic Reference CountingAutomatic Reference Counting
Automatic Reference CountingRobert Brown
 
Grand Central Dispatch Design Patterns
Grand Central Dispatch Design PatternsGrand Central Dispatch Design Patterns
Grand Central Dispatch Design PatternsRobert Brown
 
Grand Central Dispatch
Grand Central DispatchGrand Central Dispatch
Grand Central DispatchRobert Brown
 
Mac/iOS Design Patterns
Mac/iOS Design PatternsMac/iOS Design Patterns
Mac/iOS Design PatternsRobert Brown
 
Quick Look for iOS
Quick Look for iOSQuick Look for iOS
Quick Look for iOSRobert Brown
 

More from Robert Brown (8)

Anti-Patterns
Anti-PatternsAnti-Patterns
Anti-Patterns
 
Pragmatic blocks
Pragmatic blocksPragmatic blocks
Pragmatic blocks
 
Automatic Reference Counting
Automatic Reference CountingAutomatic Reference Counting
Automatic Reference Counting
 
Grand Central Dispatch Design Patterns
Grand Central Dispatch Design PatternsGrand Central Dispatch Design Patterns
Grand Central Dispatch Design Patterns
 
Grand Central Dispatch
Grand Central DispatchGrand Central Dispatch
Grand Central Dispatch
 
Mac/iOS Design Patterns
Mac/iOS Design PatternsMac/iOS Design Patterns
Mac/iOS Design Patterns
 
Core Data
Core DataCore Data
Core Data
 
Quick Look for iOS
Quick Look for iOSQuick Look for iOS
Quick Look for iOS
 

Recently uploaded

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 

Recently uploaded (20)

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 

Becoming a Mac/iOS Developer

  • 2. So You Want to be a Mac/ iOS Developer? What to expect: This presentation contains everything I wish I knew two years ago I will focus on Mac and iOS development, but the ideas apply to other specialties
  • 3. So You Want to be a Mac/ iOS Developer? What not to expect: This is not an introduction to Objective-C, Xcode, or any other tools.
  • 5. Find a Mentor Find one to three people who you can ask questions When you hit a problem, spend an hour trying to figure it out on your own If you can’t solve it after an hour, ask your mentor
  • 6. Find a Good Book Mac/iOS: Objective-C Programming: The Big Nerd Ranch Guide Beginning iOS 5 Development iOS Programming: The Big Nerd Ranch Guide
  • 7. Find a Good Book The Pragmatic Bookshelf iOS SDK Development Core Data (out of print but available on Amazon) Core Animation
  • 8. Find a Good Book The Pragmatic Bookshelf iOS Recipes Designed for Use iPad Programming
  • 9. Find a Good Book Design: Design Patterns: Elements of Reusable Object- oriented Software The Design of Everyday Things
  • 10. Find a Good Book Maintenance: Refactoring: Improving the Design of Existing Code Code Complete
  • 11. Find a Good Book Management: Peopleware: Productive Projects and Teams The Mythical Man Month Driving Technical Change
  • 12. Tutorials Apple Tutorial Stanford on iTunes
  • 13. Stack Overflow Q&A for developers by developers Lots of developers have the same problems as you If someone hasn’t already asked your question, you can ask the community yourself
  • 14. LinkedIn Start right away, even if you don’t have a good résumé Connections are more valuable than skills Skills are important too Recruiters can’t find enough iOS developers Link to blog and portfolio
  • 15. Twitter @daringfireball: John Gruber—Straightforward Apple news and opinions. WARNING: Coarse language! @mattgemmell: Matt Gemmel—Great iOS dev and blogger. WARNING: Coarse language! @cocoanetics: Oliver Drobnik—Another great iOS developer and blogger.
  • 16. Twitter @gzicherm: Gabe Zicherman—Authority on gamification. WARNING: Coarse language! @bdudney: Bill Dudney—Former Apple engineer and great author for The Pragmatic Bookshelf. @mzarra: Marcus Zarra—Author for The Pragmatic Bookshelf and Cocoa Is My GirlFriend.
  • 17. Twitter @glyphish: Glyphish—Quality, inexpensive iOS icons. @macrumors: MacRumors—Most “reliable” Apple rumors. @macrumorslive: MacRumors—Live tweets Apple events. Good for events that aren’t broadcasted.
  • 18. Twitter @darthvader: Darth Vader (obviously)—Great comic relief for nerds. @davedelong: Dave Delong—Apple employee and amazing developer. @robby_brown: Robert Brown—Hey, that’s me! Independent iOS contractor and blogger. No brownie points for following me.
  • 20. Learn Best Practice Most developers/books/tutorials don’t follow good practice :( Design patterns are generic best practices Other best practices are language specific Follow the naming conventions of the language Develop a coding standard
  • 21. Learn Best Practice Find a good mentor It’s hard to learn best practice on your own Do code reviews and pair programming
  • 22. Learn to Design Code Design Pattern: formalized description of best practice There is a vast difference between code that works now and code that will continue to work in the future Mac/iOS naturally pushes good design patterns
  • 23. Learn to Design UI Design for mobile first! If your app doesn’t look good, no one will buy it even if it has amazing functionality The Mac/iOS community naturally gravitates toward good UI/UX Be aware of why and how other app are designed.
  • 24. Learn to Work in Teams Most interesting software is written by a team Good communication skills are critical Knowing how to design helps to subdivide projects A good coder is not necessarily a good project manager and vice versa
  • 25. Learn to Work in Teams Do code reviews and pair programming Use a version control system (VCS) EVERY developer MUST use version control
  • 26. VCS Clients Tower Cornerstone Versions Gitbox SourceTree Terminal (for real devs)
  • 27. Github Git is the standard VCS Github is an open source community Github has many reusable Mac/iOS components.
  • 28. Blogging Teaching others helps reinforce learning Writing skills are critical Great Book: Technical Blogging My Blog: Rob's Program Knowledge Base A collection of obscure errors and elegant solutions
  • 30. Find a Specialty Find an area that interests you and dig deep You should enjoy what you do Broad knowledge is critical, but deep knowledge gets the good jobs My specialties: Multithreading, Core Data, UI/UX Design
  • 31. Be a Mentor Teaching others helps reinforce learning Return the favor for those who mentored you
  • 32. Give Presentations Teaching others helps reinforce learning Communication skills are critical Slide Share: presentation sharing service My Presentations
  • 33. Stack Overflow Teaching others helps reinforce learning Answer questions Gain reputation in your community
  • 34. Github Contribute to one or more open source projects Makes a great portfolio Great way to collaborate with others and learn from them
  • 36. Change the World Create a startup Write a book Write for a magazine Do something else crazy
  • 37. Summary Know who and where to get help Network and develop good reputation Have a portfolio both of code and writing Be involved in the community Help others
  • 38. Want to Learn More? Lots of links in previous slides http://penny-arcade.com/patv/episode/so-you-want- to-be-a-developer-part-1 http://penny-arcade.com/patv/episode/so-you-want- to-be-a-developer-part-2

Editor's Notes

  1. \n
  2. Tips are divided into categories: beginner, intermediate, expert, and master. The line between categories is fuzzy.\nThis is not an introduction to Objective-C or programming Mac/iOS.\n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. Usually there is good reason why developers stray from good practice, but this is rarely stated. Even more rare is to give a full example of the difference. \n
  21. \n
  22. \n
  23. Functionality is critical too.\nThere is a great tendency to copy other app’s UI design without asking why or how. A design that works for one app may not be appropriate for another. \n
  24. Programming in a team is very different than working alone.\nYou should be easy to get along with. \nEven open source projects need to follow good team structure and practice.\n
  25. \n
  26. \n
  27. \n
  28. Knowing how to use a client and the terminal is very valuable. Clients can save a lot of time, prevent mistakes, and visualize information better. However, there are times when you may not have your favorite client available or the client may not support a needed feature. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n