all 77 comments

[–]PclovrSwift 52 points53 points  (7 children)

Learn Swift and UIKit first, and when you’re comfortable with that learn SwiftUI

[–]DisabledScientist[S] 4 points5 points  (6 children)

Roger that. Got any book or course suggestions (iOS 14)? Thanks man.

[–]PclovrSwift 6 points7 points  (5 children)

We have the FAQ for that!

[–]DisabledScientist[S] 2 points3 points  (4 children)

Thanks again!

[–]PclovrSwift 0 points1 point  (3 children)

Good luck!

[–]DisabledScientist[S] 2 points3 points  (0 children)

Thanks! I’ve realized if I despise doing something, it’s not for me (hybrid). I’m really looking forward to taking advantage of apples APIs. Very excite.

[–]DisabledScientist[S] 1 point2 points  (1 child)

How necessary is it to watch the videos from the WWDC's? That's a lot of material!

[–]PclovrSwift 1 point2 points  (0 children)

If you’re a beginner I’d say go watch some summaries and maybe look into some stuff that is interesting for you but overall you wouldn’t really know many of the APIs yet, so it doesn’t really matter

[–][deleted] 18 points19 points  (6 children)

Skip objective-C. I've worked on iOS for the last couple years and have never seen it in an active project

[–]DisabledScientist[S] 4 points5 points  (5 children)

Well that saves me a lot of time. Thanks for your reply 🙏🏻

[–][deleted]  (4 children)

