Getting started as a developer in any language or platform can be a struggle. This presentation contains all the little things I wish I knew when I started as an 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
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
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
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
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
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
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
\n
\n
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
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
\n
\n
\n
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