iOS Development: What You Need and How to Get it

Posted By Will Larche In Mobile 04/2/2012

So you wanna write iPhone apps, eh?

-I do write iPhone apps.

So you wanna get paid to write them, eh?

-Yes!  Gimme, gimme! 

A familiar conversation, a universal trope, but one that presents a conundrum.  After basic training, what’s next!? 

Let’s say that you:

  • -Have learned Objective-C
  • -Have practiced making a couple apps
  • -Understand MVC
  • -Can get around the Xcode documentation with no problem

Now you’ve begun to cross over from developer-in-training to developer and want to work with a digital agency developing apps that people will use.  Ahhh...well that is a cocoa of a different flavor.  The following is my advice to help get you on your way.


1. Web Services 

There is unfortunately no way around this one. It is so important in fact that it could account for items 1-3 on this list but that’s redundant and redundancy is annoying (and redundant).  Client-only apps are fine and useful and can make you money. But it’s not the meat and potatoes of app development. Apps that talk to a server are a MUST in your portfolio. Ideally, you should have examples of talking to a PHP/MySQL server in JSON and/or XML over RESTful web services.   Yes, I admit this is daunting but it is obviously surmountable or no one else would be able to do it, right!?

HOW TO LEARN:  

First and foremost, see this tutorial that totally makes sense courtesy of a great team of authors. DON’T SKIMP ON THE PHP PART.  Even if you never write your own web services on the server you’ll forever be grateful to know you can

You will also want to read this article which specifically deals with using ASIHTTPRequest, i.e. the beginner’s friend in learning the 3rd party networking frameworks.

-Why do I have to learn 3rd party networking? Shouldn’t I learn the Apple frameworks? 

I’ll take a stand here that some will disagree on: No.  Not at first anyhow.  NSURLRequest and NSURLConnection are not user friendly.  If they were, people wouldn’t have made a half dozen alternatives to their API.  At this stage in the game, it’s more important that you learn how to communicate back and forth than understand how it works on a language level and ASIHTTPRequest is great for that.

(***NOTE: If you are loading ASIHTTPRequest and its files into an application that uses ARC, be sure to turn off ARC on those files by:

a)  Going to Targets -> Build Phases -> Compile Sources

b)  Highlighting all the .m files that begin with ASI (as well as any others from ASIHTTPRequest like Reachability.m)

c)  Pressing Enter

d)  Typing -fno-objc-arc

e)  Making sure that populated the right side for each one.

For more information about disabling ARC please see this helpful article.

Practice POSTing and GETing strings and numbers as well as uploading and downloading files.

Practice encoding and parsing JSON and XML.

Practice spinning up a cloud server to handle your services.

That will change the way you think about architecting your applications.

HOWEVER, working with ASIHTTPRequest is not enough knowledge on its own. You must learn other 3rd party networking frameworks. The obvious next step is AFNetworking.

HOW TO LEARN: Read my prior blog post entitled "iOS Programming - Converting from ASIHTTPRequest to AFNetworking" which explains clearly and easily how to move from one to the other.

Once you have got the hang of this big boy networking you’ll also have practiced blocks and some threading.  Now you can learn another kit such as the MKNetworking Kit or RESTKit.  These are both hot right now and have different features focuses.  RESTKit is particularly pointed at integration with CoreData which brings us to the next item on our list. 


2. CoreData

There are 4 common ways people persist data on the iPhone:

a)  NSUserDefaults

b)  File I/O

c)  Archiving

d)  CoreData

In this author's opinion you can probably ignore a, b & c, at least at first.  Often they are taught as the way to learn persisting but I don’t see why as they are pretty antiquated in comparison to CoreData.  I know CoreData has a learning curve but if you’re ready to persist, you’re ready for CoreData.

CoreData is Apple’s way of storing and organizing data that lasts between sessions.  And, since the introduction of iOS 5, it has been made even easier to use thanks to a new kind of file that stores it called UIManagedDocument.  This file is full of features and a complicated backend but you don’t need to understand it all.  You can pick things up as you go.

HOW TO LEARN: Stanford iPad and iPhone Application Development course.  Episodes 13 + 14: CoreData and Demo from November 2011 are particularly helpful.  This man, Paul Hegarty, is basically the master of iOS development education. Listen to every word he says and make your code like his. 


3. Work with a Designer

