Ruminations on Swift

It’s been awhile since I have found anything worth blogging about in the iOS development world. The first day of WWDC 2014 changed all that. Had Apple only announced their new programming language, Swift, that would have been enough to keep me (and the rest of the iOS world) busy and excited for quite some time.

My first reaction to learning that Apple announced a new language for iOS and OS X developers was, “Why?” I know that Objective-C has a bad reputation with developers in general, but it’s mostly undeserved.  I’ve found that people who declaim Objective-C as an inferior language usually have little to no experience with it.  However, perception is reality. Developers don’t want to learn Objective-C because they believe it is technically inferior, or just plain “weird.” It seems naive to think that Apple is spending untold amounts of money and manpower on a new language based solely on perceived technical drawbacks of their existing language.

So, what gives? If it ain’t broke, why are they fixing it?

Well, it is broke, so to speak. Like I said, perception is reality. I know from firsthand experience as a software development consultant that almost all companies that need iOS apps find it next to impossible to hire, afford, and retain qualified iOS developers to build and maintain those apps. Relatively few developers are willing and able to get down close to the metal and learn an ancient-yet-refurbished language such as Objective-C. Understanding memory management, juggling pointers, working with C functions and structures…these are not skills that most modern platforms require developers to have. If you only know how to drive an automatic, why would you want to start driving standard?

Ask most iOS devs that question, and you’re likely to get an answer like this…

driving

…but that’s beside the point. 😉

Let’s face it, Apple wouldn’t have invested in Swift if it wasn’t critical to their future success. If Apple’s success is contingent on selling their hardware (amongst other things), it behooves them to make developing for their hardware a skill for which most companies can hire and retain developers. By making Swift a language in which everyone seems to see aspects of their favorite language(s), Apple has done a good job of lowering the perceived barrier to entry for their platforms. It might instill confidence in developers that iOS isn’t all that different from what they already know. If Swift is as developer-friendly as it is trumpeted to be, companies will soon be able to hire developers who one day work on a single-page Web app and the next day write a new UIViewController.

Apple wants companies to gain the ability to do in-house iOS development. More specifically, I assume they want companies doing native iOS development, using their tools and their languages in their ecosystem, not turning to cross-platform solutions like PhoneGap or Xamarin just because they have a more familiar programming model. The more that companies have the ability to develop their own iOS and OS X software, the more of Apple’s products they will buy.

In other words, Swift should lead Apple not only to increased mindshare amongst developers, but also increased profit. Ahh…now things are starting to make much more sense!

What does all of this mean for us grizzled Objective-C veterans? Will our market value decrease as the iOS development world experiences a deluge of new developers staking their claim on our turf? I suspect not. First of all, the pie of which we all want a slice is not a fixed size. It can grow as the demand for custom iOS software grows. Secondly, even if this more approachable language attracts less talented/experienced developers to iOS, that shouldn’t impact the market value of serious engineers.  Does the presence of “script kiddies” negatively impact the market value of serious Web developers? No, I don’t think that’s the case. If anything, the new lower barrier to entry for iOS development will only serve to illuminate by way of contrast the technical excellence of developers who have taken the time to master a more demanding language such as Objective-C.

The future looks bright in the iOS world. I, for one, embrace Swift and am excited to master it, too.

Cheers.


Thanks to Mike Wolf and Kevin Courter for bouncing these ideas around with me late last night.
This entry was posted in Swift. Bookmark the permalink.

