Big learning curve for iPhone development

By Elisabeth Robson
June 22, 2009 | Comments: 20

I just started learning how to develop for the iPhone. After helping to put together an iPhone workshop with my friend Joe Heck, I got really excited about this new platform. I've dabbled in Cocoa and Objective C before, many years ago, and figured it was time to relearn Mac development so I could write my own apps for the iPhone.

Learning how to develop for the iPhone is challenging. There is a huge learning curve. You have to learn a new programming language, Objective C. If you're not already an OO programmer, coming from a language like C# or Java, you have to learn object oriented programming concepts. You have to learn how to do memory management (which for many of us older folks, that means learning how to do it again, but for people coming from Java or PHP, you may be learning it the first time). You have to learn the basics of the Cocoa frameworks, the iPhone SDK and the iTouch Frameworks in depth, and some basic C. You have to learn a whole new IDE - XCode and Interface Builder - and the associated development tools, such as Instruments. You have to learn how to do some basic design so you can create nice icons and graphics for your app. You have to be familiar with the Apple Human Interface Guidelines.

For a directory of all things iPhone from O'Reilly, visit iphone.oreilly.com.


None of these are small tasks individually and together, they are quite daunting. So it's exciting to see there are already almost 50,000 apps in the Apple iPhone store and almost 14,000 developers actively publishing in the store (numbers from an article in Fortune on June 10, 2009). Still, I'm guessing there will be a lot more people wanting to jump on board the iPhone development train, so we'll need lots of good online resources, books, training videos, workshops and conferences to help all those developers new to the Mac development platform get further up that learning curve and past the suck threshold.

I've been slowly working my way through the Stanford iPhone class (I'm on lecture three and homework 2) and a couple of iPhone development books, and using the Apple reference guides where I need to. Even with all these resources, I find myself running into challenging problems all the time as I work on my first real application.

In my next post, I'll dive right into building an application that combines a tab bar controller, a navigation controller and a table view controller. This is a common form for iPhone apps and isn't hard to create, once you know all the tricks to put it together.


You might also be interested in:

20 Comments

Having recently finished my first iPhone app (www.hudspace.com), I just wanted to share some brief thoughts.

I admit to being old school and have worked from C to most major OOP languages. However, memory management (while elegantly implemented) is THE major learning obstacle in iPhone coding. Basically, the problem is that it forces a level of attention to detail that most programmer's nowadays are simply not familiar with.

On the other hand, the iPhone has two major advantages over many other current platforms. No.1 is the APIs. Cocoa might come across as quite strange, at first, but as you get familiar with it it becomes clear that it is superbly consistent and very, very much programmer friendly. No.2 are the tools. Brilliant in every respect (the 'instruments' tool merits particular mention) they make coding a pleasure.

Anyone who delves into iPhone coding is sure to discover a slice of coding heaven. ;))

Thanks for your comment Konstantinos; I agree, reference counting does indeed require attention to detail and keeping track of interactions between classes in ways that many Java programmers (and others) aren't used to.

I'm doing the same thing and am about where you are. Looking forward to your future posts...

I've been programming for 20+ years and it can get a little "dry". But, my first exposure to Objective-C was a couple of years ago and I love it! Objective-C and Cocoa make programming fun again.

I look forward to your next post.

Sure all true, and a great responsibility for the editors at O'Reilly too.
They must now stress OO style in the examples and should be able to reject the poor ones. It shouldn't be too hard: if you see a lot of code, then you are probably going an old-fashioned way. If you re-factor to OO it will start too look clean, and when you are done, it looks really simple. Write a couple of apps and update in cycles and you will see how you learn.

great! let's go to it! looking forward! :+)

-bowerbird

Daunting for you maybe Liz. For us 17-year Mac veterans it's a snap. When you all laughed at us Mac developers back in the 90's we were just biding our time. No one is laughing at Apple now. While you were all wasting your time on junk commodity web technologies we knew the future was coming. And anyone who can't handle the simple memory management model that Cocoa provides should seriously consider another profession.

Comments like this are why people dislike Mac snobs. With less effort you could have simply said that developing for the iPhone isn't terribly difficult if you have any experience developing on the Apple platform.

I appreciate this comment. It's the truth. All others pls continue producing average stuff for average ppl. nuff said.

Bobo,
Well, I happen to think it's exciting that the iPhone is bringing a whole new group of people to Mac development, and I am sure we'll get the hang of the memory management model before too long.

As I'm sure you noticed, my posts are geared towards developers who are new to Mac and iPhone development. There are already a ton of great resources for experienced Mac developers, but not that many (that I've found, anyway) for those new to it.

Perhaps, if you're interested, you can use your expertise to provide feedback on my posts that will help us newbies get up to speed faster.

Oh great Bobo you are so wise, you saw the future 17 years ago and now your time has finally come to laugh about all the people that were laughing at you back then. How thoughtful of you to tell people that are inexperienced and don't know about reference counting (yet) to look for another profession. The apple platform needs more of arrogant and ignorant people like you. Way to welcome everybody that has less experience than you. Good job!

The learning curve for iPhone development may seem big to some who are coming from Web development or development of high-level custom business apps (think VB's niche), but compared to the curve for development on other embedded/mobile platforms, iPhone is quite programmer-friendly and relatively easy/cheap to get started.

Nice post and great initiative from the O'Reilly team indeed. Looking forward to your next post.

Memory management is tough, but I think only because we've all grown lazy using languages like Java and C#.

There is definitely a learning curve but it's not bad if you take time to read the documentation, watch some of the WDC videos and go over the example code. I think makes it seem hard is that you can't just slap together example code and have something that works the way you can with other, more forgiving development environments.

I'm not saying one is better than the other, it's just a different discipline.

I agree that developing for the iPhone has renewed my enjoyment of coding as well, and I hope I can switch to working on it exclusively in the near future.

Jason -
Can people who aren't paid members of ADC watch the WDC videos? If so, it would great if you could post a couple of links to the videos you mention.

I'm afraid the WWDC videos are limited to just the folks who've been to the conference, or folks who're willing to shell out a couple hundred $$ to Apple for the privilege of seeing the videos.

Now this is what we want to know. Situations feced during learning apps development. Besides if you wanna take some ideas about iPhone apps development should go http://objectdevcorp.com/IPhoneAppDevelopment.aspx
They may help you in building ideas.

I have had an incredibly frustrating time with even the simplest apps. I think it's more getting the SDK to work properly. I've followed the Stanford videos (first 2 so far) and could not even get the first HelloStanford app to work right. I kept getting a blank white screen and finally figured out that I had to do a Build and Go before opening the Interface Builder or I'd get the blank white screen. Once I got it to show up the first time it would be okay. But, the slider will not move at all. I've carefully followed the video and it's just stuck at 0. I also noticed that if I quit out of the app in the iPhone simulator, then tried to launch it from the home screen on the simulator I'd get nothing but a black screen. Very frustrating when you can't even get the simplest apps to run!

I have had an incredibly frustrating time with even the simplest apps. I think it's more getting the SDK to work properly. I've followed the Stanford videos (first 2 so far) and could not even get the first HelloStanford app to work right. I kept getting a blank white screen and finally figured out that I had to do a Build and Go before opening the Interface Builder or I'd get the blank white screen. Once I got it to show up the first time it would be okay. But, the slider will not move at all. I've carefully followed the video and it's just stuck at 0. I also noticed that if I quit out of the app in the iPhone simulator, then tried to launch it from the home screen on the simulator I'd get nothing but a black screen. Very frustrating when you can't even get the simplest apps to run!

News Topics

Recommended for You

Got a Question?