How to Learn iOS

find the training and tools to make great games and apps – just for fun!

Should You Learn Swift or Objective C First?

Posted by on Jul 14, 2014

Share Button

The Swift vs Objective C Debate

Should you Learn Swift or Objective C FirstFrom the moment that Swift was released to the excited iOS programming hordes, people have started to argue about whether beginner iOS developers ought to learn Swift or Objective C first.

In this post, I am going to briefly summarise the most popular arguments and give you my thoughts on this controversial issue.

I should make it clear that this article is aimed primarily at beginner iOS developers that haven’t yet learnt Objective C and who do not necessarily aim to become full-time professional iOS developers.

If you are one of these beginners and are anxious to start developing for iOS devices as soon as possible, should you learn Swift or Objective C first? In fact, do you ever need to learn Objective C at all?

I have recently read a couple of articles that strongly suggest that beginners ought to learn Objective C before attempting Swift, even though Swift is said to be an easier language to learn. However, I have also noticed from the comments posted at the bottom of these articles that this is not a view that is universally accepted by experienced programmers and many argue quite persuasively that there is absolutely no good reason for a beginner to learn Objective C first.

Since reading these articles, I have thought about this issue a great deal and wondered what I would do if I was starting out today and needed to choose between Swift and Objective C as my first iOS programming language.

So, what are the arguments in favour of learning Objective C first and are they valid?

The Arguments in Favour of Objective C Refuted?

The main arguments in favour of learning Objective C first are:

  • The Frameworks aren’t changing
  • Objective C is Tried and Tested
  • Objective C Learning Materials are Mature & Plentiful
  • You Can & Should Use Both

#1 The Frameworks aren’t Changing

It is perfectly valid to point out that the existing Cocoa Touch Frameworks aren’t changing due to the release of the Swift Programming language. However, I fail to see how this is a valid argument in favour of the claim that beginners need to learn Objective C first. There is absolutely no good reason why you can’t learn to use Cocoa Touch effectively whilst learning Swift as opposed to learning Objective C.

#2 Objective C is Tried and Tested

Again, this is a perfectly valid observation that is bound to be correct whenever something new is created to replace something old. However, the same point could have been made (and was made) about the recent release of Sprite Kit for creating 2d iOS games. However, a few months down the line and no-one is seriously suggesting that beginners should learn Cocos2d instead of Sprite Kit.

Just as Sprite Kit will evolve and improve each time Apple releases updates, so will Swift. So, any little quirks and problems that are pointed out to Apple will almost certainly be dealt with promptly and improvements made.

Clearly, Apple would not have released Sprite Kit and Swift if it was not their intention to prioritise them and they seem genuinely determined to lower the barrier to entry into the iOS programming arena. It is in their interests to make Swift as simple and successful as they possibly can.

So, the fact that something older is more “tried and tested” is, in my opinion, a rather cheap and obvious point that will almost certainly dissipate into a forgotten objection within a few months of Swift’s release. It will very quickly become an accepted and established programming language and I genuinely wonder how long it will take for Swift to completely dominate the iOS App creation scene – I suspect not very long at all.

#3 Objective C Learning Materials are Mature & Plentiful

This point really follows on from the last. It is trite to say that an older programming language will have a larger number of mature learning materials than a programming language that has only just been released.

However, things move very quickly in the world of mobile app development and there are already a number of great looking online training courses available for beginners and experienced programmers. These courses are going to quickly become more numerous and more refined as time passes and, by the started of 2015, I suspect that we will be overloaded with excellent training materials and the problem will be one of which to choose rather than whether or not you can find one.

There are also a number of Swift Programming Books that are available for pre-order and are due to be released by the end of  2014.

Read my review of one of the first comprehensive online Swift Programming Courses here.

#4 You Can & Should Use Both

This is a perfectly valid point to take on board if you are someone that intends to become a full-time professional iOS developer working for an organisation that might require you to work on older Apps that have been created using Objective C.

