Skip Links

Network World

Jamey Heary

A memoir of my journey to become an iPhone App Developer, how hard is it really?

By jheary on Sun, 05/10/09 - 5:08pm.

What is the real deal with iPhone application development? Is it easy, hard, or somewhere in between? I just took a weeklong iPhone development course to find out. Like many iPhone owners, I want to have my own App Store shot at fame and fortune (well at least the fortune part:). Ever since I purchased my iPhone I thought it would be cool (and maybe profitable!) to develop my own iPhone app for the App Store. When I heard that a developer class was coming to my hometown of Denver I decided to seize the opportunity to throw my hat in the ring.

Just about every chance they get, Apple hypes up the usability and ease with which developers can create iPhone apps. During the last MacWorld, Apple paraded developer after developer across the stage. Apple makes it a point to emphasize a couple of the newer developers opinions on how easy it was for them to develop on the iPhone. The developers always give Apple raving reviews.

So how much of this is hype? Well, I’ll give you my experiences so far. But first, a little understanding of my background is in order. I am not a programmer; I haven’t done any programming since college (about 14 years ago). However, in college I did focus on computer science. The truth is that I don’t really remember much of anything from the years of programming though. I have always held a job in the technology field, security and network engineering being my focus for the last decade or so. I have a passion for all things technical and pretty much always have.
Ok, so now you have a lens to look through when reading my comments.

To say the iPhone course was way outside my comfort zone would be a huge understatement. I knew that I was about to go into a programming course full of experienced programmers and I didn’t want to be “that guy” or “the guy that just doesn’t get it” in class. Alas, I had already resigned myself to being the “slow guy”. Before signing up for the course I emailed with the trainer, Pragmatic Studio, to make sure I met the pre-requisites for the course. Turned out the course was really made for those that knew object oriented programming in some language (ruby, java, etc.) already. They did however send me lots of links to study material. Not to be deterred by the programming requirement I dove in anyway.

I took the pre-class preparation very seriously. Pragmatic Studios sent an email listing the pre-class prep that needed to be done by all students and also sent a preparation email just to me since they knew I needed “special care”. I followed the instructions and joined the Apple Developer network and downloaded the iPhone SDK onto my MacBook(you must have a Mac to write programs for the iPhone).
I then watched all of the free VoD’s that were on Pragmatic’s website, I highly recommend the free “Getting Started with Xcode and Interface Builder”. I then purchased several of their other VoD’s, at only $5 a pop they are very reasonable. My favorite was the “Coding in Objective-C 2.0” it starts with the very basics. For learning how to program iPhone apps I found that the video-on-demands were the best format by far. The very visual nature of programming in xCode and using Interface Builder lends itself very nicely to this video format. Like they say, “a picture is worth a thousand words”.

I then downloaded the free iPhone programming course from Stanford University. Stanford recorded their iPhone class and posted it on iTunes as a free download here http://itunes.stanford.edu/. I haven’t completed all of their podcasts yet but the ones I have are well done. They literally just videoed their whole semester iPhone CS credit course and posted it for free. Needless to say there is hours and hours of content available here. I watched the first two classes before I went to my course. Another place you can find iPhone dev VoD is on Apple’s Developers website. Lots of content there, I just haven’t had time yet to watch any of it.

Finally, I bought and read the Beginning iPhone Development book. It is an excellent resource for beginners, I highly recommend it. Before class, I did as many of the books programming exercises as I had time for, about 5.

At this point, I was somewhat familiar with the xCode and Interface Builder interface. I also had a very general idea of how to begin to write code for the iPhone. Quite frankly, I was pretty surprised at the speed with which I was picking this stuff up. Don’t get me wrong; I was still very lost, just not as lost as I expected to be.

Now, off to class.

I am also a non-programmer

0

I am also a non-programmer network guy by trade, but many years ago I did some application prototyping in Objective-C on the old OpenStep platform (which evolved into MacOS X). I loved most of it, but I hated the memory management stuff. Have they fixed that, or do you still have to do semi-manual memory management?

It's C with no garbage collection

0

To answer your question, yes you still have to care about memory management (releasing objects when you're done with them) for three reasons.

1. First is Objective-C is still largely C, but with object orient extensions (that should answer the question for you right there. 

2. The iPhone OS doesn't perform any garbage collection. Apple chose not include this in the OS because of the phone's footprint, which makes sense. That means you have to be more diligent.

3. Limited resources. A platform like the iPhone is very powerful but it's still not a PC or a Mac. You need to be aware of what things consume unneeded processing power, (like how objects are rendered), processor consumption, and tightly managing memory. Three things can happen if you don't: you have a slow app, the OS kills your app in about 5 secs if you appear to be stuck (like in a loop consuming CPU), or rebooting the device if you exceed memory capacity and OS doesn't catch it.

That said, those things aren't hard to manage... you just have to learn and be aware.

 

Mitchell

Converging Network LLC

http://theconvergingnetwork.com 

http://www.nww.com/community/ashley

http://www.guitartropolis.com 

How to get started

0

If you aren't a developer already, I'd suggest starting with the Beginning iPhone Development book as it starts from the Interface Builder perspective, which is easier to understand for non-experienced developers. The Stanford classes are also excellent, and they are taught by Apple developers who work on the iPhone.

If you aren't comfortable with object-oriented programming, I'd actually suggest starting out with a more forgiving (and less verbose) scripting language like Python or Ruby. They are pretty easy to learn and apply the OO concepts. They are also very handy for network folk who just want to be able to easily script stuff to do their jobs. (Ruby is easy to write such that it will spit out Windows/DOS, Linux commands for scripting.)

Ultimately though, creating apps for the iPhone comes down to writing code. Two big benefits the Xcode IDE does for you is provide great starting templates for iPhone apps, and Interface Builder saves quite a bit of coding for connecting up UI element to action and outlet methods. Objective-C and the Cocoa Touch Framework are the lion's share of the learning curve. 

Mitchell Ashley

Converging Network, LLC
Personal blog: http://www.theconvergingnetwork.com
Personal podcast: http://ashimmy.podomatic.com

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • You can use BBCode tags in the text.
  • Lines and paragraphs break automatically.
  • Allowed HTML tags: <p> <strong> <i> <br /> <br> <ul> <ol> <li> <dl> <dt> <dd> <blockquote>

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Welcome, visitor. Register Log in
About Cisco Security Expert

Jamey Heary, CCIE No. 7680, is the author of the Cisco NAC Appliance: Enforcing Host Security with Clean Access book by Cisco Press. Jamey is a seasoned security technologist with over 15 years in the IT field with 10 years focused on IT security. His areas of expertise include network and host security design and implementation, security regulatory compliance, and routing and switching. His other certifications include CISSP, CCSP, and Microsoft MCSE. He is also a Certified HIPAA Security Professional. Jamey is currently a Security Consulting Systems Engineer with Cisco, though the opinions expressed here are his own. Jamey is a member of Network World's Cisco Subnet blog community.

Contact him.