You GOTTA GOTTA GOTTA work with a designer. Real development is a collaboration between the idea, the code and the design and if you don’t have an example of implementing someone else’s front-end then there is no gauge of how you would do at this task.  Usually, a designer makes comps of every screen of the app and hands them to the developers as either .ai or .psd files (note the use of Adobe software which isn’t cheap but is necessary for developers too).  Then the developer goes into those files and pulls out the pieces he needs as necessary.  It’s much easier to cut, crop and trim your borders, buttons and backgrounds on your own while going thru the layers than it is to be handed .png files of individual assets.

(***NOTE TO DESIGNERS: Don’t put things in hidden layers in the .psd files. The developer is likely to miss it. If you have an error message display or 2nd version of the view, put them in their own .psd files. It’s for your own good!)

HOW TO LEARN: Find a designer and work with them.

-But it’s not that sim-

Yes, it really is that simple. There are people who want practice designing just as much as you want practice developing. Go on Facebook, LinkedIn, Craigslist, and Tumblr and have some courage and post stuff on StackOverflow or anywhere you can find people! You may be surprised.  And when you do find them, REPLICATE THEIR VISION EXACTLY.  It is not your job to redo, reinvent and reinterpret but it IS your job to make design appear exactly as it is on the comp.  If you can do that, you’ll be loved by designers.  Why is that important? Because designers make the face of apps.  It’s what’s seen and these days there is major saturation in the app market.  Very few apps do something that another app doesn’t do and the way the user choses them is all design, ie what looks the best and feels most intuitive. That means we have to work harder to implement animation, custom tableviews, fancy buttons, and exotic gestures (as long as it’s all intuitive).

Become a design fan. You don’t have to have talent for design, just dedication to the vision. All iOS developers have to do the front-end stuff also; development is not segregated by front and back-end as is the case with some other technologies.  Evangelizing for good design will show how serious you are about the user experience WHICH IS EVERYTHING.


4.
Practice Best Practices

You need to be seen using good MVC and OOP.  Right.  But it doesn’t just end there.

a)  Don’t use instance variables. Use @propertys

b)  @synthesize your @propertys with an underscored variable. e.g.:

            @synthesize fantastiButton = _fantastiButton;

                        BUT NEVER ACCESS _variable DIRECTLY.

c)  Use private API in your classes.

e)  Stop naming things with opening tags. e.g.:

            arg_interestingInt     <- BAD

            t_interestingString   <- BAD

                        INSTEAD:

f)   NameThingsWithProperLongEasyToReadNames.

g) Make your own NSNotifications and @protocols

h)            ^{ useBlocks; }];

i)  #define useMacros 1

j)  Use lazy instantiation. (This is also best learned in the Stanford course in the first episode of Fall 2011.)

k)  Use storyboards and ARC. They are new and they are amazing.

l)  // Don’t over comment. Your code should be clear on its own.

and finally:

m) self.remembers.to.use.dot.notation

 

5. Make an iPad App

iPad has more sizzle than iPhone. It’s widely adopted and it doesn’t require cell phone service. It is becoming the computer of our time. You will be asked to develop for it.

-What’s the difference?

To you it may not be that different (same old cocoa) but to he who is not an iOS developer it is.  Often you will be interviewing with someone who is not a developer, much less one in iOS, and the applicant that already has a functioning iPad app under his or her belt looks much strong than one who doesn’t.


6.
Sizzle-Frameworks

-Huh?

It's important to put some thought into how to show your good work.  Salesmanship is showmanship and some things are more exciting than others.

a)  Work with video.

b)  Work with photo.

c)  Do these with AVFoundation (which you can learn from the Stanford course in their bonus demo called “Introduction to AVFoundation” with Salik Syed).

d)  Know some Core Animation.

e)  Include at least one cool custom or 3rd party UI element in one of your demo apps!

 
7.
PRACTICE, PRACTICE, PRACTICE!

Why are you waiting? These things don’t won't come through osmosis; they require practice and patience and in a digital agency you need to be fast.  That won’t come from cursory experience.

 

8. Have Apps In The AppStore

You will be judged by this.  Even if it’s not the world’s most exciting app it doesn’t matter, it shows you can follow through.  Putting an app in the AppStore is one of the best things you can do for yourself.

 

9. Be Friendly

Don't forget that at the end of the day, people like to work with likable people :)  You may be an iOS superstar but it's still critically important to present yourself as someone others will like to work with.

That just about wraps up my list.  If anyone has more resources, please post them in the comments below!


*Image courtesy of tungphoto.

Leave a Comment

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
To prevent automated spam submissions leave this field empty.
By submitting this form, you accept the Mollom privacy policy.