However, I see no good reason why someone that simply wants to create apps for fun or independently in order to make some money ought to learn Objective C first and then learn Swift afterwards.

Just because you can use both doesn’t mean that you should. Those of us with limited time to devote to iOS development need to keep things simple rather than take on the burden of learning multiple programming languages when one will be more than adequate.

My Conclusions on the Swift vs Objective C Debate

Whilst I have some sympathy for the argument that you ought to learn Objective C first it seems to me that, if you simply want to learn to create iOS apps as a hobby that hopefully might develop into something more profitable, there is absolutely no reason why you need to torture yourself by learning Objective C first before then learning the Swift programming language.

Note: If you are training to become a full-time professional iOS programmer, then you might want to learn both Objective C and Swift since you may well find yourself being asked to work on other people’s code that has been created using Objective C.

So, if you are a beginner iOS developer, I suggest that you get yourself enrolled on a Swift Programming Course and/or buy one of the Swift Programming books that are due for release towards the end of 2014.

There is also an excellent forum dedicated to Swift Programming here.

If you disagree and want to learn Objective C first instead, you can find some great books here and some excellent online training courses here.

What Do You Think?

If you have any views on the subject of whether you should learn Swift or Objective C first, just leave a comment in the box below.


Join the conversation and post a comment.

  1. Doug K

    I am in the “Objective C Learning Materials are Mature & Plentiful” camp, and I find your refutations weak, for now. Most of the learning materials for Swift that I have found so far are more about generic Swift than the iOS APIs, and your resources seem to be consistent with that observation. And books that will be available at the end of the year (if on time) are of no use today.

    On that basis, I would recommend that someone who wants to come up to speed on iOS development now would be better served by tapping the rich history of learning materials and support through services like StackOverflow.

    FWIW, I am an experienced iOS developer and very comfortable with Objective-C. I have shifted all my personal learning time to coming up to speed with Swift, hoping to have a new version of my app written mostly in Swift later this year. So far, I’ve experienced a bit of friction with getting Swift to work with ObjC frameworks. This is the part of the learning curve I expected to tackle; I don’t think it’s appropriate to inflict on an iOS novice.

    That said, my answer will probably be very different by the beginning of next year, but, for now, I’d recommend learning iOS (or MacOS) through the Objective-C lens.

    • Kristian

      Thank you for your comment and I appreciate that you are a far more experienced iOS developer than I could ever hope to be.

      I think that the problem with your argument might be that, as an experienced Objective C user, you underestimate the time and effort required for a part-time hobbyist to get to grips with the language. It took me about a year to even begin to think that I was making any meaningful progress, but perhaps that is more of a reflection on my abilities than a general trend. I wish that I had started programming when I was 18 and carefree rather than at 37 with a house full of children!

      If I were starting from scratch today, I would certainly not want to spend the next 5 months starting to learn Objective C and then change to Swift when there are more resources available for beginners. I would much rather either just wait a while before starting iOS development or start to learn the basics of Swift now and get more thorough training in the future as and when the wrinkles are ironed out.

      I absolutely agree that anyone that wants to pursue a career in iOS development should learn both languages (probably Objective C first), but I genuinely think that for most “hobbyist” iOS dabblers it is just too much to ask.

      Again, thank you for your contribution and I will certainly keep an open mind on this issue as things progress.

  2. JRock

    I think this argument depends on your goals. If you’re looking to write your own app and are starting from scratch, I think Swift is the right choice. If you’re looking to become a professional, choose Objective-c. There’s a ton of legacy code out there not to mention that an organization will be hesitant to switch to an unproven language on a critical app without some market momentum.

    • admin

      Thank you for your comment.

      I agree completely with the distinction that you draw between professional developers on the one hand and hobbyists / independents on the other.

Leave a Reply to admin Cancel reply

Your email address will not be published. Required fields are marked *