Learning w/ Swift

How I Landed My First iOS Job

About a year ago I started learning swift with absolutely zero prior programming experience, and recently landed my first job.

I wanted to give back to this community and share my experience — what worked for me, and what didn’t. Feel free to ask my anything or share your own insights.

Getting Started with iOS

Paul Hudson has an excellent tutorial series called 100 Days of SwiftUI that starts at the absolute beginning. There are many, many swift tutorials out there, but coming from a non-techical background, getting the programming basics down before diving into swift proper was invaluable for me.

As the title of the series states, the course is 100 days long — or at least thats what the marketing says. As much as I wanted to keep up with the pace of the course, I often found myself taking multiple days to complete many of the lessons because I wanted to make sure I really understood it, which to me meant writing and rewriting the code examples until I felt like I had truly mastered the subject matter.

For example, I would take the lesson taught that day into a playground and try to recreate my own version of it that is slightly different from the tutorial. This gave me the opportunity to try new things, hit the inevitable wall, and have a great tutorial to fall back on when I got stuck so I could try and figure out what I did wrong.

Getting things right felt good, but I would also try to intentionally break my code to try and figure out for myself how things work.

It was frustrating taking such a slow approach, especially as I started to fall behind on the days, but pushing forward before I was ready would have been the wrong move for me. My recommendation is to really take your time and only move on when you feel you have a solid grasp on the lesson.

In the end I only got about 2/3 of the way through the course before I had enough of the building blocks to start writing my first app.

Building a portfolio

Tutorials can be great for learning, but at some point you have to put what you learned to use by getting out of your comfort zone and writing your own projects.

I’m not going to say its impossible to get a job without your own app, but any potential employer is likely to want some kind of proof that you know how to do the job, and in lieu of professional experience, the next best thing is probably an app on the app store.

I knew personally that I wouldn’t feel ready to take on my first role until I had published my first app. I wanted the experience of creating an app from beginning to end, something to talk to potential employers about, and of course something to put on my resume.

I chose something that touched on many of the essential features of most apps — fetching an api response, memory management, and a nice looking ui.

Your app doesn’t need to be sophisticated, nor does it need a ton of features, but it should be as polished as you can possible make it, which ideally means clean code and a polished presentation on the app store.

Avoid including code in your app that you didn’t write yourself, or at least understand to some degree how it works. There’s nothing wrong with using solutions you found online for problems you’re experiencing in your app, but at some point your cheating yourself out of invaluable experience if you rely on others solutions too often.

Applying for jobs

Learning and publishing my own app was essential for getting started, but then came time to apply which I found particularly soul crushing.

I loved doing the actual work, but sending out countless resumes and getting no bites was honestly the worst part of the process for me. I started out just applying to everything I could, but after a few weeks of sending resumes all day and getting no traction I decided I needed to strike a better balance and continued my learning while I was still applying.

I had limited control over the hiring process, but I could make myself a better applicant.

I continued for about a month with not even as much as a preliminary interview, which is when I decided to start working on my second app — and with it came additional experience and another thing to put on my resume.

I told myself that this process may ending taking a while, which gave me the mental space to take my time and not take the countless L’s personally.

Interviewing

I wish I had more to offer here but I only had one interview before getting offered a role.

There’s a lot of advice floating around to practice technical interview questions, which I’m not going to say is bad advice, but all my employer wanted to talk about was my second app. I got the feeling that they just wanted evidence that I wrote the code myself, understood what it did, and was enthusiastic about the work.

Publishing my code to a public repo and linking to it in my resume gave them an opportunity to ask me about some of the choices I made when writing that app, which I was more than happy to talk about.

They did quiz me on how I would solve basic problems, or how I would approach learning new techniques, but I did my best to be honest and speak from my admittedly limited experience, which I think is all they were really interested in.

Most employers hiring a junior won’t expect you to have all the answers, they just want to get a preview of what it’ll be like to work with you — so above all else, be friendly, professional and honest about what you do and don’t know. Attitude goes a long way.

Summary

A few more random insights from my experience:

In the end there are no real shortcuts, take your time, do it the right way and make sure you’re pursuing this career for the right reasons.

There are predatory companies out there trying to take advantage of entry level applicants. Do your due diligence before giving any company the time of day and if a job posting seems too good to be true it probably is.

Before applying to any jobs — create a brand new email and phone number (google voice) so you don’t absolutely destroy your personal inbox / phone number. Once you start putting your information out there you will get endless spam messages about jobs that aren’t relevant to you.

Some common advice that I did not do:

  • Contribute to open source projects / stackoverflow
  • Post to twitter or any other social media site
  • Coding bootcamp
  • Internship
  • Upwork

Some things that I did, but didn’t end up helping me directly:

  • Networking/posting to Linkedin
  • Reaching out to my contacts about potential openings at their company
  • Reaching out to recruiters

I did end up joining a iOS group in my city, which didn’t give me any job opportunities but being a part of a community is excellent for encouragement and soliciting advice.

I hope this helps someone who was in my shoes a few months ago — its not an easy process but I love the work and am so happy I decided to make the switch.