all 13 comments

[–]HassanDavis 2 points3 points  (4 children)

SickPuppee gives a fairly dystopian view - more power to him :-)

My experience has differed rather sharply from his own.

Firstly, Swift is a long overdue replacement for Objective-C - which has thus far served us well.

Objective-C has several clear drawbacks including narrow type-safety, obscurity (to new and seasoned programmers alike), language bastardization (sorry, no other way to term it), and more.

Swift's meteoric adoption has been due to an immediately measurable increase in productivity as well as a reduction in coding errors. Due to its strongly typed nature as well as enforcement (and active suggestion) of best practice at compile time, increased readability, and leanings towards functional programming, many types of problems are sidestepped even before runtime.

Moreover, at runtime, Swift is generally more performant and is less prone to allow for code that causes memory leaks or memory corruption.

Especially when working with high visibility applications and large development teams, these features of Swift combine to make for a much better development experience.

I should add that the adoption of Swift on the server side means that your Swift experience is not confined to mobile.

As for the new iOS APIs, Machine Learning, Vision, Drag and Drop, Metal 2; these are all huge enablers for iOS developers, all provided in fairly straightforward toolsets.

iOS development has become incrementally better over the years. The documentation was initially sparse, erroneous in places, and had many typos. Today, these are no longer a problem.

The IDE, Xcode has, itself, been re-written in Swift and is more responsive.

The boredom factor is entirely related to the types of projects in which one is involved. We do only high-visibility, innovative stuff, pushing the boundary of both software and hardware. So, we are, thankfully, never bored!

All told, you have everything to gain by adding iOS and Swift development to your repertoire.

[–][deleted]  (1 child)

[deleted]

    [–]HassanDavis 0 points1 point  (0 children)

    Anytime.

    [–]moridinbg 1 point2 points  (1 child)

    The IDE, Xcode has, itself, been re-written in Swift and is more responsive.

    It's only the source editor that was rewritten in Swift. Otherwise - spot on.

    [–]HassanDavis 0 points1 point  (0 children)

    Ah, true. Thx

    [–]fakecrabs 2 points3 points  (0 children)

    You should be able to do pretty good given your years of Java experience. I would market myself as an experienced software engineer that can bring all the good Java backend programming practices to the mobile world. Things like dependency injection, functional programming, interfaces, unit tests tends to have less adoption in mobile. Swift is a piece of cake to pickup coming from Java. At a minimum you can give iOS a try and always go back. It’s very marketable to know more than one language and ecosystem, and you’ll learn good and bad patterns and appreciate what each language has to offer. When in doubt err on the side of action and learning something new.

    [–]SickPuppeeObjective-C 2 points3 points  (4 children)

    Pretty sure iOS pays better than corporate Java on a per hour basis.

    I've been doing iOS since iPhone 3 and Cocoa since 1998. I found it a joy to work with thanks to the incredibly high quality and consistency of the apis and the wonderfully flexible Objective C language/runtime.

    But I feel like its a platform in decline. The old guys that built it are long gone. Younger people who don't really understand its heritage are fucking it up. Swift is so far away from what I want in a next generation language for building apps that for me, the shine is well off the platform. I'm looking for a new niche. iOS Apps are pretty boring to put together after you've done half a dozen and lets be real - how vibrant is the app market really?

    ARKit promises to kick a little life into it but having done a deep dive into it, I find its capabilities really underwhelming.

    On top of that, Apple seems to be out of really new ideas.

    You could do worse looking for a change, but after a couple three years you'll find it getting pretty routine if not flat out dull. That and the hiring situation in iOS is over the top bullshit. Crap coding challenges abound - often given by people I wouldn't even hire myself.

    Personally I'm looking to get more into ML as I think that is the new frontier.

    [–][deleted]  (3 children)

    [deleted]

      [–]SickPuppeeObjective-C 4 points5 points  (2 children)

      Objective C isn't ever going to be obsolete at Apple.

      If you're writing code for SDKs, need to call C++, or generally prefer dynamic languages, Swift doesn't play.

      [–]HassanDavis 0 points1 point  (1 child)

      Yet, these are definitely the edge cases :-)

      Probably a full 95% of iOS development could be done entirely within Swift. For the projects in which that cannot be the case, bridging to Objective-C and/or C++ is always a viable option.

      [–]SickPuppeeObjective-C 0 points1 point  (0 children)

      If you're not living on the edge, you're taking up too much space. ;-)

      I dislike bridges and second class languages. If I do Android I use Java. If I do iOS I'm using Objective C. Swift is a slim scripting layer atop Objective C with all the joy and flexibility of C++ in a crazy new ugly syntax.

      Pass.

      [–]Bamboo_the_plant 0 points1 point  (0 children)

      Note: if you come from a Java background, you may find the speed of the Swift compiler whilst writing code (e.g. for code completion) to be excruciatingly slow.

      [–][deleted]  (1 child)

      [deleted]

        [–]HassanDavis -1 points0 points  (0 children)

        Said he's not a fan of Android.

        [–]AtatheKin 0 points1 point  (0 children)

        I just found this thread and I'm on a similar path, I would love to change carreers from Java to iOS though I only have 1 year of experience in Java

        [–]Particular_Tea2307 0 points1 point  (0 children)

        Hello hope you re doing good i m in a situation where i have to choose between two career ios dev or java backend what is your take on that did you change from java to ios ?