Recorded – watch the full episode on YouTube.
What's your advice for helping Swift developers to get their first entry-level programming role?
John Sundell: So, whenever you're doing something new that you don't have any form of record of doing, right, like when you've been an iOS developer for a while, or if you've been a writer, or a lawyer, or whatever profession it is for a while, then you have a history of doing it, which makes it easier to get a new job. So it's that kind of catch-22 situation. You want to get the experience, and you need the experience to get a job, but how can you get the experience without getting the job first, right? It's kind of a tricky situation.
"You really need to find other ways to prove your skills, whether that is hobby projects that you've been building yourself, whether it's courses you've been taking, whether it's things you might've done with your friends"
So I think in this kind of situation, you really need to find other ways to prove your skills, whether that is hobby projects that you've been building yourself, whether it's courses you've been taking, whether it's things you might've done with your friends, or something like this, or just general interest in your field.
But I think it's very important to emphasize that the thing that you're trying to do in the beginning, like getting your very first job in whatever kind of field it is, it's always going to be the most difficult. And it's the same thing when you're moving. Like for example, I've been an iOS developer, I've been doing Mac development. Now I'm writing, podcasting, and still doing app development, but let's say I wanted to go into machine learning or something. I would have to prove myself again. I can't just walk over to a machine learning job and say, “well, I've got a lot of experience doing iOS development. You should just hire me,” right? I would, again, need to prove I've been doing machine learning in my spare time. I've been doing this and this hobby project. So I think it's always important to have that mindset and to, if you're interested in something, and if you want to get a job in that field to, as early as possible, to start building up that kind of resume material, whatever it might be.
"I think the thing that always speaks the loudest is always real projects"
Paul Hudson: So some sort of markers you can say, at this point, this time, this happened. It went on GitHub, it went to the App Store, or something, a clear milestone. You can say, here's a record of my accomplishments over time.
John Sundell: Exactly. You want something to back up your arguments, right? Because obviously being passionate, and being a nice person, and advocating for yourself, and being able to sell yourself, as it's called, right? To be able to pitch your skills and to convince someone that you're the right person for the job. That's important too, but that only takes you so far.
You also need to be able to back that up with real, tangible things, whether that is projects or courses or whatever it might be. But I think overall, whatever it might be that you're trying to do, whether it's iOS development, or web development, or whatever, I think the thing that always speaks the loudest is always real projects.
And again, it doesn't mean that you crave this super hugely successful, commercial project, that's not what I'm talking about here. I'm talking about things that people can see, and use, and check out, whether that is an open-source project, whether it's an app on the App Store, whether it's just something you threw together just as a prototype or something, it doesn't really matter. It's just something that they can look at, that shows that you know what you're talking about.
Paul Hudson: And it's a chance for folks to prove their chops, not only in, “I’ve read the tutorial,” but “I’ve applied what I learned to this thing.” And I always tell folks, you can go ahead and build a very fancy app if you want to, but often just showing you've mastered the fundamentals, “I know what navigation controllers look like. I know what table view controllers work like.”
“A lot of the tests that a lot of companies will throw at you, whether that is live coding tests, or take home projects, or quizzes, and stuff like that, they are all based on things that you will memorize and learn as you go, and as you do things repeatedly.”
Getting those fundamental UIKit controls looking and working great in an app with tests, with documentation, whatever, it shows you've mastered these fundamentals in practice. You've heard the theory, and applied it. And if you want to go on and do fancy pants special effects, you can do. But so much of our job really is, get this table view faster. Get this navigation thing looking nicer, do this animation better. It's sticking to the basics and really honing, and showing those.
John Sundell: Exactly. And also, when you're talking about getting a job, and going for interviews, and things like that, a lot of the tests that a lot of companies will throw at you, whether that is live coding tests, or take home projects, or quizzes, and stuff like that, they are all based on things that you will memorize and learn as you go, and as you do things repeatedly.
And you know, you can have your own opinion about whether that is the right way to hire or not, but the fact is that a lot of companies out there are going to throw some of those challenges at you, especially if you're a beginner and you don't really have those years of experience to back things up. Repeatedly doing simpler projects, like you say, like implementing table views and doing the fundamentals, can really help you just solidify that knowledge, and solidify the answers to those questions that you might be asked.
Paul Hudson: Well you mentioned memorization, and this is a topic that people ask a lot about, because they imagine that senior developers have somehow crammed all of Apple's documentation into our heads.
John Sundell: Right, just uploaded, just connect the plug, right?
Paul Hudson: Half my brain is “No Overview Available”, right now. Surely we memorize some things, memorize techniques or some algorithms perhaps, but it's just too big to memorize all of it, or even vast swathes of it.
"They're more looking for if you know the practices, you know the conventions."
John Sundell: That's correct. And, I think when we're talking about memorization, I'm not so much talking about like, remember exactly, be able to type out all of UITableView
or all of SwiftUI letter by letter, all of the APIs. That's not really what I'm talking about here, and I don't think that's typically what companies look for either.
They're more looking for if you know the practices, you know the conventions. Like when someone asks you, "can you implement a table view with a delegate and a data source?" You know what that means. Or, "can you build this particular view?" Or use MVVM, or whatever pattern they might be looking for, those are the kind of skills and the kind of memorization I'm referring to here, and I that's the important thing to practice. Not necessarily knowing all of strings, all APIs, by heart.
Paul Hudson: I remember seeing Javier Soto saying that when he does interviews, he does string-based interviews, and folks will often solve them in Python rather than Swift, because when you're nervous already, you're sitting there, you want to get this job, you've practiced very hard for it, you're a bit jittery, and then they say, "Hey! Do this strings thing." You're like, "Oh, okay. Python." It's easier to sort of guess your way through, sometimes.
And it's certainly the case that in code, have lots of ways of reusing code. We can think about protocols, or generics, whatever. And they've got these ideas for reusing code, and we also have these ways of reusing ideas, we call them design patterns. We would say, “hey, I want to use the template pattern here.” Or, “I want to use protocols,” or delegation, like you said, and everyone goes, “aha! Yeah, I know what that means.” And we can then apply that specifically to here. So you know the concepts, we don't know necessarily know the exact details, if that makes more sense.
This transcript was recorded as part of Swiftly Speaking. You can watch the full original episode on YouTube, or subscribe to the audio version on Apple Podcasts.
SPONSORED Debug 10x faster with Proxyman. Your ultimate tool to capture HTTPs requests/ responses, natively built for iPhone and macOS. You’d be surprised how much you can learn about any system by watching what it does over the network.
Sponsor Hacking with Swift and reach the world's largest Swift community!
Link copied to your pasteboard.