The iOS Beginner blog series

Posted: January 14th, 2012 | Author: | Filed under: iOS | Tags: , , , , | 17 Comments »
This entry is part 1 of 4 in the series iOS Beginner blog series

A dedication to the high-level programmers

After almost a year learning Objective C and iOS programming, now I can say that I understand most of the materials available in StackOverflow and there is rarely any question that I don’t know *how* to look for the answer. I can certainly tell the differences between a .h file and .m file and I also know how to load up cool stuffs from cocoacontrols.com and see if I can use them for my needs.

However, looking back at the early days, none of the above made any sense to me at all. I blamed myself mostly for having absolutely no background in any low level language. No C, C++, Pascal, etc. Like many developers out there, I started since very young with self-taught front-end web programming skills (HTML, CSS, JS) then moved on to back-end languages like PHP. (I started Rails at the same time as Objective C too).

Transition

The problem with having such a long history with web programming languages is that all languages fundamentally are the same: no compilation, no machine code, real time changes, nothing to do with memory management. For me coding = write code, refresh, see, change, refresh

And so, I threw myself into iOS with a very open mind, expect the unexpected, just like any other time I prepared to dive into new platforms. But this time, it’s not like any other. For the first month I really struggled, trying to convince myself to learn, trying not to give up and pull out. App crashed almost every time I tried to run, or worse, it didn’t even compile and I have no clue where or what to fix. I just couldn’t accept the fact that I have to write so much code just to achieve so little.

It took me a really long time to put a single HelloWorld on the screen because trying to find the answer for one question only lead to many others:

Begin: How do I write a Hello World on the screen?
=> What type of project should I start Tabbed Application or Single View Application or Utility Application (XCode template)?
=> What’s a window? What’s a controller? Why is it called a view-controller, not view *and* controller?
=> What’s the function to create a label?
=> Where the f**k are the function’s parameters?
=> How to put a label in the correct position?

And then there’s all the nasty provisioning before I can gulp in the delicious HelloWorld word on my iPhone. Don’t even start asking.

Enlightment

I kept bitching and complaining how much more work it was compare to Rails for several months (most of the time to my colleagues @ajhit406, @arun). Only when I started to accept the fact that Objective-C is a compiled, low-level language, in which my experience was clearly absent, I began to appreciate the language and the way the whole eco-system works. I no longer view [[alloc] init] as chores, instead, I remember every one of them and consider how much memory it might take everytime I wrote it.

Not only I learnt how to write Objective-C codes, the process of creating apps taught me so much more about designing for small screens. And that is why whenever I got a chance, I wouldn’t stop cursing and swearing about how bad Android design is and how fundamentally broken it is.

So I hope you got the point clear, if not : Objective-C is an awesome language. Period.

iOS Beginner blog series

With that, I wanted to help out those who began to learn iOS development, especially programmers who are coming from no programming background or web development background, to quickly adapt to Objective C and understand the broader picture.

The iOS Beginner blog series, including this one will attempt to do that.
The series will not to teach you how to achieve specific implementations, however, my approach will be to explain the fundamental concepts, the “why” of why you have to do certain things.

It took me only a month from a total noob to be doing advanced Rails stuff. But it took me almost a year to be confident in making good quality iOS apps, for example this one. So I hope by sharing my experience, you won’t take as long.

The very first concept will be from one of the questions above, which I found most difficult to understand at first: Where the f**k are parameters?


PHP to Objective C, where the f**k are parameters? >>

  • Very encouraging knowing you had been through the same struggles as i’m going through right now !

  • thank you for putting this together. Im sure a lot of people including my self will benefit from it. Keep it up!

  • It would be great if you could talk about where you started a bit more. You mention beginning with HTML/CSS/JS then moving to PHP—but were you able to quickly pick all these up? Were any of them a struggle? Was Rails a struggle?

    Are you a fast or slow learner?

    I’m always wondering about where people start. Like many, I know html/css very well, but have difficulty parlaying that into actual ‘programming’ ability. I’ve struggled with PHP for quite a while—I find the syntax frust{rating}; and find the learning resources to be so fractured and unclear: one tutorial tells you OOP is the only way to do things, another tells you to forget about that, for example.

    Could you talk a bit more about what you knowledge/skill level started at?

    • Kent Nguyen

      This could be an interesting separate blog I could write about.

      To answer your question in short. I am a very quick learner. Before PHP, I didn’t consider myself as serious programmer (more than 10yrs ago). But when I had to learn PHP it took me less than 3 months (2009) and I knew I can learn quickly since then. Same for Rails, piece of cake.

      I thought the same for Objective C to, however it struck me hard and that’s why I couldn’t accept the fact that I had achieved so little with what I’ve learnt in the beginning.

      I’ll probably write a proper entry for the rest of the story.

  • Thanks for this article, it has came at the very right time for me, i am rails developer and i am learning ios. One needs a lot of discipline and persistence to learn it.

    • Kent Nguyen

      Good luck. Indeed, you do need discipline and persistence!

      • krish552

        can u help me what kind of books have to refer to develop ioS who have no knowledge about programming

  • When I started learning iOS and programming in objective-C, I struggled the same way you did.

    However, I knew that my object-oriented programming background was strong so I started to develop for Android (which uses Java). After grasping some of the basic mobile applications concepts, it became much easier to understand what was going on with iOS–the problem went from learning mobile applications principles to just learning objective-C.

    I’ve been taking notes from the perspective of an Android developer learning iOS and have been sharing them on my web page. It’s nothing fancy, but it may help others.

    I am looking forward to more of your posts.

    • Kent Nguyen

      That’s great. Will definitly check out your posts (can’t now).

      Do you have any post writing for iOS dev moving to Android? I’d love to read that.

  • Pingback: 17 января 2012 «()

  • Pingback: iOS Beginner blog series by Kent Nguyen - Monday By Noon()

  • Pingback: The iOS beginner blog series » Several ways to die trying()

  • Pingback: End of 2011, the Lunar New Year version | Kent Nguyen()

  • Pingback: Fünf Lese-Empfehlungen und drei App Store-Hinweise | ifun.de/iPhone :: Alles zum iPhone()

  • Pingback: A fantastic-looking blog series on iOS development from a web developer. Like many web folks, I often get ideas for iPhone apps I’d like to build “when I have the time” but I’ve never learned Objective C. So I need things like this()

  • Ali Wcct

    Now you can make a professional iPhone/iPad App without any programming skills.
    This book is great and help amateurs to develop the professional apps.
    It is worth reading for new developers.
    You can get it right here.

  • Sensor Tower

    Very cool Kent. Always interesting to hear about what developers have gone through when they start making apps. We look forward to reading your blog series and sharing it with people who want to get started.