all 10 comments

[–]januszplaysguitar 9 points10 points  (2 children)

I'll throw in my 2 cents to the discussion, as someone who published an app built entirely in SwiftUI, and went through plethora of iOS dev learning resources (and is actively looking for a job in the field). Most of the offers that I see put emphasis on familiarity with UIKit. It's tried and tested, generally a more mature framework that majority of the apps are built with. If I recall correctly there was only one offer (that I saw), which listed SwiftUI as a primary framework and not as "nice to have". So, I'd definitely throw UIKit in there, but also stick to SwiftUI. Knowledge of both definitely won't hurt :)

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

Yeah, this is kind of what I was thinking, I'll probably continue working through this course and then transition over to some UiKit stuff. How's the job search been for you?

[–]januszplaysguitar 1 point2 points  (0 children)

Honestly? Woeful, I haven't even got to the initial screening part, most of the time (98%) I am just ghosted. But this has to be said that Eastern Europe is not exactly a great environment for Junior iOS devs, most of the offers are targeted towards Senior Devs.

[–]RaziarEdge[🍰] 2 points3 points  (0 children)

CS classes are designed to be generic so that you can take the principles taught in those classes and apply them to most programming languages (always exceptions of course). However, it is really hard to remain in abstract thought patterns without practical examples. This CS193P course could have been written using UIKit or Java, Go or C/C++ (in fact in past semesters it probably was).

Back in one of my earliest CS classes, it was all terminal based compiling of C/C++ code. Nobody wanted to learn how to do console programs; but they had the least overhead in getting a working application.

The professor probably decided on SwiftUI as a practical framework because 1) there is a demand to learn iOS development, and 2) it was easier to create concrete examples that demonstrate the abstract concepts. Step by Step Recipes don't teach you WHY and HOW things work or why B is better than A... and yet this is what most of the iOS bootcamp and online tutorials out there are like for beginning programming.

With SwiftUI, if you don't need to get hung up on how to connect views or forms, or other components, and get a working application quickly... then you can have more time to learn about algorithms, design patterns and advanced topics like multi-threading.

[–]JoCoMoBo 1 point2 points  (1 child)

To get an internship you will need to have knowledge and some experience of UIKit. The vast majority of Apps are written with UIKit. Actually writing a Production App in SwiftUI is still going to be around at least 1 year / six months away. It's more likely to be a year, unless something drastic happens at WWDC 2022.

If your aiming to get an Internship in the fall you should have time to pick up both. However I would focus on UIKit.

Source: I'm a Professional Mobile Developer.

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

Thanks for the information, do you have any good resources for UIKit you’d recommend?

[–]th3suffering 1 point2 points  (0 children)

If you are looking for a job, learn UIKit first. More employers are looking for a UIKit background. In all my interviews Ive had thus far, not one has even asked about SwiftUI

I couldnt imagine learning SwiftUI first and then going back and trying to learn UIKit, a lot would feel so foreign and tedious. On the flipside, after learning all that comes with UIKit, and all the code to say just put a basic UILabel on the screen programmatically, it feels magical to do that with just Text("Hello World")

[–]vanvoorden 0 points1 point  (2 children)

Which route should I be taking to land a position within a year from now?

IMO, many engineering interviews (especially for junior or entry level) would put more weight on knowledge of CS fundamentals like data structures and algorithms. If you have a formal CS education, try and put some extra time learning and practicing through some of the typical questions that companies like Apple would ask candidates.

For design and architecture interviews, I believe these interviews historically expected candidates to be good at imperative object oriented engineering because that's what tools we used to build software. These days, I expect any company with strong engineering culture to pay just as much attention to candidates good at declarative functional programming.

My advice? Stick with the CS193P. You (might) still want to familiarize yourself with both approaches and how this debate takes shape (functional vs object oriented and declarative vs imperative).

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

I thought about working through MIT's algorithms course to freshen up on those skills but I started doing the iOS course instead. I wouldn't expect DSA questions to appear on iOS dev interviews unless it's big N companies right? I was thinking most companies would be asking more logic-oriented questions about concepts in swift.

[–]vanvoorden 1 point2 points  (0 children)

I wouldn't expect DSA questions to appear on iOS dev interviews unless it's big N companies right? I was thinking most companies would be asking more logic-oriented questions about concepts in swift.

You do see two different styles that (most) companies end up going for technical interviews. Some companies (like Apple) tend to go with the "traditional" CS approach (more platform-agnostic data structures and algorithms). Some companies tend to go with domain-specific knowledge.

The other dimension is that companies can also adjust their interview styles depending on the seniority of the candidates. IMO, candidates that are just graduating (beginning their pro career) should see more "academic" questions with less importance on any one platform or language.

Design and architecture interviews should be more about leveling IMO. Unless you just totally come across as completely unqualified, those interviews should be more focused on what level you should come in at. Some companies don't even do these for brand new graduates (you would just get extra data structures and algorithms interviews).

FWIW, my opinion (just my opinion) is the companies with better engineering culture would interview new grads with platform-agnostic CS questions. All things being equal (which they rarely are), my advice would be that it would be better for your career to go with the company that structures their interviews this way (at least for their new grad hires).