• A Complete Guide to Getting Hired as an iOS Developer in 2018
  • Originally written by Rob Caraway
  • The Nuggets translation Project
  • Permanent link to this article: github.com/xitu/gold-m…
  • Translator: melon8
  • Proofread by: Park-Ma

Or how to avoid wasting 2,000 hours of your life

I was turned down for a job that took three and a half months of my life.

I did all the preparation. Everything in that company is everything to me. I can tell you almost everything that the founder of that company posted online.

I was probably very naive.

Imagine I wrote a long blog post full of actual code and examples of how to improve their application. Because that’s what I did.

Despite all my efforts, I had to shout that it was impossible to get the job. I didn’t want to believe it, but it took a little comfort to say it.

After a few months, I finally caught their attention. I had a nice phone conversation with their CTO, and they asked me to do a programming challenge.

It took me a week to get it perfect, and their team said they were impressed with my code. My confidence soared and I felt safe.

Then I took their pair programming test.

Two days later, I received a rejection email. They told me I wasn’t a good fit. More than 2,000 hours of study for an hour’s lesson.

I collapsed on the sofa. They are right. I didn’t really fit their needs — it just took me a few months to convince myself THAT I did.

In retrospect, it’s easy to see how absurd and dangerous my actions were. I guess I was so afraid of rejection that I wanted to do everything I could to reduce it.

Perhaps most of us need to deal with the negative energy of blasting out our resumes to every possible company and getting no response.

After the terrible rejection, I came to my senses (as if I had no choice). I reworked a realistic strategy and was eventually hired as an iOS developer by a company that I thought was a good fit.

This guide aims to achieve:

The strategies I’ve outlined don’t require a prior network and are for iOS developers looking to land a full-time job. While you don’t need to know anyone, it helps to know how to communicate and market yourself.

You need to do a lot of work — this means any or all of the following:

  • An application that you publish that can be downloaded
  • Open source projects you started or participated in
  • The content you create as a thought leader in the field
  • Or other relevant work experience

If you don’t have anything to sell, I can’t help you.

By the end of this guide, you’ll know what it takes to land an iOS development job at a company that makes consumer-facing apps in 2018.

About my background

I’ve been developing apps since iOS4. I don’t have a college degree. I’ve never held a full-time job, never worked in an “agile” development environment or on a large team.

Many companies turned me down because I didn’t have large team work experience and my resume didn’t have a college degree.

But I didn’t leave empty-handed. My own app has been downloaded a million times. I co-founded a (low cost) startup and worked as a freelancer with some cool clients. I have good public projects to showcase my skills.

I found work in a major tech market (Austin, Texas) and also got some remote work opportunities. I was hired for a senior position. I think my experience can be helpful to beginner and intermediate programmers as well.

Before we jump into the heavy stuff:

My first rule for finally getting hired was: Write everything down!

Taking notes on the company, keeping track of which resumes and cover letters are useful, and taking notes after every interview will help you get better and faster.

Nail your iOS resume

You don’t want to reinvent the wheel, so if you have the time, read this guide to writing a developer’s resume.

If you don’t have time:

A slightly modified version of the resume I once applied for:

Your resume should be simple and easy to read. List your accomplishments in an easy-to-read format and prioritize the things that make you look your best.

Your resume should include:

  • Educational background (e.g. degree or major course)
  • Work experience
  • Open Source project (link provided)
  • Your personal application (link if possible)
  • Most Relevant technical skills (keep it to a minimum)
  • Other notable things (clubs you join, developer meet-and-greets you host, hackathons you win)

Don’t mention whether you are a senior or junior developer. Let your resume speak for itself.

Maintain several versions of your resume. Each version should try to tailor the details to the personality of the company.

It’s not about lying, it’s about selling yourself on what’s most important to different companies.

Other ways to get ahead

Create a great personal website.

Your website can say things your resume can’t. Check out my personal website. When I walked into InMotion Software’s office, they opened the About Me page of my personal website. A few days later they gave me an offer.

This is another great example of a personal website. Keep your site clean and articulate exactly what you do in a way your potential employer wants to see.

If you have to lie, you may be trying to secure a position that isn’t a good fit for you. it doesn’t matter Adjust your expectations and reprepare.

If web development isn’t your thing, stick with Squarespace or WordPress.

If you know web development, build your own website. I used Node.js and Hexo. This shows that I’m happy to jump into other areas of code if I need to, and it won’t hurt the employer.

Build a strong LinkedIn page.

If you think LinkedIn is “lame,” you’re at a disadvantage to yourself. I got some job offers through LinkedIn.

As of mid-2018

Check out my LinkedIn page. You don’t have to be an expert on LinkedIn: I only really started looking into it last year.

Keep up to date and have a nice picture of yourself. I took a selfie that I was happy with. Use the photo editing app and modify the image. Practice can make you take better photos.

Add specific keywords to your profile to help you appear under certain search terms you expect.

Imagine if you lived in an area that wasn’t as competitive as Austin, and you might soon stand out.

Apply for jobs in a smart way

Here are some good ways to get an iOS development job:

  • View jobs on Angel.co (search for jobs at your workplace and “support remote work”)
  • Google “iOS Developer jobs [Preferred city]”. Google, Glassdoor, ZipRecruiter, and Indeed pop up relevant results.
  • Google “Remote iOS Development”
  • Check out your Stack Overflow section and create a nice personal page
  • Making up
  • Search for iOS developer positions on LinkedIn
  • Participate in related technical activities

One last good place — usually the city has a local technology website. Austin has BuiltInAustin. In fact, that’s how I got my job at my current company.

Keywords to use in your search: Mobile, apps, iOS, Swift, Developer, Engineer, Programmer, Remote, Architect, iPhone

