Friday, January 29, 2010

iPhone App Development -- where to start?

A little background,

I have never used Mac before this. I'm a Java developer who know nothing about Objective C.

In my career, I have picked up many technologies by my own, java, sql, C#, javascript, css, python, jquery, hibernate, spring... you name it. My point is, learning a new technology is not something I haven't done before.

Here is my learning experience...

iPhone Dev 1.2.3:
  • Buy the hardware
  • Learn Objective C.
  • Get use to Xcode.

Hardware
  • Mac
  • Test device (iPod Touch or iPhone)
Yes, you must use Mac. You can't install Mac OS on PC, even if you hack it, what you develop would be illegal.
You also need a test device. The development kit contains a simulator, but it doesn't guarantee your app will run the same on iPhone/iPod Touch.

Objective C

Objective C is the programming language. If you come from C/C++ background, it might be easier for you. For someone used to java/C#, memory management is always a pain.

Frankly speaking, picking up Objective C and iPhone SDK is not hard (I had worse), you just need to overcome the document hell first.

Apple's documentation is baaaaaa...................aaad! In my opinion, it's probably one of the worst I have ever seen.

After reading documents recommended, I still find it hard to start with. You can't always get a clear answer from documents, many info are missing, blur, lack of explanations and warnings. Now I only use the API as references, if I run into a problem or want to perform a task, I rather go to iPhone dev community.

Besides, every time you think "thank god I almost finish this document!", it suggests you to read some other document for details. This is extremely frustrating! Feels like you are burning in the study hell for eternality.

Xcode

Xcode is the IDE. Is it good? It's not bad......... if you get to know it (again).

I have used several IDE before, Eclipse, Netbean, Visual Studio.... most of them are self explanatory --- you may not know all the functions, but most people can do basic functions without reading the manual.

Xcode is a different story. The UI is very confusing, especially interface builder. By looking at it, I couldn't figure out how to link a button to its handler, I don't know what it means by adding a Controller to xib.... yes, you can't skip it, you must read the manual.

It got many cool tools though, which makes development easy, but again, only after you get familiar with it.


Licensing

After you bought the hardware, learned objective C, get used to Xcode, and stumble through your first app, there is one final challenge----- licensing.

What a pain in the a...... !!

There are so many hoops to jump through it took me a week! Request this, download that, setup teams, fill in forms, build with different licenses.... you did one step wrong, the whole thing is gonna fail..... it's totally frustrating!!!!!!

Maybe it's just me, I reckon set up the right license is much harder than development process itself.

In Summary

There is a big learning curve, once you stumble through your first app, the second app is easy.

So, is it worth it?

I bought a MacBook, a iPod Touch, a license.
A year of my holidays and weekends are gone.

Look at the money I have made (to give you a rough idea, if I use the money on dog food, my small size dog would starve to death), what do you think?

Besides, Objective C is not that popular in the job market (at least not now, not where I live). Regarding to my investment return, I rather learn how to whistle.

No comments:

Post a Comment