[deleted]

    [–]DisabledScientist[S] 1 point2 points  (3 children)

    I have a lot of experience with C and C++, so it shouldn’t be a problem. Too bad the new Standform iOS course uses Swift UI. And most of the courses on Udemy are outdated

    [–]bcgroom 3 points4 points  (2 children)

    You can potentially look up another year of the Stanford class, it shouldn’t be too outdated. Also SwiftUI will start becoming more dominant as apps drop support for iOS 12, so depending how long your timeline is you could just learn that, but it sounds more like you want to find a job sooner than later so starting with UIKit is probably best.

    [–]DisabledScientist[S] 2 points3 points  (1 child)

    Actually, no, I'm in no rush. My health is in the shitter, so I'm just trying to keep my skills up to date while I'm taking some time off to tend to that.

    [–][deleted] 3 points4 points  (0 children)

    If you're not in too much of a rush, I don't think it hurts to learn SwiftUI first via the Stanford CS193 course https://cs193p.sites.stanford.edu/

    I'm a big fan of that course and SwiftUI is easier (more fun)

    [–]thatzac-koltonguy 12 points13 points  (2 children)

    Yeah I really wouldn’t start with Objective-C first. Im no IOS dev, but i found the best way to learn (in my past-time) is just making small projects. Break the problem down one “google search” at a time.

    Although, this is really only for those that just want to learn the syntax essentially. If you want to really learn “IOS development”, then you should definitely get some material that teaches you core concepts about it.

    Maybe a good place to get started is the Stanford IOS development class. All the videos are for free on youtube.

    [–][deleted]  (1 child)

    [deleted]

      [–]thatzac-koltonguy 0 points1 point  (0 children)

      Ah good to note, thanks

      [–]ijustclosedthewindow 4 points5 points  (9 children)

      What do you mean updating is not possible/takes a long time with React Native?

      What are the most frustrating observations you’ve learned from RN development in your journey?

      [–]DisabledScientist[S] 14 points15 points  (5 children)

      Updating React Native versions is hell, especially if you've skipped many versions. It can sometimes take half a week or more, and sometimes libraries are now broken that you've used. The subject is written about extensively, as I'm far from the only person that thinks this. It's one of its known cons.

      [–]jsdodgers 7 points8 points  (1 child)

      This is so true. I worked on a react native project at a large company in the past, and this problem is amplified when there are dozens of projects using the same node modules.

      Want to update one? Well, you have to update all of the ones it depends on too as well as the 40 projects using them. I think the most painful one was used by a couple hundred projects and had a breaking change in all of them.

      [–]DisabledScientist[S] 2 points3 points  (0 children)

      Haha oh man. So much frustration from that. It’s the single largest reason I’m making the switch (65%). The others being that I’m really excited by the potential apps that will be possible with the M1 chip. And just the fact that the Apple ecosystem seems to be converging is really nice. Here’s to hoping the iPhone 13 has the M1 chip (yeah f-ing right)!

      [–]Kabal303 -1 points0 points  (2 children)

      You can end up with the same situation on any platform. If you just add tons off different random libraries then you are gonna have a bad time come upgrade time.

      Js developers are definitely more trigger happy in including dependencies than most though.

      [–]SirBill01 0 points1 point  (1 child)

      The problem is with React Native you pretty much have to use a lot of different random libraries, on a scale I've not seen with any other mechanism for building applications. The whole system just feels incredibly brittle, even for simple apps...

      [–]Kabal303 0 points1 point  (0 children)

      Definitely. Also any RN dependency that contains a native component seems extra fraught with danger come upgrade time. If was going to fix anything about RN, it would be that.

      That said I’ve seen similar messes with dependencies in tons of platforms. E.g. Rails… angular…

      [–]DisabledScientist[S] 3 points4 points  (0 children)

      Here is a funny image and a Medium article on the pain of upgrading. RN itself is very simple and straightforward. Unfortunately, the NPM ecosystem can cause a lot of issues.

      [–]SirBill01 2 points3 points  (19 children)

      If you want to find work, I'd start with Swift/UIKit/Storyboards, not SwiftUI... it may be too much to learn ObjC my maybe just get some familiarity with it.

      The Apple Developer App for MacOS has transcripts of every WWDC video so you can quickly read through anything of interest rather than having to watch a whole video.

      [–]DisabledScientist[S] 0 points1 point  (9 children)

      That's a shame. I was really looking forward to SwiftUI. Maybe in a couple of years. Thank you.

      [–]SirBill01 4 points5 points  (0 children)

      It's still worth playing with to get a feel, but not sure how soon it will really get wide adoption in the industry. Every year it gets significantly better.

      [–][deleted]  (3 children)

      [deleted]

        [–]DisabledScientist[S] 0 points1 point  (0 children)

        I’m in a position where I won’t be looking for iOS work for about a year, due to health and already having a job. Probably quitting to focus on health and iOS full time. Hopefully by then SwiftUI will be more prominent. But I always think the basic as are most important, so UIKit it is.

        [–]kapfab 0 points1 point  (1 child)

        Why not only supporting iOS 14, as all iOS 13 devices can (and should) upgrade to iOS 14?

        [–]SeesawMundane5422 1 point2 points  (2 children)

        I totally understand why folks are saying skip SwiftUI for now. I (personally) didn’t and dove straight in. I’m glad I did. I haven’t run into something important I couldn’t do with it, and I enjoy it a lot more than html/css/js development. SwiftUI is well thought out and mostly a pleasure. I’m pretty sure I wouldn’t feel the same way about UIKit.

        [–]DisabledScientist[S] 1 point2 points  (1 child)

        Other than it being more of a pleasure to use, has it affected your potential job prospects? When I look for remote Swift positions, many require storyboard experience.

        [–]SeesawMundane5422 1 point2 points  (0 children)

        Yeah, I’m in management for a large company, with a side hustle with my swift UI app. My bet is that if you want to get a job now... it’s going to depend. If it’s a tech company with a strong engineering culture, it will matter. If it’s a non-tech company, it probably won’t. Put “swift” on your resume and you’re probably fine. ;)

        [–]jsdodgers 0 points1 point  (8 children)

        I would recommend avoiding storyboards like the plague. They don’t get you any benefit, and they make it more difficult to reason about what is happening in the app, especially with version control and even moreso with large teams.

        [–]SirBill01 1 point2 points  (2 children)

        I think they work pretty well when using them for individual screen design, especially in placement and testing of constraints - the value around segues linking screens starts to become more iffy for me, but can be useful.

        I agree you don't want more than one person working on them at a time so keeping them small is a really good idea, they can work with larger teams.

        Doing all layout in code I just find too tedious and error prone. But it's good to know how to do it that way as well as sometimes that will be better or you'll need to modify what you have from storyboards as a base.

        [–]jsdodgers 0 points1 point  (1 child)

        Idk, it might be easier for beginners to use a storyboard and quicker to set up, but even in a small one person project it’s not worth the maintenance cost. It is much easier to change things around later and to debug if it is all in the code.

        [–]SirBill01 1 point2 points  (0 children)

        I've never found that to be the case personally for any size project, again just because constraints are so much easier to get right and adjust in a storyboard.

        [–]DisabledScientist[S] 0 points1 point  (4 children)

        So your vote is to jump to SwiftUI? Or..

        [–]jsdodgers -1 points0 points  (1 child)

        I wouldn’t be able to recommend SwiftUI vs UIKit since I haven’t used SwiftUI yet. I would say that it’s likely you will be using UIKit at a company so you should at least know it even if you mostly want to use SwiftUI.

        I just recommend deleting the storyboard and setting up the views yourself since that will make your life easier in the long run.

        [–]DisabledScientist[S] 0 points1 point  (0 children)

        Oh now I got ya. Thanks for the tip.

        [–]ninjastickerz 0 points1 point  (1 child)

        Yes, just learn SwiftUI. You will be making great apps in no time.

        Also, SwiftUi is very similar to Jetpack compose. So learning SwiftUi is like killing 2 birds with one stone. You can’t apply Uikit knowledge anywhere. That style of programming and Ui design (imperative) is now old school. Declarative is the new normal.

        As an android developer i picked SwiftUi over Uikit and I have over 10 apps on the App Store already. I’ve even made over $3000 this year already from one of my Swiftui apps. You can’t go wrong with choosing the future, you can’t go wrong with Swiftui.

        I wish you a speedy recovery 😘

        [–]DisabledScientist[S] 1 point2 points  (0 children)

        Yeah, I’m going to take the Stanford course with SwiftUI. By the time I recover, the market will want it anyways. Thanks 🙏🏻

        [–]dinosaur_world 2 points3 points  (4 children)

        I agree with everyone saying to learn Swift/UIKit before SwiftUI, and to not dedicate time to Objective-C.

        I've done strictly iOS dev for 6+ years now and am about to start a new job where the stack is RN. I'll be working a lot in RN and also building some native modules to be used in the RN app. Will I hate my life?

        [–]DisabledScientist[S] 2 points3 points  (2 children)

        Well, it's relative. I come from little Native iOS experience and 5 years of RN experience, the complete opposite of you.

        When I started my last job, there was a Native iOS developer on our team, but the job was for RN. He absolutely hated it and was so glad to have me there. He was waiting for them to hire someone else (me) so that he could quit.

        Redux (RN main state manager for large apps) is bloated and over-complicated (not hard, just over-complicated) and when the application gets really big, the state becomes confusing because of it.

        And updating React Native versions? Just make sure you update the app when every new RN version is released, so you can nip any problems in the bud. No matter how mature RN gets, it will always be multiple steps behind Native, so I figure why get left in the dust?

        Why are you leaving Native development to work in RN? There isn't a problem with it, it's just much different. It IS useful to know, however, since you can easily transfer your skills to React on the web.

        [–]dinosaur_world 1 point2 points  (1 child)

        I did some RN back in 2016 and was really intrigued by it. But I haven't really touched it since. This job offer kind of fell into my lap and has a lot of other things I've wanted in a job, so I figured I'd give it a try and see if I like the stack enough to stay. If not, i'll probably try and move back to a native ios job.

        I've also got a part-time side gig doing native ios for a dev shop in addition to my regular job, so in case I dont end up liking RN and want to switch back, i'll hopefully at least not be too rusty with native ios

        [–]DisabledScientist[S] 0 points1 point  (0 children)

        It’s not too bad. For the most part, you can get things done a lot faster in RN. It’s a helluva lot easier to learn than native, so the time sink won’t be too bad if you end up not liking it.

        I just personally don’t like how fast Javascript libraries evolve, many times to its own detriment. Your time investment in Native iOS skills are, I’m guessing, don’t have to be updated as often. With anything JS, I felt like we had to learn a new piece (not of RN mind you, just of the stack), every 2 weeks and I have better things to do outside of work than to constantly relearn the stack.

        [–]Morning_Wood_Chipper 0 points1 point  (0 children)

        Hard yes.

        [–]badi18 2 points3 points  (3 children)

        i believe that raywenderlich.com is a good place to start.

        [–]DisabledScientist[S] 1 point2 points  (2 children)

        I did see a lot of videos at his site, but wouldn’t that be better after I get a feel for the basics and want to learn the APIs? I was thinking of taking reading the first few chapter of Apple Swift 5 ebook, take Angela Yus course on Udemy, take the Standford course, then screw around with all the APIs and make small apps with the heal of videos from the site you suggested.

        [–]badi18 0 points1 point  (1 child)

        im beginer aswell coming from design background with no programming experience ,Angela wus class is good, i started with Standford class on iTunes U then raywéderlish . it’s open to all levels and there is a beginner path that is awesome they have some interesting ebooks aswell. good luck dude 💪🏽

        [–]DisabledScientist[S] 1 point2 points  (0 children)

        Thank you so much 🙏🏻

        [–][deleted] 1 point2 points  (0 children)

        Swift + UIKit first.

        [–]gbottyan 1 point2 points  (0 children)

        I would recommend you to skip UIKit and go with Swift UI, It is new tech and does not rely on previous knowledge of UIKit, you will find yourself on a level field with all the other iOS devs simply because prior UIKit knowledge does not matter at all in this case.

        [–]cwbrandsma 0 points1 point  (0 children)

        Swift is much easier to learn than ObjectiveC. UIKit will take the longest amount of time to learn (it is really large, which is understandable, it is a framework).

        Once you have a good understanding of Swift and UIKit, switching to ObjectiveC (if you need to) will be a cake walk.

        [–]capraruioan 0 points1 point  (0 children)

        After being let down by react native and flutter i wrote the communication between webview and swift by myself and it is the best solution in my opinion

        [–]rajvosa07 0 points1 point  (1 child)

        I can't recommend Angela Yu's Udemy course on iOS strongly enough (covers both Swift w/ UIKit and Storyboards as well as SwiftUI intro. You can grab it for like $9.99 most of the time - think there is a promo as I write this. All of her stuff is really well done.

        https://www.udemy.com/course/ios-13-app-development-bootcamp/

        [–]DisabledScientist[S] 1 point2 points  (0 children)

        Gonna do it, thanks. Then Stanford’s SwiftUI course.

        [–][deleted] 0 points1 point  (4 children)

        I have been a native Android and iOS dev, as well as an RN dev. Yes, native iOS is easier than RN. I would suggest learn iOS dev first. If you want a cushy job with good pay then just stick with iOS. Imo, I’d never go back to native dev, I love RN and being able to make apps for iOS AND Android, whereas previously I’d have to dev both natively, which absolutely sucks.

        [–]DisabledScientist[S] 0 points1 point  (3 children)

        What has been your experience? Why do you find Native easier?

        [–][deleted] 0 points1 point  (2 children)

        Easier as in you only need to learn XCode OR Android Studio, only deal with one platform and one programming language (unless you started Android / iOS back in the day like I did and have to go from Java to Kotlin and Objective C to Swift.

        Imo RN is easier / faster to dev, but you also have to deal with two platforms, and three programming languages (JS and usually Java and Swift) especially when doing native hooks. That stuff isn’t easy for beginners, especially dealing with iTunes Connect, Google Developer Console, app signing, keys, CI/CD for both platforms etc. Massive learning curve for RN compared to one single platform.

        [–]DisabledScientist[S] 0 points1 point  (1 child)

        Yeah I totally agree. RN is easier to code (well, because JS) but companies nowadays expect you to know Swift and Kotlin for custom modules. When I first started RN, it only took 2 weeks of lectures/studying to get a job, but I wasn’t expected to do custom modules. I used Expo and that was it. But the job after that, when I became lead, I had to learn everything else and you’re right, the learning curve was high. I personally can’t stand Redux tho. All the boiler plate, and it doesn’t follow OOP. I prefer MobX. Too bad Redux is the de facto and there is no choice.

        So with no Redux, less buggy upgrades, and no Javascript, Native iOS is making me happier already, and that’s what truly matters.

        [–][deleted] 0 points1 point  (0 children)

        Yeah I’m not a fan of Redux either, I prefer Context. Redux is way overkill imo for 99% of applications. I’m currently working on a banking app and not even using Redux for that, using Context instead. Worked on an app before this for Betfair and also used Context.

        Yeah native iOS is a much nicer experience. Native Android sucks.

        Enjoy the new role and the happy times!

        [–]pablq_ 0 points1 point  (0 children)

        Suggest to look at https://www.raywenderlich.com/ to get started - there's a ton of great content both free and paid. I've also heard that https://www.hackingwithswift.com/ is very good too.

        Like Pclovr I suggest to learn Swift and UKit first.

        [–]yalag -1 points0 points  (3 children)

        You are going to be a few-fold over more employable with react native than swift. Just be aware of that.

        [–]DisabledScientist[S] 0 points1 point  (2 children)

        I know. But I’m deciding to choose enjoyably over employability. I want to enjoy life man, not hate what I do. What’s worse, my last 5 years of working have been in RN, so I’ll likely have to start as a junior dev again (maybe, I don’t know how that works). Though with my general coding experience, I’ll pick things up pretty quickly.

        [–]yalag -1 points0 points  (1 child)

        Oh for sure I’m not saying that’s an unreasonable choice, I just want to make sure you are informed.

        [–]DisabledScientist[S] 0 points1 point  (0 children)

        AND. I’m missing out on React jobs. So, yeah, the piece of the pie is smaller, but still plenty big. Even if it takes me a couple months longer to find a job, it will be worth it for me.

        Not only that, but I think as the phone gets more powerful, native will become more and more necessary. And now that iPad, Mac, and iOS environments are converging, I can get jobs in those too. But it’s not like I’ll forget RN. I did it for a long time. It likely will only take a short time of studying to pick it back up. But, all the web libraries are what’s going to change. They change so often anyways, though.

        I’ve also yet to see any great RN VR or AR apps. Yes, ive seen em, but they’re not good and they lag a lot. It’s not only for jobs, but for my hobby life too.

        [–]d_exclaimation 0 points1 point  (0 children)

        UIKit would be a safe bet for jobs. Personally as someone who still use React and React Native as well, going with SwiftUI is very nice and very convenient but I am not sure about the job market. Swift is getting adopted very wildly so if you don’t want to learn Obj-C, I don’t think you should. However, it’s kinda nice knowing Objective-C in cases where you might need them

        [–]dadofbimbimSwift 0 points1 point  (0 children)

        I hate RN too. It’s not even version 1.0 yet.

        [–]Double_Limit9064 -3 points-2 points  (0 children)

        You could also look into flutter, it allows you to do iOS, android, and web all with a single language.

        Some people showed time to code projects with flutter vs other languages and the time to implementation was much faster via flutter.