Keep your to-do list in your favorite docs app (I use Apple Memos).

Write about their websites, their apps, their Glassdoor reviews, and anything else you like (or dislike) about each company.

Find a rate of application that you feel is sustainable. You need enough time to do some basic preparatory work.

I find that applying to two or three companies a week works best for me, but if you already have a full-time job, you might apply every two weeks or less — and if you stick to it, that’s fine.

Think about what makes you excited about each company. You may not be passionate about their products, but you like their company’s technology, culture, what you might learn, or the people they help.

Write a cover letter

After doing your research, you’ll probably notice something you like about the company. Maybe they specifically mentioned something in the job AD that resonated with you.

Use these to express why you’re a great fit and what kind of feedback you want from them.

Relax a little. No interviewer wants to listen to mind-numbing corporate jargon and 500-word meaningless monologues.

Pick out the positive things you mentioned in your notes about the company, and suggest one or two things that stand out to you. Simply say in your own words why you think you are qualified.

Here’s a cover letter I used that got me a phone interview:

Notice that it even has a typo 😂 (although I don’t recommend doing this)

Notice how I described my lack of team experience as something I was anxious to get over (which is true).

Like your resume, keep track of several versions of cover letters you’ve used, noting what works and what doesn’t work on a spreadsheet.

Prepare for programming challenges

A programming challenge is a small exercise that tests your knowledge and coding skills and you can do it on your own time (usually on a loose deadline).

Programming challenges typically consist of one or two view controllers and use one or two related technologies (such as networking and Core Data).

I’m not going to get into the specifics of all the companies, but I think even the ones I’m applying to would appreciate having more candidates prepared and knowledgeable about what they want them to know.

Without getting too specific, here are some of the key things I did during several programming challenges I encountered:

  • AutoLayout and Autoresizing views
  • Resize Text to fit different screens
  • Network requests are made using the basic API
  • Use TableViews and CollectionViews
  • Persist Data with Core Data, UserDefaults, or archives
  • Know how to use StoryBoards and be prepared to write views and controllers in pure code
  • Size classing
  • Load images asynchronously and display them on the main thread
  • Add infinite scrolling to a TableView or Collection View
  • Modularize your code. Don’t stuff everything into your view controller. Learn how to build immutable models and service layer objects.

These things can come up in an interview, too.

You can’t write perfect code. This is acceptable:

When you write code, if you know the code isn’t perfect, you can use //TODO or //FIXME to explain how you would improve it to show the team the trade-offs you know you have to make.

Others will also look at your ability to make products that people will love. If you know how to make it super fast, smooth, and beautiful, even if they don’t ask for it (and if you have the time, too), do it unless they explicitly say they don’t need to.

How to handle pair programming challenges

Not every company does this, but it’s worth noting.

For pair programming, you may be working on code you created in a coding challenge, or on tasks similar to the type of code your company wants you to write.

Unfortunately, you can’t really “fake” this part. You have to trust your instincts, because you can’t immediately change your behavior in front of people you don’t know.

Don’t be nervous. Have fun on the task. If things don’t go well for you afterwards, make a note of things you could have done better.

If you want to practice, sit next to your friend and do some projects together. The more, the better.

Get the interview

You need to be prepared to talk about:

  • Big O. Example of time complexity in Swift/ obJ-C
  • The data structure
  • Create a LinkedList with Swift (just in case)
  • Struct vs. Swift classes
  • Understand how Swift Standard Library data structures work (basic level)
  • MVC, MVVM
  • The code you wrote in a programming challenge or:
  • Code you might write to solve a problem similar to the one facing a company
  • How do your interests and goals align with the company’s goals
  • Questions like “Where do you see your career in five years?” are likely to arise

Getting interested in a company is often a case of “fake it till you make it.” The more you research and figure out ways to make a meaningful contribution to the company, the more your interests will “magically” align with theirs.

Don’t push yourself too hard, though — companies with bad Glassdoor reviews and sporadic assignments are almost always pits you need to avoid.

What I’ve noticed (though it’s not the absolute rule) : The bigger the company, the more academic the interview. Be prepared for the pitfalls of questions from big companies.

Small companies usually have less form because they don’t need it.

Other important preparation methods:

  • Read the Advanced Swift
  • Take the SWIFT online quiz in your spare time
  • Read Cracking the Coding Interview, especially the section on data structure and time complexity.

Final thoughts

Find a balance between wanting a job and not caring at all about the job you get.

If you stick to the process above, you’ll be better off — the resume I was offered looked completely different from the one I sent out when I started my job search. I’ve learned to approach interviews with a more relaxed attitude.

Let the process give you wings. You get better every time you get rejected, so reward yourself for your progress rather than just caring if you get the job.

Finally, if you live in the Austin area: InMotion Software is hiring! 🙂 I enjoy working with them.

Learn how to make amazing apps and so on

If you take something away from this article, Rob Caraway has written a detailed guide to app development, starting a business, and building a great developer career. It was his idea to register here and be notified.


Where did this article come from

This article was published in Noteworthy, and thousands of people come here every day to learn about the people and ideas that shape the products we love.

Follow our publication for more product and design stories, courtesy of the Journal team.

If you find any mistakes in your translation or other areas that need to be improved, you are welcome to the Nuggets Translation Program to revise and PR your translation, and you can also get the corresponding reward points. The permanent link to this article at the beginning of this article is the MarkDown link to this article on GitHub.


The Nuggets Translation Project is a community that translates quality Internet technical articles from English sharing articles on nuggets. The content covers Android, iOS, front-end, back-end, blockchain, products, design, artificial intelligence and other fields. If you want to see more high-quality translation, please continue to pay attention to the Translation plan of Digging Gold, the official Weibo, Zhihu column.