13 Responses to Ruminations on Swift

  1. JordanN says:

    Excellent meditation on the birth of Swift!

    One quibble. You mention that Swift is a “simpler” language than Objective-C. I suspect it’s more “sophisticated”. Perhaps “easier” to learn. Perhaps “more familiar” to developers with experience of other modern languages. Objective-C has nether true generics nor a functional programming paradigm. Those facts alone make me think Swift is more “advanced”, more “powerful”, and “sophisticated” So Objective-C is “MariAnne” and Swift is “Ginger”. And C? Perhaps Mrs. Howell.

    • Josh Smith says:

      Good point, JordanN. Thanks for pointing that out. I’ve replaced ‘simpler’ with ‘more approachable’ which is a good improvement.

  2. Apple has become known as a company that cares about and understands UX better than any other company. But up to now they’ve focused primarily on that from the perspective of their OS UI, native apps UI, etc. With swift, they are now starting to think about language UX in a deeper way. It’s not that Objective-C is less capable than Swift. But it has a poorer user experience than Swift. I think for the first time, Apple is trying to sell to developers using the same approaches they have been taking with the consumer over the last years. That’s a very good thing.

    • Josh Smith says:

      That’s a very interesting point. Thanks for sharing it here. I agree with you. When I first got into iOS development it was clear that Apple didn’t prioritize developers. There were gaps in the tooling and API that shocked the .NET developer in me, such as no built-in support for JSON and the loose way in which Interface Builder was integrated with Xcode. Over the past few years they’ve made significant improvements on the developer front, and your observation about Swift as a UX improvement for developers is another example of this developer-focused shift.

  3. Thanks for the article. My perspective on Objective C is that it is truly a heaping pile of dung. Debugging is a nightmare. Now, I am *willing* to get down close to the metal, but not for something with such a small footprint as the iOS ecosystem. I, not to mention thousands of other devs, use it to make applications smaller than enterprise systems. Objective-C is the language that brought us the iFart app and its many cousins. Should devs really have to get so dang close to the metal just to create a single-use app on a 3.5″ screen? 95% of my work is outside Objective-C, but the language requires a huge learning curve just to subclass a UITableView.

    My heart fell with the news of Swift, as all my tortured acquisition of Objective-C is now on death row to obsolence. I always thought Apple would get around to improving their tooling. Swift is nice for a fresh start but there are lots of legacy apps that will suffer for awhile. Nevertheless, something had to be done.

    • Josh Smith says:

      Thanks Chris. You raise a very valid point about the Obj-C learning curve being difficult to justify for small-ish apps. I guess an unwritten assumption in my line of reasoning is that business apps built for/by companies are not small, but instead are complex and have a long shelf life. Custom business software for iOS devices have moved into, and are moving into, the domain that was previously only occupied by desktop apps running on a laptop.

  4. JordanN says:

    I’ve never understood why people shy away from Objective-C or think it is difficult. It’s not. It’s just a simple super set of C with objects and a very descriptive syntax. Since it’s really just C under the covers, it has been a great language for mobile devices, where reources are scarce and speed and efficiency are vital. Perhaps it’s a result of the massive increase in people making their living with software.

    There was a time when C, C++, etc used to be the lingua franca of serious dudes doing serious things. Now, there are a lot of ill trained, intellectually lazy people out there who probably should never be allowed near a language that doesn’t have memory manged training wheels or very simple syntax. Indeed, there are actually an awful lot of people these days who think JavaScript is a serious programming language.

    • Michel Renaud says:

      I’ve only begun seriously playing with Objective-C (should have been a lot longer, but health problems got in the way). It does feel a bit backward at times (like Josh, I’ve been doing .NET a looonnnggg time), but there’s a lot of very interesting stuff in it. I often find myself thinking “oh wow, this is pretty cool”. Some newish features do feel a bit half-baked (I wasted over an hour trying to look at a class’ properties in the debugger, only to find that I had to use @synthesize to see them, otherwise it didn’t show the content of the object). But hey, it’s part of the fun.

      I haven’t read much on Swift yet, though I did have that sinking feeling of “oh f…, not another one.” I downloaded the book yesterday, but, damn, I have a lot of books on the backburner already!

      • Josh Smith says:

        I’m glad your health is back on track, Michel. Looks like we’re in for some fun times ahead…

  5. Pingback: Dew Drop – June 4, 2014 (#1790) | Morning Dew

  6. Michel Renaud says:

    Finally enrolled in one of their developer programs (iOS) so I could download Xcode 6 and take a look at this. That Playground gizmo is pretty cool. I’m liking some of this so far. I think I’m really going to like the new view debugging feature. I haven’t tried it yet, but it sure sounds like something that will prevent a lot of headaches.

Comments are closed.